2013-07-22 113 views
0

我想在非常低的溫度下調試我們的嵌入式Linux系統(< 40C)。問題是,它並不總是正確啓動,我試圖找出原因。經過一番分析,我看到內核啓動了下面的輸出期間進入恐慌:瞭解Linux內核中的異常

can: controller area network core (rev 20090105 abi 8) 
NET: Registered protocol family 29 
can: raw protocol (rev 20090105) 
/opt/elinos-5.1/linux/linux-ppc-2.6.34/drivers/rtc/hctosys.c: unable to open rtc 
device (rtc0) 
ADDRCONF(NETDEV_UP): eth0: link is not ready 
IP-Config: Complete: 
    device=eth0, addr=192.168.100.100, mask=255.255.255.0, gw=255.255.255.255, 
    host=192.168.100.100, domain=, nis-domain=(none), 
    bootserver=192.168.100.20, rootserver=192.168.100.20, rootpath= 
Freeing unused kernel memory: 156k init 
init started: BusyBox v1.6.1 (2013-06-03 11:53:03 CEST) multi-call binary 
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready 
udevd-work[84]: '/sbin/modprobe -bv of:NioctlT<NULL>Cfsl,mpc5125-ioctl' unexpect 
ed exit with status 0x000b 

------------[ cut here ]------------ 
Badness at /opt/elinos-5.1/linux/linux-ppc-2.6.34/kernel/sched.c:3574 
NIP: c001acfc LR: c001ace4 CTR: c01c5fa4 
REGS: c790f7c0 TRAP: 0700 Not tainted (2.6.34.7-ELinOS-146-ipipe) 
MSR: 00021032 <ME,CE,IR,DR> CR: 28000482 XER: 20000000 
TASK = c3ba6cb0[71] 'udevd' THREAD: c78e0000 
GPR00: 00000000 c790f870 c3ba6cb0 00000001 c790f8b8 00000008 00000000 00000000 
GPR08: 00000000 c0370000 00000001 c0370000 5d0fabd2 10033420 10019a6c 00000000 
GPR16: 10019328 100194d4 100194c0 1002bad0 10019328 10019474 bfa35428 100192fc 
GPR24: 100321f0 00000000 00000000 c649e840 00000000 00000901 00000000 00000000 
NIP [c001acfc] add_preempt_count+0x48/0xac 
LR [c001ace4] add_preempt_count+0x30/0xac 
Call Trace: 
Instruction dump: 
409e0038 54290024 8009000c 2f800000 40bc0028 48133285 2f830000 419e0068 
3d20c037 8009d298 2f800000 409e0058 <0fe00000> 48000050 3d20c037 8009d130 
Unable to handle kernel paging request for instruction fetch 
Faulting instruction address: 0x00000000 
Oops: Kernel access of bad area, sig: 11 [#1] 
PREEMPT LTT NESTING LEVEL : 0 
ORION 
last sysfs file: /sys/devices/platform/gpio-keys-polled/input/input0/uevent 
NIP: 00000000 LR: 00000000 CTR: c01c7778 
REGS: c790f990 TRAP: 0400 Tainted: G  W (2.6.34.7-ELinOS-146-ipipe) 
MSR: 20009032 <EE,ME,IR,DR> CR: 28000484 XER: 20000000 
TASK = c3ba6cb0[71] 'udevd' THREAD: c78e0000 
GPR00: 00000000 c790fa40 c3ba6cb0 00000008 00000008 00000008 c7912804 c0348ba4 
GPR08: 00000047 c78a5414 00000000 00000004 28000482 10033420 10019a6c 00000000 
GPR16: 10019328 100194d4 100194c0 1002bad0 10019328 10019474 bfa35428 100192fc 
GPR24: 100321f0 00000000 c790f618 00200200 00000000 c790fa34 00200200 00000000 
NIP [00000000] (null) 
LR [00000000] (null) 
Call Trace: 
Instruction dump: 
XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX 
XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX 
Kernel panic - not syncing: Fatal exception in interrupt 
Call Trace: 
Rebooting in 180 seconds.. 
INFO: RCU detected CPU 0 stall (t=2500 jiffies) 
INFO: RCU detected CPU 0 stall (t=10000 jiffies) 
INFO: RCU detected CPU 0 stall (t=17500 jiffies) 
INFO: RCU detected CPU 0 stall (t=25000 jiffies) 
INFO: RCU detected CPU 0 stall (t=32500 jiffies) 
INFO: RCU detected CPU 0 stall (t=40000 jiffies) 
System Halted, OK to turn off power 
------------[ cut here ]------------ 
kernel BUG at /opt/elinos-5.1/linux/linux-ppc-2.6.34/mm/vmalloc.c:1228! 
Oops: Exception in kernel mode, sig: 5 [#2] 
PREEMPT LTT NESTING LEVEL : 0 
ORION 
last sysfs file: /sys/devices/platform/gpio-keys-polled/input/input0/uevent 
NIP: c009b0cc LR: c0013518 CTR: 00000000 
REGS: c790f7c0 TRAP: 0700 Tainted: G  D W (2.6.34.7-ELinOS-146-ipipe) 
MSR: 00029032 <EE,ME,CE,IR,DR> CR: 28000484 XER: 20000000 
TASK = c3ba6cb0[71] 'udevd' THREAD: c78e0000 
GPR00: 078fe000 c790f870 c3ba6cb0 00001000 00000001 00000001 c9000000 fddff000 
GPR08: ffffffff 000000d0 c001018c c790e000 48000488 10033420 10019a6c 00000000 
GPR16: 10019328 100194d4 100194c0 1002bad0 10019328 10019474 bfa35428 100192fc 
GPR24: c001018c 000000d0 00001000 ffffffff c9000000 fddff000 00000001 00000001 
NIP [c009b0cc] __get_vm_area_node+0x68/0x204 
LR [c0013518] __ioremap_caller+0x90/0x134 
Call Trace: 
Instruction dump: 
7c9e2378 93e1003c 7cbf2b78 90010044 9261000c 92810010 92a10014 92c10018 
92e1001c 93410028 800b000c 5400016e <0f000000> 70a00001 41820030 7c7e0034 
Kernel panic - not syncing: Fatal exception in interrupt 
Call Trace: 
Rebooting in 180 seconds..: 

任何人可以給我一些提示如何解決這個問題?我想要的是瞭解系統的哪個組件(即內存芯片等)導致此故障。我會很樂意聽到任何想法。謝謝。

+1

/opt/elinos-5.1/linux/linux-ppc-2.6.34/drivers/rtc/hctosys.c:無法打開rtc設備(rtc0)我認爲問題是這樣的! rtc(實時時鐘驅動程序)工作不正常,它可能是低溫影響其行爲? –

回答

0
  1. 所有OOPS /恐慌信息顯示的udevd背景下異常發生的,我想這可能觸發 「/ sbin目錄/ modprobe的的-bv:NioctlTCfsl,MPC5125-IOCTL」。 要驗證這一點,您可以刪除根文件系統中的「/ sbin/modprobe -bv:NioctlTCfsl,mpc5125-ioctl」條目,以查看系統是否可以成功啓動。

  2. 我猜你的平臺CPU是PowerPC架構。如果是這樣,異常向量是0x700,這意味着取指令異常。 CPU試圖從無效地址獲取一條指令。如果沒有跳轉/分支指令,指令流將增加。如果選項1被驗證與「/ sbin/modprobe」有關,請檢查內核模塊以分析取指令異常。

祝你好運!