stm32 iap 远程升级方案讨论

2019-12-27 19:01发布

我想通过GPRS实现STM32的远程升级,想法是把512kflash分成两个应用程序区,平常工作在A区,如果收到升级数据就先写入B区,全部写完后如果校验通过就在某个位置上置标志位然后重启系统。系统在引导区的时候根据标志位来运行A区或B区。有谁能提供个思路呢???
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
99条回答
abnerle
1楼-- · 2020-01-06 04:37
跟上,我也下星期实现它,争取提前结束项目
jiaren
2楼-- · 2020-01-06 09:35
我做过一个功能,FLASH分BootLoader区和APP区。
1.开机进入BootLoader区;
2.检查SD卡是否有映像文件;
3.有即写入APP区,写完后删除文件跳到5;
4.无则跳到5;
5.跳到APP区。


运行APP


可以增加其他功能,如在APP区收文件数据,然后重启,就进入BootLoader区做上述的事情了。
abnerle
3楼-- · 2020-01-06 13:52
IAP升级成功了,但是重启之后,就是无法正常执行了,始终在不停的重启,为什么???
if (((*(vu32*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
        
       {
            // Jump to user application
            JumpAddress=*(vu32*)(ApplicationAddress+4);
            Jump_To_Application=(pFunction)JumpAddress ;
            // Initialize user application's Stack Pointer
            __set_MSP(*(vu32*)ApplicationAddress);
            Jump_To_Application();
        }
执行完这段之后,就重启了,始终在这里重启,ApplicationAddress = 0x08010000
haitao10086
4楼-- · 2020-01-06 18:19
在atmel的mage/xmage中有实现通过GPRS方式进行远程固件升级
xizi
5楼-- · 2020-01-06 22:07
 精彩回答 2  元偷偷看……
xizi
6楼-- · 2020-01-06 22:28
回复【64楼】gdlun
以前弄过单片机的,差不多的,可以参考下!
点击此处下载  (原文件名:远程升级解决方案.pdf)  

-----------------------------------------------------------------------

所谓应用程序运行时就可以实现升级,并不是把升级流程嵌入应用程序,而是打入一个升级标记,然后放狗咬人。boot区的IAP检查升级标记,转入升级流程。

一周热门 更多>