关于STM32F407 IAP程序升级,程序擦出成功,也写入成功,重新上电程序就没是没跑起来

2019-07-20 12:16发布

各位前辈,小弟最近遇到一个关于IAP升级的问题,原子哥的IAP升级是采用串口一次性接收所有bin的数据,我的板子没有那么大缓存,只能接受一部分就写一部分,同样是接收2048字节再转换成512个4字节的数据,再写入flash中,地址每次偏移2048,直到写完就跳转到APP程序段。(目前我的APP段就是0x8000000,BOOT程序段是放后面的0X8040000),问题是写完flash(调试发现擦出flash成功了,写每次也成功了(看FLASH_ProgramWord函数返回值是成功的)),发现程序总是跑步起来(bin程序就是让一个灯闪烁的更快一些),发现写bin后程序跑步起来,我现在疑问的是,如何准确判断是我写flash到底成功了没,还是程序别的问题,(如果写成功了,理论上我重新上电就能正常,但是重新上电也没有反应,APP程序断是0x8000000)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
21条回答
liuliuliu
1楼-- · 2019-07-21 15:24
1.你直接把APP程序下载(下载的时候注意设置Flash地址)到MCU里面如果运行正常,说明可能是IAP写Flash的有丢失或者其他问题;如果运行不正常则可能是你的APP程序里面地址偏移的问题;2.如果是Flash写丢失的问题,你可以用STM32 ST-Link Utility工具对比一下写进Flash的程序和bin文件是否一样,就可以找出问题所在!
尚磊12323
2楼-- · 2019-07-21 18:03
 精彩回答 2  元偷偷看……
小枫叶
3楼-- · 2019-07-21 21:56
 精彩回答 2  元偷偷看……
小枫叶
4楼-- · 2019-07-22 00:22
liuliuliu 发表于 2017-8-29 18:09
1.你直接把APP程序下载(下载的时候注意设置Flash地址)到MCU里面如果运行正常,说明可能是IAP写Flash的有 ...

刚刚用了一下STM32 ST-Link Utility工具我发现我生成的bin的地址和hex地址不一样,貌似是不是bin的地址有问题,附上截图。[img]C:UsershezhenDesktop11.jpgC:UsershezhenDesktop22.png[/img]
liuliuliu
5楼-- · 2019-07-22 01:04
本帖最后由 liuliuliu 于 2017-8-30 09:25 编辑
小枫叶 发表于 2017-8-30 08:50
1.APP程序是没有问题的,只是让一个灯闪烁更快一些,已经验证过了(直接下载去验证的),验证ok。
2.目前 ...

写进Flash的程序(直接看MCU Flash里面的程序,用工具可以看到)和bin文件完全一样吗?有没有做过对比?用工具看到Flash里面的程序是这样的: 1.png
小枫叶
6楼-- · 2019-07-22 06:49
 精彩回答 2  元偷偷看……

一周热门 更多>