stm32 iap 远程升级方案讨论

2019-12-27 19:01发布

我想通过GPRS实现STM32的远程升级,想法是把512kflash分成两个应用程序区,平常工作在A区,如果收到升级数据就先写入B区,全部写完后如果校验通过就在某个位置上置标志位然后重启系统。系统在引导区的时候根据标志位来运行A区或B区。有谁能提供个思路呢???
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
100条回答
xizi
2020-01-06 22:50
回复【51楼】yzhu  
出个主意,将flash分为boot、a、b三个区。  
方案1:  
a区运行代码时,将升级数据写入b区,然后重启系统;  
boot代码查看b区有无代码,  
        有的话,将b区的代码重写到a区,并擦除b区的代码,然后重启系统;  
        没有的话,直接运行a区的代码;  
因为flash擦除后,读出值均为0x0ff,很容易判断是否有无代码。  
这样做的好处是工程设置不必改来改去,缺点是没次升级,需要擦除3次flash。

-------------------------------------------------------------------------
如果将b区的代码重写到a区过程中掉电,则上电应确保重新回写,而不是执行a区的残缺代码。

一周热门 更多>