STM32 IAP更新APP不成功

2019-07-21 05:51发布

现在做一个IAP更新程序,思路是这样的--上电复位2S内串口没有接收到更新指令,则跳转到app程序;串口如果有接收到特定的更新指令,就进入更新模式,且发送一段请求数据:plase send the updata file.现在上位机就发送app文件,单片机接收数据保存起来。再进行图一55行的判断,但是判断不符合条件?数据地址在图二进行的定义。对55行我的理解是判断从0x20001300(即数组首地址) + 4地址取出数据,在与上0xff000000,判断高4位是否为08,如果是,则表示文件正确?这个为什么要等于0x08000000没理解。现在就是这一步有问题,判断这一步的前面我打印出了这个值,等于0如图3所示。想问一下问什么这里需要等于0x08000000?现在是更新不了APP程序,本来烧进去的app是能正常运行,且就以此份固件生成的bin文档也更新不了。 图1 图1
2.jpg
3.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
23条回答
路人曦
1楼-- · 2019-07-22 00:01
美丽的时光机器 发表于 2019-1-10 17:40
中断向量表偏移设置好了吗?

设置好了的,只是更新的程序无法运行,原来通过JLINK烧录的程序是可以跳转过去。
gosomewhere
2楼-- · 2019-07-22 03:32
 精彩回答 2  元偷偷看……
gosomewhere
3楼-- · 2019-07-22 08:14
零一三南宫南 发表于 2019-1-10 18:06
哇,感谢楼主的源码了

不用谢~
gosomewhere
4楼-- · 2019-07-22 11:45
=-=我之前做过网络升级,在BootLoader程序里面也是借鉴原子哥的这块检测,我当时也挺懵的,后来就是因为我Flash擦写的时候,有几个数据写错了,所以程序跑不起来,你先确定你在地址上擦写上去的数据是保对的,还是不能跳转不能运行,你再查BootLoader这块的程序。
路人曦
5楼-- · 2019-07-22 16:33
路人曦 发表于 2019-1-11 10:41
=-=我之前做过网络升级,在BootLoader程序里面也是借鉴原子哥的这块检测,我当时也挺懵的,后来就是因为我F ...

嗯,很好的思路,谢谢!
gosomewhere
6楼-- · 2019-07-22 16:55
gosomewhere 发表于 2019-1-11 09:42
设置好了的,只是更新的程序无法运行,原来通过JLINK烧录的程序是可以跳转过去。

或者跳转前关闭所有中断,跳转后在开启中断? __set_PRIMASK(0);

一周热门 更多>