嵌入式 Linux 重启崩溃

嵌入式 Linux 重启崩溃

我在嵌入式设备上使用 Linux 2.6.23,在执行重启命令时收到以下错误。

~ # reboot
~ # Syncing hardware clock to system time
hwclock: Could not access RTC: No such file or directory
Stopping inetd: 
Unmounting filesystems
The system is going down NOW !!
Sending SIGTERM to all processes.
Please stand by while rebooting the system.
Restarting system.
------------[ cut here ]------------
Badness at c0011fd4 [verbose debug info unavailable]
NIP: c0011fd4 LR: c001229c CTR: 00000000
REGS: c0659cf0 TRAP: 0700   Not tainted  (2.6.23)
MSR: 00021032 <ME,IR,DR>  CR: 24008222  XER: 20000000
TASK = eff867a0[1000] 'init' THREAD: c0658000 CPU: 0
GPR00: 00000001 c0659da0 eff867a0 c00122c4 00000000 00000001 00000000 c0659df8 
GPR08: c0747240 c00122c4 00000000 c0659df0 24008222 100ac880 0fffc900 ffffffff 
GPR16: 00000000 007fff00 effc3f68 c0440000 c04d0000 7fefafda 00000003 00000001 
GPR24: 7fefaf04 00000001 100b0008 00000001 00000000 01234567 c0659df8 00000000 
NIP [c0011fd4] smp_call_function_map+0x2c/0x2d4
LR [c001229c] smp_call_function+0x20/0x30
Call Trace:
[c0659da0] [c0500000] irq_desc+0x6de0/0xc000 (unreliable)
[c0659df0] [c001229c] smp_call_function+0x20/0x30
[c0659e00] [c00105b4] machine_restart+0x38/0x54
[c0659e10] [c003670c] kernel_restart+0x84/0x98
[c0659e20] [c0037970] sys_reboot+0x1a4/0x1c8
[c0659f40] [c0010d80] ret_from_syscall+0x0/0x38
--- Exception: c01 at 0xfe540c4
    LR = 0x100254dc
Instruction dump:
4e800020 9421ffb0 7c0802a6 7c691b78 7d800026 bf210034 7cfe3b78 90010054 
91810030 7c0000a6 68008000 54008ffe <0f000000> 3fa0c050 3860ffff 801d7194 
System Halted, OK to turn off power

不确定这里需要提供哪些其他信息。有人知道是什么原因导致了这样的错误吗?

谢谢,

答案1

在自定义硬件上,重启路径出现问题并不罕见,因为该代码通常不会经过太多测试。machine_restart 是重新启动 PPC 计算机时调用的最后一个函数之一,并且只有在未配置特定于计算机的 restart() 函数或未实际执行重启时,才会显示“系统已停止...”消息。您没有做错任何事;这两种可能性都是内核错误,应该由为您的主板定制内核的人修复。

答案2

您的内核是否可能在启动后以任何方式覆盖引导加载程序?根据我的 guru 插件,如果您不小心覆盖了引导加载程序所在的第一个 mb 内存,那么软重启就是不允许的。

相关内容