关于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条回答
小枫叶
1楼-- · 2019-07-22 11:25
 精彩回答 2  元偷偷看……
lhf_1230
2楼-- · 2019-07-22 15:34
里面好像有个效验码之类的一个long int数据,你读出能运行的文件,和你要IAP进去的bin文件比较一下,应该有4个字节不一样。
小枫叶
3楼-- · 2019-07-22 18:30
 精彩回答 2  元偷偷看……
liuliuliu
4楼-- · 2019-07-22 23:39
小枫叶 发表于 2017-8-30 09:25
刚刚做了下对比hex和bin发现bin的首地址好像不对呀,hex地址是对的

查找一下看是不是bin文件的问题!可以直接用工具把bin文件下载进去,如果运行正常说明不是bin文件的问题,如果不正常就可能是bin文件的问题,注意Flash地址要设置对,一步一步去验证是哪里的问题!
liuliuliu
5楼-- · 2019-07-23 02:19
小枫叶 发表于 2017-8-30 09:30
我现在就是发现我生成的bin和hex的起始地址好像不一样哦,上面两幅截图可以看见的,是不是bin本事就是0x0 ...

不是,Flash的地址都是从0x08000000开始的,我设置的偏移地址是0x08004000,所以我截图上开始的地址是0x8004000
小枫叶
6楼-- · 2019-07-23 07:00
 精彩回答 2  元偷偷看……

一周热门 更多>