接之前的帖子:/bbs/thread-99652-1.html
目前没有在中断里使用printf了,仅在main的循环里使用,但偶尔还是会不定时的触发HardFault异常。
异常信息如下:
MCAUSE= 0x7
MTVAL= 0x4d904d6
MEPC= 0x2032
MSTATUS= 0x88
在反汇编视图里定位到 0x2032处,显示如下:
__sfputc_r: 0000200e: lw a5,8(a2) 00002010: addi a5,a5,-1 00002012: sw a5,8(a2) 00002014: bgez a5,0x2028 <__sfputc_r+26> 00002018: lw a4,24(a2) 0000201a: blt a5,a4,0x2024 <__sfputc_r+22> 0000201e: li a5,10 00002020: bne a1,a5,0x2028 <__sfputc_r+26> 00002024: j 0x183c <__swbuf_r> 00002028: lw a5,0(a2) 0000202a: mv a0,a1 0000202c: addi a4,a5,1 00002030: sw a4,0(a2) 00002032: fsd fa1,0(a5) 00002034: ret
发现是调用__sfputc_r函数这里死掉了,请问这种异常该如何排查?
另外MRS里有办法查看调用栈(call stack)么,好像没看到有这个视图,调试起来不方便。