搜索
bottom↓
回复: 19

大家好,有在STM32,GD32 实现 BOOT自身的升级吗

[复制链接]

出0入0汤圆

发表于 2022-9-13 16:22:47 | 显示全部楼层 |阅读模式
现在有一个用GD32 M4项目,想要做成BOOT也可以升级的方式,目前想了一个方案就是 做两级BOOT,
一级BOOT负责加载二级BOOT,以及校验BOOT的合法性,若BOOT不合法则从备份区加载BOOT来进行烧录,烧录后再启动二级BOOT,二级BOOT启动负责引导APP ,APP中升级二级BOOT的时候先要烧录到备份区(备份区放在FLASH 尾部),升级APP 就跳转二级BOOT,不知道这样做是否可行,之前都是一级BOOT,没有这么玩过

出0入1209汤圆

发表于 2022-9-13 16:28:36 | 显示全部楼层
通常有boot升级的需求,那么一级boot也会需要升级的。你这个方案明显一级boot不可升级。所以不用费那么大劲,直接APP里升级boot就好了,无非就是担心升级时意外断电设备变砖的情况嘛,小概率事件,大不了回厂解决。

出100入312汤圆

发表于 2022-9-13 16:36:42 | 显示全部楼层
有的mcu,比如瑞萨,是支持配置上电启动的flash的地址。st和gd的mcu,上电启动都是flash的起始地址开始,所以可以参考二楼。

出0入0汤圆

 楼主| 发表于 2022-9-13 16:46:10 | 显示全部楼层
是这样的,一级BOOT的功能出厂后不再修改,但是二级BOOT 有可能设备换了新的部件要做一些匹配,比如设备的屏幕换了,那么驱动也要换,如果不换驱动,升级APP的时候会黑屏

出0入54汤圆

发表于 2022-9-13 17:18:28 | 显示全部楼层
一级引导二级 二级引导三级当然可以,FLASH够大怎么弄都行!
我们一般是boot不能升级,但是最近接手的项目里就有个BootUpgrade的线程,就是楼主说的这种事情,他们原来使用的就是BOOT刷APP,这次是APP刷BOOT。

出0入17汤圆

发表于 2022-9-13 17:31:33 | 显示全部楼层
可以选带双bank的mcu,互相升级。

出0入54汤圆

发表于 2022-9-14 17:07:02 | 显示全部楼层
楼主搞复杂了,boot1 就是boot  boot2 完全可以作为app的初始化部分啊

出0入0汤圆

发表于 2022-9-14 17:18:24 | 显示全部楼层
我们都只做一个USB HID BOOTLOADER, 然后就APP了。

出0入42汤圆

发表于 2022-9-14 17:23:51 | 显示全部楼层
akey3000 发表于 2022-9-13 16:36
有的mcu,比如瑞萨,是支持配置上电启动的flash的地址。st和gd的mcu,上电启动都是flash的起始地址开始,所 ...
(引用自3楼)

一些型号我记得有这个的, 支持双bank

出0入42汤圆

发表于 2022-9-14 17:25:06 | 显示全部楼层
升级之前先从app干掉boot, 然后重启, boot干掉app.
你问我app干掉boot的时候中断了咋办? 凉拌, 除非双boot,双app

出0入31汤圆

发表于 2022-9-15 07:53:37 来自手机 | 显示全部楼层
boot升级自己呗,做好一点,变砖的风险可控

出50入255汤圆

发表于 2022-9-19 15:18:15 | 显示全部楼层
boot 可以在ram 里面运行. 不过确实有小概率事件.
就看这个小概率事件的维护费用和开发费用的对比权衡了.

出0入0汤圆

发表于 2022-9-20 21:13:26 | 显示全部楼层
本帖最后由 pt2go 于 2022-9-20 21:37 编辑

可以让boot在ram里面运行的..............不过确实有小概率事件 ,升级boot存储空间的时候断电.........



另外注意一下,代码里面用到中断,需要重定向中断向量表的起始地址到0x20000000

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2022-9-26 11:53:45 | 显示全部楼层
pt2go 发表于 2022-9-20 21:13
可以让boot在ram里面运行的..............不过确实有小概率事件 ,升级boot存储空间的时候断电.... ...
(引用自13楼)

这个是把所有代码都复制到RAM里面执行吗?

出0入0汤圆

发表于 2022-9-26 13:12:01 来自手机 | 显示全部楼层
直接给客户用烧录器烧,外行看起来还显得专业。。。

出15入178汤圆

发表于 2022-9-28 10:50:24 | 显示全部楼层
做过相同功能,但产品运行中,升级Bootloader没用到过。

出0入0汤圆

发表于 2022-9-29 22:35:10 | 显示全部楼层
dso_2012 发表于 2022-9-26 11:53
这个是把所有代码都复制到RAM里面执行吗?
(引用自14楼)

是的,连编译的时候code空间都是在ram地址的

出0入0汤圆

发表于 2022-9-30 09:32:55 | 显示全部楼层
dso_2012 发表于 2022-9-13 16:46
是这样的,一级BOOT的功能出厂后不再修改,但是二级BOOT 有可能设备换了新的部件要做一些匹配,比如设备的 ...
(引用自4楼)

一般都是生产的时候换部件吧,在客户手里还需要换部件?

在生产不是好解决吗?不同的物料烧录不同的boot就行了。

出0入0汤圆

 楼主| 发表于 2022-10-14 14:20:37 | 显示全部楼层
pt2go 发表于 2022-9-29 22:35
是的,连编译的时候code空间都是在ram地址的
(引用自17楼)

如果将FLASH 擦除烧录的函数放到RAM里面,其它代码还是在FLASH里面,可以实现自己对自己升级吗

出0入0汤圆

 楼主| 发表于 2022-10-14 17:25:00 | 显示全部楼层
pt2go 发表于 2022-9-29 22:35
是的,连编译的时候code空间都是在ram地址的
(引用自17楼)

这个用IAR 怎么操作啊
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 12:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表