双备份bootloader程序更新

2019-12-13 18:31发布

大家有没有做过这种bootloader,
如果刷写过程中失败,则自动切换到上一次正常的App。
目前的思路是Flash分为3部分:Bootloader + App1 + App2

目前的难点是App1和App2里面的程序中断向量表啥的肯定不一致,没法做到统一。



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
26条回答
lyz3432
1楼-- · 2019-12-15 07:41
我们做的是这种的boot1+boot2+app1 保证所有部分都能升级,编译的时候就是编译三个工程有各自的link文件。
jjj
2楼-- · 2019-12-15 11:54
lvfv 发表于 2019-1-31 20:13
你可以这样想,App2只做接收用,验证App2完整之后,再把2覆盖到1,

我就是这么做的,设计上容易多了
823032003
3楼-- · 2019-12-15 13:41
foxpro2005 发表于 2019-1-31 21:32
楼上多好都没有考虑到在写入时发生断电或其它意外的情况, 如果系统中有SPI Flash,可以把接收到的数据放里 ...

非常感谢你的回复。

请问  iap flag 是 iap firmware data里面有程序需要刷到App的标志位?
(如果 iap flag=1,则将 iap firmware data里面的数据放到App,刷完App以后,再将存在FLASH里面的iap flag设置为0.)
way2888
4楼-- · 2019-12-15 17:15
 精彩回答 2  元偷偷看……
823032003
5楼-- · 2019-12-15 21:10
way2888 发表于 2019-2-1 13:34
可以把中断向量重定向这ram中,运行新app时刷新新的中断向量

大师,能不能详细一点。。
eleqian
6楼-- · 2019-12-15 22:30
如果只编译一个bin,把中断向量表放到ram还不够,还要把代码编译成位置无关。9楼方法更实用

一周热门 更多>