stm32 iap 远程升级方案讨论

2019-12-27 19:01发布

我想通过GPRS实现STM32的远程升级,想法是把512kflash分成两个应用程序区,平常工作在A区,如果收到升级数据就先写入B区,全部写完后如果校验通过就在某个位置上置标志位然后重启系统。系统在引导区的时候根据标志位来运行A区或B区。有谁能提供个思路呢???
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
99条回答
tuy0326
1楼-- · 2019-12-29 16:17
 精彩回答 2  元偷偷看……
tuy0326
2楼-- · 2019-12-29 21:18
首先,每次启动都先进boot区.
其次,只有当数据接收完成后才置标志,复位自己.
再者,如果多次app区都没有成功运行的话才认为该进入Xmodem升级(同样需要一个变量记录,每次在正常引导后也就是App区将boot区的一个多次引导的变量清0)

最后,可以在外部flash里放个最简单的bin文件,当所有的手段都失效后直接恢复这个程序到app提示用户该更新程序...
ddcour
3楼-- · 2019-12-29 22:47
我在做这事,就在跳到应用程序的时候,系统就不正常了(出现了复位,重新开始了),不知道问题出在什么地方。
Alvin007
4楼-- · 2019-12-29 23:57
回复【11楼】lcslxh  
回复【8楼】Alvin007 
关注中 
lz的思路时将内置flash分成3个区吧 
引导区  应用区A  应用区B 
其实这里的B区完全作为一个外置数据存储器来用了 
如果是这样何不在引导区加入“升级”程序 直接覆盖A区  
如果像4楼所说真的意外中断了 
也只是没有完成升级 引导程序没遭到破坏 
只需要重新升级即可 
不知这样是否可行
--------------------------------------------------------------------
你的这种思路有一个问题是,如果程序已经在运行了呢?在要升级的时候如何转到引导区呢?如何判断是在升级程序还是转到正常运行状态呢
-----------------------------------------------------------------------

有个比较简单的办法 启动的时候直接进入引导区 通过按键等外部接口做选择
例如某些路由器 按住一个RESET键上电即可
我猜想应该是这个思路吧
346675655
5楼-- · 2019-12-30 00:50
同样关注该 方案
346675655
6楼-- · 2019-12-30 02:34
 精彩回答 2  元偷偷看……

一周热门 更多>