打印
[应用相关]

STM32 IAP升级,KEIL下如何一份代码可以运行于两个APP区

[复制链接]
593|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cr315|  楼主 | 2022-8-3 09:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

我的想法是一个IAP+APP1+APP2。上电运行IAP。会检测当前有效APP,跳转有效APP运行。在APP运行期间,收到升级指令,直接dowm固件,到另外一个APP区,下载会对固件进行安全校验。目前的问题是,没办法使用一份代码运行两个APP。两个APP,则IAP跳转不同的APP,跳转的地址不一样,则代码中需要设置的中断向量表及链接地址。这样,一份代码就不行了,而且两份代码还需要注意当前到底应该使用哪份代码的固件。在实际生产中几乎没办法处理。但是我在工作中有接触到使用M4的原厂,实现了两个APP区,一份代码。故,请问要如何实现?

使用特权

评论回复
沙发
elephant00| | 2022-8-3 09:56 | 只看该作者

APP1和APP2也就是一个偏移地址差异,这个管理很难嘛

使用特权

评论回复
板凳
aozima| | 2022-8-3 11:06 | 只看该作者
只开发一份,发布时用脚本,在CI服务器上面自动链接2份不同地址的固件。

使用特权

评论回复
地板
songqian17| | 2022-8-3 22:36 | 只看该作者
跳转的地址不一样?

使用特权

评论回复
5
两只袜子| | 2022-8-4 09:00 | 只看该作者
你找下带2个BANK的mcu试试,可以分2个区,地址好像一样的

使用特权

评论回复
6
jcky001| | 2022-8-5 09:00 | 只看该作者
可以考虑将IAP部分多分配一个SECTOR, 用来保存当前使用的APP信息,包括验证的证书等信息。
或者像大家建议的,使用双bank的MCU。 比如G4系列,可以实现双BANK启动。

使用特权

评论回复
7
fanchenxinok| | 2022-8-18 16:05 | 只看该作者
可以这样做,BOOT的跳转地址和APP程序的中断向量表地址都设置成A分区地址,升级时APP将收到的升级包刷写到B分区,烧写完整并验证完成后写一个状态标志,重启系统BOOT去读取这个状态标志,发现需要升级,就将B分区的数据拷贝到A分区,完成拷贝后跳转到A分区启动即可。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1327

主题

3834

帖子

0

粉丝