最近在用USB实现IAP功能,在APP程序中通过U盘读取要升级的BIN文件后将文件写入备份的flash地址中并设置升级标志。
开机运行IAP程序时,检查是否需要升级,如果需要则将备份flash中的数据读到APP的flash区,然后跳转到APP。
现在的情况是,第一次我用JLINK把APP下载到芯片中,然后运行IAP程序,可以正常跳转过去,然后会去读取U盘中的Bin文件,也读取成功了,然后复位,进行升级,整个copy过程也正确(我对比过flash中的数据)。 我用了一个测试得 APP,也就是一个跑马灯程序(进行了中断重映射和地址设置),升级后可以正常运行,灯跑起来了。
但是我直接去升级我的USB程序,去跳转不成功,目前我看到的区别就是USB程序比较大,大概有20k的样子,而跑马灯程序只有3k左右,但是我大概算了flash大小,应该也不影响,不知道为什么啊
求大神帮忙分析一下啊
|