驱动加载运行出错..........

ling1874 2010-05-21 03:40:30
最近一直在移植usb host驱动,从2.6.34移植到2.6.20
为了便于调试,我只先一步步移植非常基础的几部 但是一个错误 困扰了我很久,
这些错误发生在/usb/core/hcd.c 中,这些核心代码,我是一点都没有动的,有知道的可以指点一下,错误在哪里找出来呢。根据我具体的跟踪发现时出现在 get_hub_descriptor中的usb_control_msg函数中,但是与错误提示没有一点干系啊?
LR is at hcd_submit_urb+0x5a4/0x788 下一步也不会是这个啊。。。。。。。


usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub_configure strart
get_hub_descriptor strart
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c1e44000
[00000000] *pgd=21ee7031, *pte=00000000, *ppte=00000000
Internal error: Oops: 0 [#1]
Modules linked in: isp1362_hcd wireless power_protect cpuInfo bat_dect esf mcr ltpa245 beep
CPU: 0
PC is at __init_begin+0x3fff8000/0x34
LR is at hcd_submit_urb+0x5a4/0x788
pc : [<00000000>] lr : [<c0155a24>] Not tainted
sp : c1e9ba88 ip : bf0c89d0 fp : c1e9bb38
r10: 00000002 r9 : c1eb22c0 r8 : 0000000d
r7 : c1eb9400 r6 : 00000000 r5 : c1c2c980 r4 : 0000000d
r3 : 00000000 r2 : 00002900 r1 : 0000a006 r0 : c1eb9400
Flags: nZCv IRQs on FIQs on Mode SVC_32 Segment user
Control: 717F Table: 21E44000 DAC: 00000015
Process insmod (pid: 760, stack limit = 0xc1e9a198)
Stack: (0xc1e9ba88 to 0xc1e9c000)
ba80: c1e9bb00 0000000d 00000000 00000000 c1e9bb00 c1e9bac0
baa0: c1e9baac c003c194 00000011 c02576c4 c1e9bad8 c1e9bac0 c0043dcc c0043cbc
bac0: 00000000 c02574e4 c1e9a000 c1e9bae8 c1e9badc c0043f2c c0043d1c c1e9bb00
bae0: c1e9baec c0039ff0 c0043f18 00000001 c021322c c1e9bb1c c1e9bb04 c0035028
bb00: c0126210 0000188b c02070e8 60000013 c1c2c980 00000002 c1f2ac00 00000000
bb20: c02159b8 00000001 00000010 c1e9bb60 c1e9bb3c c0156c14 c0155490 c1eb22a0
bb40: c1c2c980 00001388 c1e9bbb0 c1e9bb80 00000000 c1e9bbac c1e9bb64 c0156e28
bb60: c01569a8 c001f9e4 c0020dc0 318dfcd9 c03c0b48 c1e9bb98 c1e9bb84 c015690c
bb80: 00000000 c1e9bb84 c1e9bb84 c1eb22a0 0000000d fffffff4 c1f2ac00 80000180
...全文
80 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ling1874 2010-05-24
  • 打赏
  • 举报
回复
问题得以解决,是某一个指针函数我没有关联,
从2.6.34移植也是没有办法,需要修改的地方非常之多,但是2.6.20没有我的hcd芯片的驱动
帅得不敢出门 2010-05-21
  • 打赏
  • 举报
回复
哪个参数为空
或者是从某个寄存器获取的值不正常(为空)
导致的?

这种问题8分靠猜
曹大夯 2010-05-21
  • 打赏
  • 举报
回复
这个Kernel panic还是比较清楚的:系统的整个调用顺序如下:
(isp1362_hcd模块)
get_hub_descriptor() -> usb_control_msg() -> hcd_submit_urb()

在hcd_submit_urb()时候,oops了。

BTW: 从2.6.34移植到2.6.20,为什么要这么做呢,2.6.20有什么不满足要求的么?还是你用的HCD芯片没有2.6.20 的驱动?
个人觉得,这种移植风险很高,工作量不好评估。


guan323333 2010-05-21
  • 打赏
  • 举报
回复
我只是来刷分的

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧