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

2019-03-25 20:25发布

本信息来自合作QQ群:NXP Cortex-M0/M3交流(87394268) 
    我建立了两个工程,一个是用来做IAP的,另一个是应用程序,当应用程序自己跑的时候就没有问题,   当把应用程序和IAP程序连在一起跑的时候,运行一段时间就进了异常-----即defaultVectorHandle函数.经过添加中断函数排查,异常中断并不是NMI 、总线异常、硬件错误等,我的应用程序的中断向量表是重映射到了RAM里面的。   请问这种问题有人遇到过吗?有什么办法可以查出问题?非常感谢! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
pepsi360
1楼-- · 2019-03-26 06:18
_NXP LPC1000_

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

 

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

daicheng
2楼-- · 2019-03-26 07:36
说的非常好,我用IAP的时候就向您说的那样,其中让IAP程序的运行级别提高,只作重启代码!远程升级代码一定要保证代码运行的正确性,用户程序只负责存储数据修改标记,IAP会查看标记并启动。
daicheng
3楼-- · 2019-03-26 10:11
做IAP程序一定要注意你的中断向量表地址的映射
IP pepsi360说的很好!
LZ你可以先做实验将程序在编译时将中断向量地址更改到你想要跳转的地址,如果使用IAP能够启动并正常运行就可以,如果你的IAP与你的应用程序是一个程序那么你要处理好这个部分!
Alex_li615
4楼-- · 2019-03-26 12:27
 精彩回答 2  元偷偷看……

一周热门 更多>