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

2020-01-01 17:37发布

APP现用tftp协议将bin文件发送到STM32F407,接收到数据写进W25Q128,IAP从W25Q128读取bin文件数据然后写进内部flash,做了CRC校验,断点在线调试,查看写进W25Q128里和读取到的数据都是正确的,但写完内部flash后IAP跳转到APP时就死机了,跳转前有将全部中断都关掉的,这是什么原因呢,有人用过外部flash芯片做IAP升级的吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
30条回答
zchong
1楼-- · 2020-01-03 01:56
把flash内容弄出来比较一下
wurst
2楼-- · 2020-01-03 07:54
呵呵,应用程序的跳转地址是app+4,前4个字节是堆栈首地址
风中答案
3楼-- · 2020-01-03 09:38
hyghyg1234 发表于 2017-1-18 12:23
比较好的办法就是在调试下面看memory,然后再打开bin文件对比下是否正确。

...

menu.png (140.11 KB, 下载次数: 0)

下载附件

2017-1-18 13:17 上传

    看memory和bin文件比较,数据是对的,说明bin文件数据是写进flash了的,还发现个奇葩问题,就是当我用j-link把IAP和APP程序烧写进去后,不修改APP程序的话,升级是正常的(不管升级多少次),当我随便修改一下APP程序后,升级,IAP跳转APP时就挂了。
hyghyg1234
4楼-- · 2020-01-03 09:47
 精彩回答 2  元偷偷看……
wind2100
5楼-- · 2020-01-03 10:46
风中答案 发表于 2017-1-18 13:25
看memory和bin文件比较,数据是对的,说明bin文件数据是写进flash了的,还发现个奇葩问题,就是当我 ...

怎么可能,APP怎么改,都行,不要超过容量,先可以ST LINK下载试一下,能不能跑起来,再用你自己的IAP程序试,就知道问题在哪里了。
注意禁用了IRQ 要再次打开。
APP本身要能运行,不行进去也是一堆错,跳入ERROR
wind2100
6楼-- · 2020-01-03 16:38
风中答案 发表于 2017-1-18 11:30
请问你用的也是外部flash芯片来保存bin文件吗,你说的地址是修改的中断向量表的地址吗,能共享你代码来学 ...

外部FLASH 只要你检测CRC校验值就好了,32自带32BIT CRC啊,很好用。
打印出来看就对了,
对不对全部CRC看结果。
SPI FLASH 读出来看, f407也是可以读出FLASH 计算CRC的,再对比一下,就知道了。
你不是已经跑起来了吗?
我也是看坛里面的  

注明下:是坛友的,网址我忘记了。

STM32F4 USB HOST 实现 U盘 IAP_U-IAP-V0.2.rar (2.24 MB, 下载次数: 47) 2017-1-18 14:21 上传 点击文件名下载附件

一周热门 更多>