我尝试在 Linux Kernel 3.3.7 中实现一种新的调度算法并在 BeagleBoard 上启动它。但是,它会引发诸如“内核恐慌 - 不同步:中断中的致命异常”之类的错误。我启用了低级调试功能,调试信息如下:
[ 0.000000] ------------[ cut here ]------------
[ 0.000000] WARNING: at kernel/lockdep.c:2592 do_vfp+0x8/0x20()
[ 0.000000] Modules linked in:
[ 0.000000] [<c001c2ec>] (unwind_backtrace+0x0/0x130) from [<c0045afc>] (warn_slow)
[ 0.000000] [<c0045afc>] (warn_slowpath_common+0x4c/0x64) from [<c0045b30>] (warn_)
[ 0.000000] [<c0045b30>] (warn_slowpath_null+0x1c/0x24) from [<c000f328>] (do_vfp+)
[ 0.000000] ---[ end trace 1b75b31a2719ed1c ]---
[ 0.000000] Error before arm_notify_die- GDEM-UPM
[ 0.000000] Internal error: Oops - undefined instruction: 0 [#1] SMP
[ 0.000000] Modules linked in:
[ 0.000000] CPU: 0 Tainted: G W (3.3.0-rc7-00008-g8bd3d32-dirty #5)
[ 0.000000] PC is at update_curr+0x4/0x5d0
[ 0.000000] LR is at task_tick_fair+0x3c/0x154
[ 0.000000] pc : [<c0079ac0>] lr : [<c007a274>] psr: 800001d3
[ 0.000000] sp : c0699e2c ip : c0698000 fp : c0699ea4
[ 0.000000] r10: 00000000 r9 : c0723748 r8 : 00000000
[ 0.000000] r7 : 00000000 r6 : c06b4630 r5 : c0e083e8 r4 : c0e08380
[ 0.000000] r3 : c007a238 r2 : c06b2108 r1 : c06b4668 r0 : c0e083e8
[ 0.000000] Flags: Nzcv IRQs off FIQs off Mode SVC_32 ISA ARM Segment kernel
[ 0.000000] Control: 10c5387d Table: 80004019 DAC: 00000017
[ 0.000000] Process swapper/0 (pid: 0, stack limit = 0xc06982f8)
[ 0.000000] Stack: (0xc0699e2c to 0xc069a000)
[ 0.000000] 9e20: c0e08380 c0e083e8 c06b4630 00000000 00
[ 0.000000] 9e40: c0723748 00000000 c0699ea4 c007a274 00000002 c06b4630 00000000 00
[ 0.000000] 9e60: c0723748 c06b4668 600001d3 c0e08380 00000000 c06b4630 00000000 00
[ 0.000000] 9e80: c0723748 00000000 c0699ea4 c00755f0 c0698000 c06b4630 00000000 00
[ 0.000000] 9ea0: c072375c c0055288 00000000 00000000 c069a144 00000000 00000000 c0
[ 0.000000] 9ec0: c06b7bc0 c069e954 c06b7b40 c002713c 00000000 c008b084 00000000 cc
[ 0.000000] 9ee0: 00000000 c06b7bc0 c069e954 0000005f c002713c 00000000 00000000 c0
[ 0.000000] 9f00: 00000000 c00a449c 411fc083 00000000 600001d3 c069e900 c069e954 c0
[ 0.000000] 9f20: c069e954 c06b7bc0 0000005f 00000000 411fc083 00000000 00000000 c8
[ 0.000000] 9f40: c069e900 c069e954 00000001 c00a6b9c c06b2108 c06960e0 c0698000 c0
[ 0.000000] 9f60: 000001da c00155f8 fa200000 c0699f90 ffffffff c0699fc4 80004059 cc
[ 0.000000] 9f80: c06b4630 c06486d4 20000153 c0483e24 00000000 00000001 01ffffff c4
[ 0.000000] 9fa0: 600001d3 c067925c c0e03980 c06b5e14 80004059 411fc083 00000000 00
[ 0.000000] 9fc0: 00000001 c0699fd8 00000001 c06486d4 20000153 ffffffff c06481c4 00
[ 0.000000] 9fe0: 00000000 c067925c 10c53c7d c06b0cc0 c067922c 80008044 00000000 00
[ 0.000000] unwind: Unhandled instruction c9
[ 0.000000] Code: c0491260 c0491264 c04911b4 e92d4ff0 (ed2d8b02)
[ 0.000000] ---[ end trace 1b75b31a2719ed1d ]---
[ 0.000000] Kernel panic - not syncing: Fatal exception in interrupt`
知道错误在哪里吗?是否有任何调试工具(可能是 KGDB)可用于在内核启动之前对其进行调试?
谢谢!