블로그 이미지
stluck

Notice

Recent Post

Recent Comment

Recent Trackback

Archive

calendar

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
  • total
  • today
  • yesterday
2009. 10. 12. 03:19 Cad Lab./Embedded

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
posted by stluck