最近和朋友聊关于错误追踪的一些问题,有不少人知道使用,但是原理却不是很理解,正好最近没事我打算简单写一下,写的不好或者有错误的地方多多理解啊。
首先是我们以前使用一种简单的错误追踪hardfault
这个原理比较简单,大概说一下,就是在进hardfault的时候首先判断LR寄存器的bit2位,查看当前是使用msp还是psp,然后把使用到的sp数据读到R0里面。
平时LR是保存返回的值,进入中断后就会变化,确定哪个SP后就可以在对应的SP里面取出被压的栈的数据,按照顺序即可
最近和朋友聊关于错误追踪的一些问题,有不少人知道使用,但是原理却不是很理解,正好最近没事我打算简单写一下,写的不好或者有错误的地方多多理解啊。
首先是我们以前使用一种简单的错误追踪hardfault
这个原理比较简单,大概说一下,就是在进hardfault的时候首先判断LR寄存器的bit2位,查看当前是使用msp还是psp,然后把使用到的sp数据读到R0里面。
平时LR是保存返回的值,进入中断后就会变化,确定哪个SP后就可以在对应的SP里面取出被压的栈的数据,按照顺序即可