我有一个运行在mips64上的设备,由于NMI看门狗重置,它会时不时地重启。我有err epc寄存器的内容,当设备被NMI看门狗复位时,该寄存器保存指令寄存器的内容。err epc寄存器始终保持非常相似的地址,但并不总是完全相同,这使我假设设备陷入循环-可能是在执行NMI时。
有没有办法找出哪条指令,最好是设备在哪个模块中执行的方法只有err EPC值?第一步是转储地址周围的内容虚拟内存,但我已经失败了。
我已经检查了/proc/modules,并计算出所有模块都加载在虚拟内存的不同区域(失败的epc在0xffffffff80460980 - 0xffffffff804609d4范围内,所有模块都在0xffffffc0000000以上),所以我假设这是linux内核中的深层内容。
任何关于如何进行的想法/提示都是非常感谢的!
发布于 2014-05-15 06:16:21
在MIPS64中,范围0xffffffff8xxxxxxx中的地址映射到kseg0,范围0xffffffffcxxxxxxx中的地址映射到kseg2。
看起来这台机器上没有内存管理单元,并且NMI是在kseg0而不是内核中运行的应用程序中触发的。如果你能知道哪个应用程序正在运行,你就应该能够在失败的EPC周围反汇编代码。
https://stackoverflow.com/questions/23629487
复制相似问题