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

2020-01-01 17:37发布

APP现用tftp协议将bin文件发送到STM32F407,接收到数据写进W25Q128,IAP从W25Q128读取bin文件数据然后写进内部flash,做了CRC校验,断点在线调试,查看写进W25Q128里和读取到的数据都是正确的,但写完内部flash后IAP跳转到APP时就死机了,跳转前有将全部中断都关掉的,这是什么原因呢,有人用过外部flash芯片做IAP升级的吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
30条回答
风中答案
1楼-- · 2020-01-03 16:59
wind2100 发表于 2017-1-18 14:21
外部FLASH 只要你检测CRC校验值就好了,32自带32BIT CRC啊,很好用。
打印出来看就对了,
对不对全部CRC ...

有做CRC检验的,tftp接收到每包数据后,在每一包最后都做了CRC16校验才写到W25Q128,读出来时都先判断CRC再把数据写到内部flash里。现在碰到问题是,当我用J-Link烧写IAP和APP程序,能正常运行,用J-Link烧写完后,不修改APP程序,能进行升级,IAP跳转APP没问题,但当我随便修改了APP程序后,再升级的话,IAP跳转APP时就死机了,没任何反映应了,在跳转APP那断点看memory,就是上面的图片所示,和bin文件数据比较,是正确的。跑的是freeRTOS系统,跳转前有把全部中断关掉的。
int
2楼-- · 2020-01-03 20:26
风中答案 发表于 2017-1-18 16:25
有做CRC检验的,tftp接收到每包数据后,在每一包最后都做了CRC16校验才写到W25Q128,读出来时都先判断CRC ...

你的boot在往片内flash写APP程序的时候有没有先擦再写呢?
zchong
3楼-- · 2020-01-03 21:49
 精彩回答 2  元偷偷看……
zchong
4楼-- · 2020-01-03 22:13
jtag把app读出来保存为bin文件与原始文件比较,先排内部flash写的对不对,一步一步来,逐步排除
denike
5楼-- · 2020-01-03 23:47
if (((*(vu32*)appaddr) & 0x2FF80000 ) == 0x20000000)//ÆðʼµØÖ·Ç°4×Ö½ÚÊÇSRAM´ó429-256K 看跳转这里 RAM的判断的
int
6楼-- · 2020-01-04 01:33
zchong 发表于 2017-1-18 17:28
要是这个问题要打屁屁了

哈哈,从描述来看还是有一点点这个可能的

一周热门 更多>