无法在虚拟地址处理内核分页请求...自定义板

时间:2017-08-24 05:02:28

标签: linux linux-kernel

我已经将rpi作为参考并尝试将内核启动到我们的自定义板,修改了" dts"通过将rpi板的基地址更改为我们的板特定地址,删除除UART和中断控制器之外的所有外设。

按如下方式转发env变量,

$ setenv initrd 0xc3000000;setenv initrd_high 0xc4000000;setenv fdt_high 0xc1001000;setenv fdt_addr_r 0xc1000000


$ setenv bootargs earlyprintk console=ttyAMA0 mem=128M noinitrd root=/dev/mtdblock3 rw rootfstype=jffs2 rw init=/sbin/init

这是我们得到的错误日志......

 SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1




[    0.000000] NR_IRQS:16 nr_irqs:16 16




[    0.000000] Unable to handle kernel paging request at virtual address 48000fe0
[    0.000000] pgd = c0004000




[    0.000000] [48000fe0] *pgd=00000000




[    0.000000] Internal error: Oops: 5 [#1] ARM




[    0.000000] Modules linked in:




[    0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 4.9.22+ #81




[    0.000000] Hardware name: BCM2835





[    0.000000] task: c0497f58 task.stack: c0494000





[    0.000000] PC is at __vic_init+0x3c/0x178





[    0.000000] LR is at 0x48000fe0






[    0.000000] pc : [<c0473b74>]    lr : [<48000fe0>]    psr: a00000d3






[    0.000000] sp : c0495f50  ip : 00000000  fp : c0495f7c





[    0.000000] r10: 00000001  r9 : 410fb767  r8 : 48000000






[    0.000000] r7 : 00000000  r6 : 00000000  r5 : ffffffff  r4 : 00000000





[    0.000000] r3 : 48000fe0  r2 : 00000000  r1 : 00000000  r0 : 00000000







[    0.000000] Flags: NzCv  IRQs off  FIQs off  Mode SVC_32  ISA ARM  





Segment user
[    0.000000] Control: 00c5387d  Table: c0004008  DAC: 00000055





[    0.000000] Process swapper (pid: 0, stack limit = 0xc0494188)





[    0.000000] Stack: (0xc0495f50 to 0xc0496000)

请帮助我,提前致谢。

1 个答案:

答案 0 :(得分:0)

似乎过程__vic_init中的中断上下文中出现的问题。此过程尝试访问虚拟地址48000fe0。

顺便说一下 - 你确定这是从dmesg获取的完整的calltrace吗? 如果这只是从dmesg获取的片段 - 将整个calltrace放在这里。

如果你有这个程序的来源__vic_init你可以调试它 - 我的意思是找到源文件中的行号并进行进一步的调试。