1.上章的oops栈信息如下图所示:
?...9fe0: 代表最初的栈顶SP寄存器位置
9e80:代表函数出错的SP寄存器位置
2.我们先来分析上图的栈信息,又是怎样的过程呢?...当内核的某个函数出问题时,内核便通过LDMIA,将栈顶sp打印出来,然后栈顶sp+4,直到到达最初的栈顶
2.2我们以下图的3个函数为例:
?
...若c()函数出问题后,内核就会打印b()函数的内容(0x03,LR), 打印a()函数的内容(0x02,LR),直到sp到达栈顶为止
其中lr值,便代表各个函数的调用关系
3.接下来我们便以上章的oops...3.1先来看first_drv_open()函数,找到STMDB入栈的lr值,来确定被哪个函数调用的
?
如上图所示,first_drv_open()函数里,通过stmdb sp!