STM32 IAP升级,KEIL下如何一份代码可以运行于两个APP区
我的想法是一个IAP+APP1+APP2。上电运行IAP。会检测当前有效APP,跳转有效APP运行。在APP运行期间,收到升级指令,直接dowm固件,到另外一个APP区,下载会对固件进行安全校验。目前的问题是,没办法使用一份代码运行两个APP。两个APP,则IAP跳转不同的APP,跳转的地址不一样,则代码中需要设置的中断向量表及链接地址。这样,一份代码就不行了,而且两份代码还需要注意当前到底应该使用哪份代码的固件。在实际生产中几乎没办法处理。但是我在工作中有接触到使用M4的原厂,实现了两个APP区,一份代码。故,请问要如何实现?
APP1和APP2也就是一个偏移地址差异,这个管理很难嘛 只开发一份,发布时用脚本,在CI服务器上面自动链接2份不同地址的固件。 跳转的地址不一样?
你找下带2个BANK的mcu试试,可以分2个区,地址好像一样的
可以考虑将IAP部分多分配一个SECTOR, 用来保存当前使用的APP信息,包括验证的证书等信息。
或者像大家建议的,使用双bank的MCU。 比如G4系列,可以实现双BANK启动。
可以这样做,BOOT的跳转地址和APP程序的中断向量表地址都设置成A分区地址,升级时APP将收到的升级包刷写到B分区,烧写完整并验证完成后写一个状态标志,重启系统BOOT去读取这个状态标志,发现需要升级,就将B分区的数据拷贝到A分区,完成拷贝后跳转到A分区启动即可。
页:
[1]