如何用W25Q128芯片做IAP升级呢?

2020-01-01 17:37发布

APP现用tftp协议将bin文件发送到STM32F407,接收到数据写进W25Q128,IAP从W25Q128读取bin文件数据然后写进内部flash,做了CRC校验,断点在线调试,查看写进W25Q128里和读取到的数据都是正确的,但写完内部flash后IAP跳转到APP时就死机了,跳转前有将全部中断都关掉的,这是什么原因呢,有人用过外部flash芯片做IAP升级的吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
30条回答
hyghyg1234
1楼-- · 2020-01-02 12:57
另外我来说几个排错的方法。
1.跳转APP前关闭中断,复位串口还有其他外设,我曾经因为没有复位串口弄了很久才解决。
2.W25Q128如果内容写对了,需要确认内部flash是否写对了,进到调试里边看,之前我也遇到写内部flash出错的。
3.APP程序是否正确,试着直接把APP直接下载进去看是否运行正确。
wind2100
2楼-- · 2020-01-02 14:29
我的已经调试成功,你要检查 STM32 ST-LINK Utility   你要升级的地址是不是已经写进去。而且要注意一下103和407 FLASH写入是有区别的,主要是扇区大小不同。要先擦再写。 我开始就是将这个地址搞错了。
风中答案
3楼-- · 2020-01-02 17:31
wind2100 发表于 2017-1-18 11:09
我的已经调试成功,你要检查 STM32 ST-LINK Utility   你要升级的地址是不是已经写进去。而且要注意一下103 ...

请问你用的也是外部flash芯片来保存bin文件吗,你说的地址是修改的中断向量表的地址吗,能共享你代码来学习吗,这个问题困扰了很久
风中答案
4楼-- · 2020-01-02 18:18
hyghyg1234 发表于 2017-1-18 10:50
另外我来说几个排错的方法。
1.跳转APP前关闭中断,复位串口还有其他外设,我曾经因为没有复位串口弄了很久 ...

IAP里没有用到串口外设,只有APP里才有。根据写入函数FLASH_ProgramWord(*WriteAddress, data[n]);  返回的状态是正确的,APP用j-link烧写进去是能正常运行的。还有什么会影响到的吗
hyghyg1234
5楼-- · 2020-01-02 19:49
 精彩回答 2  元偷偷看……
hyghyg1234
6楼-- · 2020-01-02 23:54
本帖最后由 hyghyg1234 于 2017-1-18 12:26 编辑

比较好的办法就是在调试下面看memory,然后再打开bin文件对比下是否正确。

2017-01-04_083453.png (28.61 KB, 下载次数: 0)

下载附件

2017-1-18 12:22 上传


一周热门 更多>