IAP,APP1和APP2两个应用程序交替更新的问题

2019-12-10 18:13发布

本帖最后由 vjcmain 于 2018-5-3 17:26 编辑

如题,想实现交替升级的方式来解决变砖的问题,booloader 主要做app 完整性诊断以及app 切换的功能,不知道原理上是否可行。
因为这个MCU比较特殊,控制着整个板卡的电源,板卡上跑X86PC host(COME)  想通过host给BMC 升级,因此升级的过程中不能断电。
IP.PNG (40.71 KB, 下载次数: 0) 下载附件 2018-5-3 16:50 上传



退而求其次的方案是 Application B 规划为固件暂存区,app 收到升级指令时往固件暂存区 写入新固件,然后下次重启的时候bootloader 把暂存区的固件搬运到 Application A 区。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
29条回答
Ray______
1楼-- · 2019-12-14 06:28
一心2013 发表于 2018-5-6 00:57
唉,那这样的话不能随意 交替升级了,还是得改回来,一块运行,一块暂存 ...

没法做机制让boot判断吗?比如版本号或者标志位?
摄氏零度
2楼-- · 2019-12-14 10:27
现在有些安卓手机就支持两个固件区,升级的时候先拷贝一份当前固件到B区,然后升级A区固件,如果升级出现问题,可以在Bootloader切换到B区的旧固件,不知道具体是怎么实现的
一心2013
3楼-- · 2019-12-14 16:13
Ray______ 发表于 2018-5-6 10:20
没法做机制让boot判断吗?比如版本号或者标志位?

BOOT可以判断哪块APP是旧的,但如果要判断当前固件是什么基地址,也可以,只是这样固件会因此要分开操作,生成两个固件,但这样就失去意义了。

在我看来,固件跟BOOTLOADER要完全分开,如果固件代码一样,但是要因基地址分版本,这样如果哪天编译固件时搞错基地址,那就完了。每次升级还要先看固件是什么基地址,感觉BOOTLOADER失去意义
亦言567
4楼-- · 2019-12-14 19:39
KongQuan 发表于 2018-5-5 10:49
一个引导区,一个应用区,一个下载区方便,这样,应用区只用一个配置编译就可以了。
重启时检查应用区是否 ...

这个思路好,我也这样去试试看
zhaoyuanxian
5楼-- · 2019-12-15 01:22
 精彩回答 2  元偷偷看……

一周热门 更多>