首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

Unable to handle kernel paging 有关问题

2012-12-21 
Unable to handle kernel paging 问题求助在板子上刚刚加载驱动不到5秒就出现下面这中情况,请求高手解忧……

Unable to handle kernel paging 问题求助
在板子上刚刚加载驱动不到5秒就出现下面这中情况,请求高手解忧……
Unable to handle kernel paging request at virtual address e3c26018
pgd = c3d4c000
[e3c26018] *pgd=00000000
Internal error: Oops: 805 [#2]
Modules linked in: his_led hiether libphy
CPU: 0    Tainted: G      D  (2.6.24-rt1-hi3515v100 #1)
PC is at free_block+0xfc/0x174
LR is at 0x200200
pc : [<c0078f3c>]    lr : [<00200200>]    psr: 00000093
sp : c3c21ef0  ip : ffffffe0  fp : c3c21f24
r10: c3c083e0  r9 : 00000016  r8 : c3c0af20
r7 : c3c26000  r6 : c3c2601c  r5 : 00000019  r4 : 07ffffff
r3 : 00000000  r2 : 08000000  r1 : c03474c0  r0 : 07ffffff
Flags: nzcv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 0005317f  Table: c3d4c000  DAC: 00000017
Process events/0 (pid: 4, stack limit = 0xc3c20258)
Stack: (0xc3c21ef0 to 0xc3c22000)
1ee0:                                     00000000 00000018 c3c09c10 c3c09c00 
1f00: c3c09c10 00000018 00000000 c02be524 c02be530 c029793c c3c21f40 c3c21f28 
1f20: c0079050 c0078e50 c3c0af20 c3c083e0 00000000 c3c21f74 c3c21f44 c007a634 
1f40: c0078fc4 00000000 c004dc64 c3c01a00 c3c20000 c007a5ac c3c21fa8 c3c01a08 
1f60: 00000000 00000000 c3c21f90 c3c21f78 c00458f8 c007a5bc c3c173a0 c3c21fb8 
1f80: c3c01a00 c3c21fdc c3c21f94 c0045a10 c0045860 00000000 c3c173a0 c0049d48 
1fa0: c3c21fb4 c3c21fb4 00000000 c3c173a0 c0049d48 c3c21fb4 c3c21fb4 c004599c 
1fc0: fffffffc 00000000 00000000 00000000 c3c21ff4 c3c21fe0 c0049838 c00459ac 
1fe0: 00000000 00000000 00000000 c3c21ff8 c0037d64 c00497e0 00000000 00000000 
Backtrace: 
[<c0078e40>] (free_block+0x0/0x174) from [<c0079050>] (drain_array+0x9c/0xd0)
[<c0078fb4>] (drain_array+0x0/0xd0) from [<c007a634>] (cache_reap+0x88/0x148)
 r6:00000000 r5:c3c083e0 r4:c3c0af20
[<c007a5ac>] (cache_reap+0x0/0x148) from [<c00458f8>] (run_workqueue+0xa8/0x14c)
[<c0045850>] (run_workqueue+0x0/0x14c) from [<c0045a10>] (worker_thread+0x74/0xd0)
 r6:c3c01a00 r5:c3c21fb8 r4:c3c173a0
[<c004599c>] (worker_thread+0x0/0xd0) from [<c0049838>] (kthread+0x68/0x94)
 r8:00000000 r7:00000000 r6:00000000 r5:fffffffc r4:c004599c
[<c00497d0>] (kthread+0x0/0x94) from [<c0037d64>] (do_exit+0x0/0x790)
 r5:00000000 r4:00000000
Code: e587e004 e59a2014 e084329c e1a00004 (e7865100) 
---[ end trace 9c3e20c417336a74 ]---
------最佳解决方案--------------------


我问了导师他说是
[<c0078e40>] (free_block+0x0/0x174) from [<c0079050>] (drain_array+0x9c/0xd0)
这个函数里面有空指针,要你在这个函数里面狂家打印语句,检查以下那里出现了空指针
[其他解释]
PC is at free_block+0xfc/0x174
从板子的Backtrace来看,你有没有用到中断的底半部,具体就是workqueue的方式?可以检查一下
[其他解释]
可能是ddr不稳定造成的,检查一下。
[其他解释]
这种一般是由于内核中访问非法地址引起的。。。

比如访问某个虚拟地址,但是这个虚拟地址却在页表里面找不到对应映射,就出现无法处理你这个虚拟地址访问请求。

一般解决方法是:检查多有访问的虚拟地址是否在之前正确映射。
[其他解释]

引用:
我问了导师他说是
[<c0078e40>] (free_block+0x0/0x174) from [<c0079050>] (drain_array+0x9c/0xd0)
这个函数里面有空指针,要你在这个函数里面狂家打印语句,检查以下那里出现了空指针

+++
[其他解释]
搞不懂,硬件检查也事,希望大家多给点观点……
[其他解释]
上面代码都是海思的源码,在他们的demo板上没事,与demo板一样的原理图和IC器件的一块板子就有问题了,应该程序不会有错吧。
[其他解释]
ko文件都是海思提供的,在他们的demo板上怎么运行都没问题呀,我公司做的主板和他们提供的原理图和IC都一样,应该代码不会有问题的吧……,只有多做几块板子看看了!
[其他解释]
问题解决了吗?分享一下。。。
[其他解释]
没有解决,等其余的板子做出来,好对比,我手里一块板子不好处理,应该是硬件问题!
[其他解释]
经过验证,是内核的问题,但不知道内核具体哪里出了问题

热点排行