USB Core만 활성화 시켰을 때는 문제가 없었으나,,
HID를 사용하기 위해 OHCI 드라이버를 enable 하자 아래와 같은 메지지가 한참 나오고 나서야
USB 장치가 동작하였다. 그것도 아주 느린 반응 속도로;;;
다시 뺐다가 끼우면 정상적으로 동작하는 경우로써;;
에러 처음 문장에서 나오듯이 IRQ 문제인듯;;;
======================================================================================
irq26: nobody cared
Pid: 0, comm: swapper
CPU: 0
PC is at default_idle+0x84/0x94
LR is at default_idle+0x78/0x94
pc : [<c0044bd0>] lr : [<c0044bc4>] Not tainted
sp : c0255f98 ip : c0255f98 fp : c0255fa4
r10: 3001e46c r9 : 41129200 r8 : 3001e49c
r7 : c02c6854 r6 : c0257d1c r5 : c0254000 r4 : c0044b4c
r3 : 60000013 r2 : f0500000 r1 : 00000032 r0 : c003c1e0
Flags: nZCv IRQs on FIQs on Mode SVC_32 Segment kernel
Control: C000717F Table: 32B90000 DAC: 00000017
[<c00449d0>] (show_regs+0x0/0x50) from [<c0043da0>] (report_bad_irq+0x6c/0xcc)
r4 = C0255F50
[<c0043d34>] (report_bad_irq+0x0/0xcc) from [<c0043e84>] (do_level_IRQ+0x84/0xc0)
r5 = 0000001A r4 = C02A7428
[<c0043e00>] (do_level_IRQ+0x0/0xc0) from [<c00440b0>] (asm_do_IRQ+0x4c/0x108)
r6 = C0255F50 r5 = F0000000 r4 = FFFFFFFF
[<c0044064>] (asm_do_IRQ+0x0/0x108) from [<c00427c4>] (__irq_svc+0x24/0x60)
r6 = 00000001 r5 = F0000000 r4 = FFFFFFFF
[<c0044b4c>] (default_idle+0x0/0x94) from [<c00449b4>] (cpu_idle+0x3c/0x58)
[<c0044978>] (cpu_idle+0x0/0x58) from [<c0042260>] (rest_init+0x24/0x2c)
r5 = C02A6A9C r4 = C02B1500
[<c004223c>] (rest_init+0x0/0x2c) from [<c0008998>] (start_kernel+0x168/0x1b4)
[<c0008830>] (start_kernel+0x0/0x1b4) from [<30008094>] (0x30008094)
[<c0047ae8>] (dump_stack+0x0/0x14) from [<c0043da4>] (report_bad_irq+0x70/0xcc)
[<c0043d34>] (report_bad_irq+0x0/0xcc) from [<c0043e84>] (do_level_IRQ+0x84/0xc0)
r5 = 0000001A r4 = C02A7428
[<c0043e00>] (do_level_IRQ+0x0/0xc0) from [<c00440b0>] (asm_do_IRQ+0x4c/0x108)
r6 = C0255F50 r5 = F0000000 r4 = FFFFFFFF
[<c0044064>] (asm_do_IRQ+0x0/0x108) from [<c00427c4>] (__irq_svc+0x24/0x60)
r6 = 00000001 r5 = F0000000 r4 = FFFFFFFF
[<c0044b4c>] (default_idle+0x0/0x94) from [<c00449b4>] (cpu_idle+0x3c/0x58)
[<c0044978>] (cpu_idle+0x0/0x58) from [<c0042260>] (rest_init+0x24/0x2c)
r5 = C02A6A9C r4 = C02B1500
[<c004223c>] (rest_init+0x0/0x2c) from [<c0008998>] (start_kernel+0x168/0x1b4)
[<c0008830>] (start_kernel+0x0/0x1b4) from [<30008094>] (0x30008094)
handlers:
[<c0186904>] (usb_hcd_irq+0x0/0x90)
irq26: nobody cared
Pid: 0, comm: swapper
CPU: 0
PC is at __do_irq+0x34/0x8c
LR is at do_level_IRQ+0x6c/0xc0
pc : [<c0043bb0>] lr : [<c0043e6c>] Not tainted
sp : c0255e28 ip : c0255e50 fp : c0255e4c
r10: 3001e46c r9 : 41129200 r8 : c0255eb0
r7 : 00000030 r6 : c0255eb0 r5 : 00000030 r4 : c03cfea0
r3 : 40000013 r2 : c0255eb0 r1 : c03cfea0 r0 : 00000030
Flags: nZcv IRQs on FIQs on Mode SVC_32 Segment kernel
Control: C000717F Table: 32B90000 DAC: 00000017
[<c00449d0>] (show_regs+0x0/0x50) from [<c0043da0>] (report_bad_irq+0x6c/0xcc)
r4 = C0255DE0
[<c0043d34>] (report_bad_irq+0x0/0xcc) from [<c0043e84>] (do_level_IRQ+0x84/0xc0)
r5 = 0000001A r4 = C02A7428
[<c0043e00>] (do_level_IRQ+0x0/0xc0) from [<c00440b0>] (asm_do_IRQ+0x4c/0x108)
r6 = C0255DE0 r5 = F0000000 r4 = FFFFFFFF
[<c0044064>] (asm_do_IRQ+0x0/0x108) from [<c00427c4>] (__irq_svc+0x24/0x60)
r6 = 00000001 r5 = F0000000 r4 = FFFFFFFF
[<c0043b7c>] (__do_irq+0x0/0x8c) from [<c0043e6c>] (do_level_IRQ+0x6c/0xc0)
r8 = 3001E49C r7 = C02C6854 r6 = C0255EB0 r5 = 00000030
r4 = C02A78A0
[<c0043e00>] (do_level_IRQ+0x0/0xc0) from [<c004ce40>] (s3c_irq_demux_subirq+0x5c/0x68)
r6 = C0255EB0 r5 = F0000000 r4 = C0255EB0
[<c004cde4>] (s3c_irq_demux_subirq+0x0/0x68) from [<c00440b0>] (asm_do_IRQ+0x4c/0x108)
r4 = FFFFFFFF
[<c0044064>] (asm_do_IRQ+0x0/0x108) from [<c00427c4>] (__irq_svc+0x24/0x60)
r6 = 00000001 r5 = F0000000 r4 = FFFFFFFF
[<c00579f8>] (__do_softirq+0x0/0xe0) from [<c0057d60>] (irq_exit+0x44/0x4c)
r6 = C0255F50 r5 = F0000000 r4 = FFFFFFFF
[<c0057d1c>] (irq_exit+0x0/0x4c) from [<c0044154>] (asm_do_IRQ+0xf0/0x108)
[<c0044064>] (asm_do_IRQ+0x0/0x108) from [<c00427c4>] (__irq_svc+0x24/0x60)
r6 = 00000001 r5 = F0000000 r4 = FFFFFFFF
[<c0044b4c>] (default_idle+0x0/0x94) from [<c00449b4>] (cpu_idle+0x3c/0x58)
[<c0044978>] (cpu_idle+0x0/0x58) from [<c0042260>] (rest_init+0x24/0x2c)
r5 = C02A6A9C r4 = C02B1500
[<c004223c>] (rest_init+0x0/0x2c) from [<c0008998>] (start_kernel+0x168/0x1b4)
[<c0008830>] (start_kernel+0x0/0x1b4) from [<30008094>] (0x30008094)
[<c0047ae8>] (dump_stack+0x0/0x14) from [<c0043da4>] (report_bad_irq+0x70/0xcc)
[<c0043d34>] (report_bad_irq+0x0/0xcc) from [<c0043e84>] (do_level_IRQ+0x84/0xc0)
r5 = 0000001A r4 = C02A7428
[<c0043e00>] (do_level_IRQ+0x0/0xc0) from [<c00440b0>] (asm_do_IRQ+0x4c/0x108)
r6 = C0255DE0 r5 = F0000000 r4 = FFFFFFFF
[<c0044064>] (asm_do_IRQ+0x0/0x108) from [<c00427c4>] (__irq_svc+0x24/0x60)
r6 = 00000001 r5 = F0000000 r4 = FFFFFFFF
[<c0043b7c>] (__do_irq+0x0/0x8c) from [<c0043e6c>] (do_level_IRQ+0x6c/0xc0)
r8 = 3001E49C r7 = C02C6854 r6 = C0255EB0 r5 = 00000030
r4 = C02A78A0
[<c0043e00>] (do_level_IRQ+0x0/0xc0) from [<c004ce40>] (s3c_irq_demux_subirq+0x5c/0x68)
r6 = C0255EB0 r5 = F0000000 r4 = C0255EB0
[<c004cde4>] (s3c_irq_demux_subirq+0x0/0x68) from [<c00440b0>] (asm_do_IRQ+0x4c/0x108)
r4 = FFFFFFFF
[<c0044064>] (asm_do_IRQ+0x0/0x108) from [<c00427c4>] (__irq_svc+0x24/0x60)
r6 = 00000001 r5 = F0000000 r4 = FFFFFFFF
[<c00579f8>] (__do_softirq+0x0/0xe0) from [<c0057d60>] (irq_exit+0x44/0x4c)
r6 = C0255F50 r5 = F0000000 r4 = FFFFFFFF
[<c0057d1c>] (irq_exit+0x0/0x4c) from [<c0044154>] (asm_do_IRQ+0xf0/0x108)
[<c0044064>] (asm_do_IRQ+0x0/0x108) from [<c00427c4>] (__irq_svc+0x24/0x60)
r6 = 00000001 r5 = F0000000 r4 = FFFFFFFF
[<c0044b4c>] (default_idle+0x0/0x94) from [<c00449b4>] (cpu_idle+0x3c/0x58)
[<c0044978>] (cpu_idle+0x0/0x58) from [<c0042260>] (rest_init+0x24/0x2c)
r5 = C02A6A9C r4 = C02B1500
[<c004223c>] (rest_init+0x0/0x2c) from [<c0008998>] (start_kernel+0x168/0x1b4)
[<c0008830>] (start_kernel+0x0/0x1b4) from [<30008094>] (0x30008094)
handlers:
[<c0186904>] (usb_hcd_irq+0x0/0x90)
==========================================================================================
커널을 자세히 알지 못하기 때문에 ㅠ.ㅠ
땜빵하였다 -_-;; 일단 되게 만드는게 우선이니깐 ^^;;
File : drivers/usb/core/hcd.c (2.6.16기준 1655 Line)
if (hcd->driver->irq (hcd, r) == IRQ_NONE)
//return IRQ_NONE; original
return IRQ_HANDLED;
리턴 값을 IRQ_HANDLED 로 주면 된다.
'Cad Lab. > Embedded' 카테고리의 다른 글
Nand bad block? (0) | 2009.10.04 |
---|