Linux内核BUG

内核调试方法
内核空指针错误
Unable to handle kernel NULL pointer dereference at virtual address 00000000
[    1.155000] pgd = c0004000
[    1.155000] [00000000] *pgd=00000000
[    1.160000] Internal error: Oops: 805 [#1] PREEMPT SMP ARM
[    1.165000] Modules linked in:
[    1.170000] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.14.0 #33
[    1.175000] task: ee8a0000 ti: ee8a4000 task.ti: ee8a4000
[    1.180000] PC is at s5pv210_led_init+0x18/0x180 //定义是否是行和列
[    1.185000] LR is at do_one_initcall+0x30/0x144
[    1.190000] pc : [<c0222f5c>]    lr : [<c00087b4>]    psr: 60000153
[    1.190000] sp : ee8a5ef8  ip : c0527350  fp : 00000000
[    1.200000] r10: c04be4fc  r9 : c04f3470  r8 : c0222f44
[    1.205000] r7 : c052eec0  r6 : c04e07f4  r5 : 00000000  r4 : ee8a4000
[    1.210000] r3 : 000000ff  r2 : c0459148  r1 : 00000001  r0 : 1f400000
[    1.220000] Flags: nZCv  IRQs on  FIQs off  Mode SVC_32  ISA ARM  Segment kernel
[    1.225000] Control: 10c5387d  Table: 4000404a  DAC: 00000015
[    1.230000] Process swapper/0 (pid: 1, stack limit = 0xee8a4240)
[    1.240000] Stack: (0xee8a5ef8 to 0xee8a6000)

查找PC寄存器的地址

这里是:0xc0222f5c

arm-none-linux-gnueabi-addr2line 0xc0222f5c -e vmlinux -f //通过该命令可以定位到问题在内核中的哪个文件及行号

arm-none-linux-gnueabi-objdump -D vmlinux > err.dis
(objdump是反汇编命令 因此必须加交叉编译工具,addr2line则不需要)
err.dis 文件中查找 PC寄存器的值
后面的汇编指令
str r3,[r5]
r3 : 000000ff  r5 : 00000000

去源代码中查找c0222f44 <s5pv210_led_init>:
0xff 就定位到了问题


内核移植
移植思想:
1、确定架构arm 单板exynos-fs4412
2、交叉编译
3、选配(支持NFS 网络等) 编译
4、烧写测试 查看串口是否正常输出
5、设备树移植
具体操作:
1、cp arch/arm/configs/exynos_defconfig .config
2、最优做法:将ARCH=arm  CROSS_COMPILE=arm-none-linux-gnueabi- 写入Makefile

也可以make menuconfig ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
3、make menuconfig
选配:
NFS支持
IPV4支持
DM9000支持
4、make uImage
5、烧写测试
6、clk_ignore_unused = true (drivers/clk/clk.c中修改)

设备树 (网卡驱动移植)
查看原理图查找网络DM9000 中断gpx0_6
总线 SROMC 地址0x5000000



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云镛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值