打印
[STM32F1]

用USB做IAP后跳转不成功

[复制链接]
1699|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
luting409|  楼主 | 2014-6-17 10:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    最近在用USB实现IAP功能,在APP程序中通过U盘读取要升级的BIN文件后将文件写入备份的flash地址中并设置升级标志。
    开机运行IAP程序时,检查是否需要升级,如果需要则将备份flash中的数据读到APP的flash区,然后跳转到APP。

   现在的情况是,第一次我用JLINK把APP下载到芯片中,然后运行IAP程序,可以正常跳转过去,然后会去读取U盘中的Bin文件,也读取成功了,然后复位,进行升级,整个copy过程也正确(我对比过flash中的数据)。   我用了一个测试得 APP,也就是一个跑马灯程序(进行了中断重映射和地址设置),升级后可以正常运行,灯跑起来了。
    但是我直接去升级我的USB程序,去跳转不成功,目前我看到的区别就是USB程序比较大,大概有20k的样子,而跑马灯程序只有3k左右,但是我大概算了flash大小,应该也不影响,不知道为什么啊
    求大神帮忙分析一下啊
沙发
luting409|  楼主 | 2014-6-17 10:43 | 只看该作者
备注:我用的芯片是107的

使用特权

评论回复
板凳
airwill| | 2014-6-17 12:49 | 只看该作者
FLASH 的目的地址, 中断向量表等有没有异常.
IAP 一般的 ROM 的起始位置, 这样需要对原来运转正常的代码修改地址后编译, 并修改中断向量表地址.
另外还有个注意的地方, 跳转去的 ROM 首地址是个指针, 并不是指令.

使用特权

评论回复
地板
luting409|  楼主 | 2014-6-17 13:47 | 只看该作者
airwill 发表于 2014-6-17 12:49
FLASH 的目的地址, 中断向量表等有没有异常.
IAP 一般的 ROM 的起始位置, 这样需要对原来运转正常的代码修 ...

我现在的情况是,不是说一定跳转不过去,是有的时候跳转不过去,我试着调试了一下,我加了USB的初始化程序后,就跳转不聊了,所以我怀疑是USB初始化中是不是有什么地方影响了,但是我仔细看了,应该没有什么,中间对中断向量的修改我也改过来了

使用特权

评论回复
5
airwill| | 2014-6-17 14:02 | 只看该作者
也可以在调试模式下, 直接查硬件外设的设置.
或者用复位的方式, 在 IAP 之前判断是否直接跳转到 APP, 避免 IAP 更改复位后的设置. 虽然很多时候软件不该这么脆弱, 但这样可以帮助你找问题

使用特权

评论回复
6
luting409|  楼主 | 2014-6-17 15:13 | 只看该作者
airwill 发表于 2014-6-17 14:02
也可以在调试模式下, 直接查硬件外设的设置.
或者用复位的方式, 在 IAP 之前判断是否直接跳转到 APP, 避免  ...

这个是怎么弄啊,我一直想调试看看问题出在哪,但是由于跳转后就只能看不到程序的执行了,所有我一直不知道这种情况应该怎么调试

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

40

帖子

0

粉丝