打印
[微控制器/MCU]

当应用程序和IAP程序一起跑的时候,就出现异常

[复制链接]
2050|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huzixian|  楼主 | 2010-6-26 17:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我建立了两个工程,一个是用来做IAP的,另一个是应用程序,当应用程序自己跑的时候就没有问题,



当把应用程序和IAP程序连在一起跑的时候,运行一段时间就进了异常-----即defaultVectorHandle函数.经过添加中断函数排查,异常中断并不是NMI 、总线异常、硬件错误等,我的应用程序的中断向量表是重映射到了RAM里面的。



请问这种问题有人遇到过吗?有什么办法可以查出问题?非常感谢!

相关帖子

沙发
linux1| | 2010-6-26 17:26 | 只看该作者
通过函数指针跳过去的??感觉不靠谱,你通过iap升级以后应该是重启代码,然后进入正常的flash模式,我估计是你是指针函数,强行跳转,结果没有修该中断向量表映射,导致出现代码异常 也就是说你直接跳到flash里面的应用程序的地址?是吧,我建议你直接跳到你启动代码的的起始地址,再试试







我个人的了解,向量表只会出现在RAM或flash的起始的32字节里头,出现在其他的位置,我还没有做个,不排除你可以用指针强制复制的形式将32字节的数据拷贝到其他的区域的可能,但是硬件每次都默认跳转到0x0~0x1f的区域,这个没法改变不管是这个是实际的硬件地址也好,逻辑地址也罢。期待你试验成功

使用特权

评论回复
板凳
huzixian|  楼主 | 2010-6-26 17:27 | 只看该作者
说的非常好,我用IAP的时候就向您说的那样,其中让IAP程序的运行级别提高,只作重启代码!远程升级代码一定要保证代码运行的正确性,用户程序只负责存储数据修改标记,IAP会查看标记并启动。

使用特权

评论回复
地板
LPC300| | 2010-6-26 17:29 | 只看该作者
做IAP程序一定要注意你的中断向量表地址的映射
IP pepsi360说的很好!
LZ你可以先做实验将程序在编译时将中断向量地址更改到你想要跳转的地址,如果使用IAP能够启动并正常运行就可以,如果你的IAP与你的应用程序是一个程序那么你要处理好这个部分!

使用特权

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

本版积分规则

262

主题

1534

帖子

2

粉丝