为什么退出一个函数时会产生 Usage Fault?

2019-03-24 16:02发布

一个朋友说程序死机,拿过来仿真,发现在退出某函数时就产生了一个 Usage Fault:
试图在无效的 ISA 状态中执行指令。例如,不是thumb    试图在无效的 EPSR 状态中执行,例如,在BX类型指令改变状态之后。这包括从异常中返回之后的状态。 
不明白。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
tekkon
2019-03-25 09:17
< :TI_MSP430_内容页_SA7 --> Usage Fault:  包括执行的指令非法使用EPSR寄存器,错误进入中断向量表,除以0等操作都会引起

这是对于产生Usage Fault 的分析:  The processor has attempted to execute an instruction that makes illegal use of the Execution Program Status Register (EPSR).  Potential reasons: a) Loading a branch target address to PC with LSB=0. b) Stacked PSR corrupted during exception or interrupt handling. c) Vector table contains a vector address with LSB=0.

可以通过查看存储在栈寄存器里的PC值找到产生这个fault的指令    不过比较常见的原因包括 stack corruption  可以试着增加栈的大小来解决

http://www.keil.com/appnotes/files/apnt209.pdf     可以仔细读一下这个文章  后半部分教你怎么排除这些fault

希望有用!

一周热门 更多>

相关问题

    相关文章