arm92xx的中断问题

发布于 2022-09-28 16:24:19 字数 8886 浏览 13 评论 0

当前通过gpio实现一个中断,用来驱动一个LED状态灯,嵌入式Linux正常启动后,测试中断是否成功,灯状态表明中断请求可行,但会输出一些寄存信息(如下),且输出这些信息时系统其它进程应该是停止一下(用两根线短接的方法来实现中断,两根线短接的时候就会出现这些信息,而我在目标板上有一另一个LED灯阵列在做规则变化,短接时就会停顿一下.但经过多次短接中断后,此种情况就会消失),所以请教各位.帮忙分析一下.谢谢.

  1. LR is at default_idle+0x40/0x54/0x14c) from [<c001e0         
  2. pc : [<c002055c>]    lr : [<c0020550>]    Not tainteddo_simple_IRQ+0x0/0x70) from [<c0029374>] (gpio_irq_h
  3. sp : c01a9f9c  ip : c01a9fac  fp : c01a9fa8                                          
  4. r10: 2001a5bc  r9 : 41069265  r8 : 2001a5ecr5 : c01a8000  r4 : c0020510:9fa8         
  5. r7 : c0204c48  r6 : c01f3868  r5 : c01a8000  r4 : c0020510[<c002056         
  6. x90)cpu_        
  7. r6 = 00000001  r5 = C
  8. r3 : 60000013  r2 : 0005217f  r1 : 0005317f  r0 : 00000000                                          
  9. PC is at defau
  10. Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  Segment kernel                                                         
  11. 0)  
  12. r5 = 00000069  r4 = C01EB138                             
  13. [<c001f9ac>] (do_simple_IRQ+0x0/0x70) from [<c0029374>] (gpio_irq_handler+0x68/0                                          
  14. [<c0020510>] (default_idle+0x0/0x54)
  15. x90) [<c
  16. r6 = 00000001  r5 = C01EB138  r4 = 0000006A                                            
  17. [<c002930c>] (gpio_irq_handler+0x0/0x90) from [<c001fc54>] (asm_do_IRQ+0x50/0x140)  r4 = 000000                                            
  18. [<c001f85         
  19. [
  20. c)02
  21. [<c001fc04>] (asm_do_IRQ+0x0/0x14c) from [<c001e                                             
  22. r5 = C01E979C  r4 = 00000000                           
  23. [<c001e000>] (__init_end+0x0/0x2c) from [<c000896c>] (start_kernel+0x174/0x1bc)                                             
  24. pc : [<c002055c>]    lr : [<c002
  25. [<c00087f8>] (start_kernel+0x0/0x1bc) from [<20008094>] (0x20008094) from                                                               
  26. [<c0023a84>] (dump_stack+0x0/0x14) from [<c001f8c8>] (report_bad_irq+0x70/0xcc)01a9fa8 Table: 236BC000  DAC: 00000017= 00000001                              
  27. [<c001f858>] (report_bad_irq+0x0/0xcc) from [<c001fa14>] (do_simple_IRQ+0x68/0x75  r8 : 2001a5ec0>] (show_regs+0x0/0x4c) from [<c001f                           
  28. 0)  
  29. r5 = 00000069  r4 = C0                     
  30. [<c002930c>] (gpio_irq_handler+0x0/0x90) from [<c001fc54>] (asm_do_IRQ+0x50/0x14                                                                                
  31. c)  
  32. [<c001fc04>] (asm_do_IRQ+0x0/0x14c) from [<c001e9a4>] (__irq_svc+0x24/0x60)le_IRQ+0x68/0x7ba                                                         
  33. [<c0020510>] (default_idle+0x0/0x54) from [<c00205ac>] (cpu_idle+0x48/0x64)om [<c001e9a4>] (__irq_svc+0x                                             
  34. [<c0020564>] (cpu_idle+0x0/0x64) from [<c001e024>] (__init_end+0x24/0x2c)_irq+0x70/0xcc)                                                         
  35. r5 = C01E979C  r4 = 00000000                             
  36. [<c001e000>] (__init_end+0x0/0x2c) from [<c000                                            
  37. handlers:_IRQ+0x68
  38. [<c00295e0>] (led_int+0x0/0xc0)                              
  39. irq105: bogus retval mask fee01830                                 
  40. Pid: 0, comm:              swapper0)end+        
  41. r6 = 00000001  r5
  42. CPU: 0138  r
  43. PC is at default_idle+0x4c/0x54x24/0x2c)14>] (do_simple      
  44. LR is at default_idle+0x40/0x54                              
  45. pc : [<c002055c>]    lr : [<c0020550>]    Not tainted0x90) from [<c001fc54>] (asm_do_IRQ+0  r4 = 00000000
  46. sp : c01a9f9c  ip : c01a9fac  fp : c01a9fa8                                          
  47. r10: 2001a5bc  r9 : 41069265  r8 : 2001a5ecandlers:9fa8055c>                  
  48. [<c0   
  49. r7 : c0204c48  r6 : c01f3868  r5 : c01a8000  r4 : c0020510u_idle+0x4                                                
  50. r3 : 60000013  r2 : 0005217f  r1 : 0005317f  r0 : 000

复制代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

终弃我 2022-10-05 16:24:19

你用的可能是2.6.x的内核.
2.6.x下的中断处理程序需要将返回值设为:irqreturn_t
具体可以参考《Linux设备驱动程序-第三版》(中国电力出版社,2006年1月第一版)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文