硬件背景:
CPU : pxa255b
kernel: Linux2.4.18
touch screen
USB-Host Controller: cypress 的 SL811HST
开发要求是这样:
原来的PXA255B没有USB-Host控制器,因为有此需求,所以要加上一个UHC 我选择了上面的主控器件. 刚开始用鼠标做实验,出现很多问题,不过都已经解决,现在鼠标能够正常使用,但是当我插上优盘的时候出现了如下的错误:
usb.c: the registered device number is 2
hub.c: USB new device connect on bus1/1, assigned device number 2
usb_control/bulk_msg: timeout
usb.c: USB device not accepting new address=2 (error=-110)
Unable to handle kernel NULL pointer dereference at virtual address 0000002c
pgd = c3ac0000
*pgd = 00000000, *pmd = 00000000
Internal error: Oops: 0
CPU: 0
pc : [<c693135c>] lr : [<00000000>] Not tainted
sp : c3ac7e00 ip : 00000002 fp : c3ac7e4c
r10: c3ac7e50 r9 : 00000000 r8 : 00000008
r7 : 00000000 r6 : c37e3000 r5 : c3a2d9c0 r4 : 00000001
r3 : 00000004 r2 : 00000000 r1 : 00000028 r0 : c37e3060
Flags: nZCv IRQs on FIQs on Mode SVC_32 Segment user
Control: 397F Table: A3AC0000 DAC: 00000015
Process syslogd (pid: 45, stackpage=c3ac7000)
Stack: (0xc3ac7df0 to 0xc3ac8000)
7de0: 00000000 c693135c 60000013 ffffffff
7e00: 00000000 c3ac6000 00000000 00000000 00000001 00000000 c00a8154 00000000
7e20: c3e4fce5 c69338d8 c37e3000 00000000 c02345b8 c0234218 c3ac7ee4 c023ca40
7e40: c3ac7e6c c3ac7e50 c693276c c6931254 00000000 c3e4fb60 0000001d 00000000
7e60: c3ac7e98 c3ac7e70 c0065f68 c69325d4 00000080 00000007 c3ac7ee4 c0234258
7e80: c0234218 c3ac7ee4 c023ca40 c3ac7eb4 c3ac7e9c c006cfe4 c0065eb8 c0222f38
7ea0: 00000002 20000000 c3ac7ee0 c3ac7eb8 c0065f68 c006cf68 c3ac7f18 f8d00000
7ec0: 00000100 c006c674 80000013 ffffffff 00000000 c3ac7f48 c3ac7ee4 c0065300
7ee0: c0065eb8 40016dc0 40017000 00000001 00001000 c3ac6000 40016000 c001b3a0
7f00: 40017000 00001000 00000000 00000000 c3ac7f48 c3ac7f4c c3ac7f2c c00820b4
7f20: c006c674 80000013 ffffffff c3a5f860 40016000 c001b3a0 40016000 c3ac7f84
7f40: c3ac7f4c c0084958 c0082060 0aac7f8c 00001000 c3a5f800 c3ad8240 c001b3a0
7f60: 00001000 40016000 c001b3bc c0065824 c3ac6000 401342fc c3ac7fa4 c3ac7f88
7f80: c0084a24 c0084720 bfffec60 00000000 bfffed2c 0000005b 00000000 c3ac7fa8
7fa0: c00656a0 c00849f4 bfffec60 c006b488 40016000 00001000 40016000 fbad2cc4
7fc0: bfffec60 00000000 bfffed2c 0201bfd0 00000000 40133c88 401342fc bfffeb70
7fe0: bfffeb74 bfffeb58 40091c18 400e8724 60000010 40016000 00000000 00000000
Backtrace:
Function entered at [<c6931248>] from [<c693276c>]
Function entered at [<c69325c8>] from [<c0065f68>]
r6 = 00000000 r5 = 0000001D r4 = C3E4FB60
Function entered at [<c0065eac>] from [<c006cfe4>]
Function entered at [<c006cf5c>] from [<c0065f68>]
r6 = 20000000 r5 = 00000002 r4 = C0222F38
Function entered at [<c0065eac>] from [<c0065300>]
Function entered at [<c0082054>] from [<c0084958>]
r7 = 40016000 r6 = C001B3A0 r5 = 40016000 r4 = C3A5F860
Function entered at [<c0084714>] from [<c0084a24>]
Function entered at [<c00849e8>] from [<c00656a0>]
r7 = 0000005B r6 = BFFFED2C r5 = 00000000 r4 = BFFFEC60
Code: 13a03000 e2811028 e1a027a2 e202200f (e7913003)
Kernel panic: Aiee, killing interrupt handler!
In interrupt handler - not syncing
然后系统就死掉, 看错误信息好像是中断处理程序有问题,我用示波器也看到中断信号在系统崩溃时开始一直处于高电平,就是不知道为什么会有这种现象,我用鼠标的时候就不会出现啊!另外有人说我的内核不支持Fat16的文件系统,可是我编译内核的时候已经选择支持了,还有就是在调试鼠标的时候,USB device not accepting new address这种现象也出现过,并不是别的scsi或者PCI总线占用了我的中断,再说现在鼠标能正常使用,说明这个假设更加不存在,那到底是什么原因呢?
找遍了各个地方没找到对策,实在不知道这个问题该怎么解决,还请高手不吝赐教! |