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 17:29
 精彩回答 2  元偷偷看……
gosomewhere
2楼-- · 2019-07-22 22:57
本帖最后由 gosomewhere 于 2019-1-14 14:57 编辑
路人曦 发表于 2019-1-11 10:41
=-=我之前做过网络升级,在BootLoader程序里面也是借鉴原子哥的这块检测,我当时也挺懵的,后来就是因为我F ...

帅哥,我现在用F205做这个功能,boot程序始终跳转不出去。我仿真到127行程序就停下来了,这个应该就是进入到app程序中去了。但是等了一会儿程序又跑到上面119行我设置断点的位置。又从头执行了函数。我确定app是可以单独运行的,烧进去的app我修改了中断偏移量,keil设置也设置了flash起始位置。用JLINK读出来的app程序也与keil生成的bin文件一致。现在就觉得是不是app代码里面还有什么没有设置好的。大兄弟,还有什么需要设置的吗? 截图20190114144517227.jpg
gosomewhere
3楼-- · 2019-07-22 23:55
gosomewhere 发表于 2019-1-14 14:56
帅哥,我现在用F205做这个功能,boot程序始终跳转不出去。我仿真到127行程序就停下来了,这个应该就是进 ...

我当时做的没有用Keil这个开发工具,按理说你能跑到127行,说明检测是没问题的,从新跑到119行断点位置,应该是你跑APP的时候重启了。你app的代码偏移设置了嘛??
路人曦
4楼-- · 2019-07-23 02:20
你写个点亮LED灯的小程序,当做app,你通过你这个boot程序,跳转,查一下LED是不是按你的方式在跑。如果这个LED的小程序能正常跑,你查一下你之前的那个APP是不是太大了,或者哪里有小BUG。
路人曦
5楼-- · 2019-07-23 03:13
路人曦 发表于 2019-1-14 16:43
我当时做的没有用Keil这个开发工具,按理说你能跑到127行,说明检测是没问题的,从新跑到119行断点位置, ...

app偏移设置了,在main函数第一句就这样设置的:SCB->VTOR = FLASH_BASE | 0X8000;
截图20190114173418396.jpg
gosomewhere
6楼-- · 2019-07-23 07:24
 精彩回答 2  元偷偷看……

一周热门 更多>