2017-08-24 33 views
0

我已经将rpi作为参考并尝试将内核引导到我们的定制板,通过除去UART和中断控制器之外的所有外围设备来修改“dts”文件将rpi板的基地址更改为我们的板特定地址。无法在虚拟地址处理内核寻呼请求...自定义板

Seeting的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) 

请帮助我,在此先感谢。

回答

0

似乎在过程__vic_init中的中断上下文中发生了问题。此过程试图访问虚拟地址48000fe0。

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

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