免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3082 | 回复: 1
打印 上一主题 下一主题

arm92xx的中断问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-02 10:29 |只看该作者 |倒序浏览
当前通过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
复制代码

论坛徽章:
0
2 [报告]
发表于 2007-05-15 15:49 |只看该作者
你用的可能是2.6.x的内核.
2.6.x下的中断处理程序需要将返回值设为:irqreturn_t
具体可以参考《Linux设备驱动程序-第三版》(中国电力出版社,2006年1月第一版)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP