STM32可以使用IAP升级APP程序,能否用APP程序升级IAP?为什么?

zhaoli_824 2017-08-03 02:39:46
目前自己写的IAP程序有BUG,在升级APP时可能会死机 ,但整板已经被胶封至装置内,无法使用J-LINK烧写。目前写了个测试APP程序在测试板上运行,APP程序的功能是将一个新的IAP boot程序写到0x08000000开始的那块flash上,试图实现升级IAP程序,但实测发现IAP程序的中断无法使用(表现为IAP程序无法接收串口中断),即:IAP被重写后,无法升级APP了,但跳转到APP是正常的。
目前在网上没有找到相关的说明,到底能不能用APP升级IAP,不能的话,原因是什么?
期待专业人士赐教!
...全文
623 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxyhv 2018-09-16
  • 打赏
  • 举报
回复
楼主,我有个地方没想明白。就是:先烧录IAP,然后在APP里把boot.bin读出来作为BOOT升级程序,再把BOOT升级程序给烧到IAP的地址0x08000000。这里面读出来的boot.bin就是开始用J-LINK烧录的IAP吧?那后来第二次用APP烧录的不也是这个IAP么?相当于没有升级呀
j花落花开 2017-08-07
  • 打赏
  • 举报
回复
引用 1楼我是你的主体 的回复:
自己解决了。供大家参考。 先用J-LINK烧写IAP,然后用APP程序把IAP所在的FLASH扇区读出来,注意,必须读整扇区(4K),例如:boot.bin是5K, 则从0x08000000读出8K,将这8K作为BOOT升级程序,用APP烧写到0x08000000,这样就可以完成IAP的升级!注意,千万不能断电,否则只能用仿真器烧写了。
就是读写flash操作+跳转的问题。搞清楚程序执行流程就ok
worldy 2017-08-04
  • 打赏
  • 举报
回复
LZ真是高手,为你祝福
zhaoli_824 2017-08-04
  • 打赏
  • 举报
回复
引用 1 楼 zhaoli_824 的回复:
自己解决了。供大家参考。 先用J-LINK烧写IAP,然后用APP程序把IAP所在的FLASH扇区读出来,注意,必须读整扇区(4K),例如:boot.bin是5K, 则从0x08000000读出8K,将这8K作为BOOT升级程序,用APP烧写到0x08000000,这样就可以完成IAP的升级!注意,千万不能断电,否则只能用仿真器烧写了。
flash地址分配: | IAP | 特殊标记信息 | 空白 | APP | boot.bin文件 | ...... | 可变长度 | 自己的APP程序 ^ ^ |-------- 0x08000000 |------- 0x08000000 + app offset
zhaoli_824 2017-08-03
  • 打赏
  • 举报
回复
自己解决了。供大家参考。 先用J-LINK烧写IAP,然后用APP程序把IAP所在的FLASH扇区读出来,注意,必须读整扇区(4K),例如:boot.bin是5K, 则从0x08000000读出8K,将这8K作为BOOT升级程序,用APP烧写到0x08000000,这样就可以完成IAP的升级!注意,千万不能断电,否则只能用仿真器烧写了。

27,370

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧