平台模型:
测试平台驱动的时候,探测函数 probe出错
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c3a48000[00000000] *pgd=339a5031, *pte=00000000, *ppte=00000000
Internal error: Oops: 17 [#1]
last sysfs file: /sys/devices/virtual/vc/vcs3/dev
Modules linked in: adc_driver(+)
CPU: 0 Not tainted (2.6.32.2-FriendlyARM #11)
PC is at xyd_probe+0x30/0x148 [adc_driver]
LR is at xyd_probe+0x2c/0x148 [adc_driver]
pc : [<bf000260>] lr : [<bf00025c>] psr: 60000013
sp : c3a1be00 ip : c3a1be00 fp : c3a1be1c
r10: bf0004f0 r9 : c04b9fd8 r8 : c046c660
r7 : c018552c r6 : bf0004f0 r5 : c04573c0 r4 : 00000000
r3 : 60000013 r2 : 00000000 r1 : 00000200 r0 : 00000000
Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
测试ADC平台驱动的时候,出现以上错误。
从上面红色字中可以看出,出错的原因是因为空指针的指向出错。
而且是在修改探测函数之后发生的错误,然后锁定探测函数中的资源除了问题
platform_get_resource(pdev, IORESOURCE_MEM, 0);
后来发现是设备资源出了问题,就是设备资源的.start 和.end的内容出问题。
修改之后,问题解决。