我insmod是ARM平台上的内核模块,并且遇到内核崩溃,导致这三个错误被打印到屏幕上
insmod
Unhandled fault: external abort on non-linefetch (0x008)
Unhandled fault: imprecise external abort (0xc06)
Kernel panic - not syncing: Fatal exception in interrupt
3
括号中的值是ifsr(指令故障状态)寄存器。中止的原因有很多,这些原因有特定的原因。内核中有一些表可以处理特定的故障原因,而另一些表则具有处理程序,该处理程序执行a printk并中止任务或panic()执行内核。参见:arm / mm / fault.c。除非您正在开发故障处理程序,否则该值可能没有价值。尽管它可以使您了解故障的根源,但最好还是PC在该地址查看代码(我认为它已经打印出来了?)。
ifsr
printk
panic()
PC
这些故障可能发生在任何地方。在用户任务,内核任务或interrupt处理程序等中。由于interrupt处理程序崩溃,Linux决定停止所有操作,而无需进行任何操作。否则,您可能会损坏磁盘(甚至更多),等等。
interrupt
注意:每个 故障状态寄存器 都有一个 abort.S 文件,该文件对于特定的ARM CPU是不同的。例如,请参见abort- ev7.S v7_early_abort。将其放入在启动时匹配的处理器表中。
v7_early_abort