免费注册 查看新帖 |

Chinaunix

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

[驱动] 请教PCIE device的中断问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-23 12:37 |只看该作者 |倒序浏览
hi, 大家好。

    最近小弟遇到一个问题,请多指教:
        
        将一个device插入到一块Freescale P1020RDB开发板的PCIE slot中,PPC kernel 2.6.32,在该device的kernel module读进kernel的过程中,用request_irq()注册ISR后,就马上提示note_interrupt(), 也就是说,短时间内产生10000个interrupt(__因为kernel看到有ISR注册,所以将该IRQ line给enable了),但该ISR并不认为是该device产生的,因为ISR看到该device的interrupt status register中没有bit被设置(__实际上,该device的interrupt enable registers,从dump出来的结果,也是设置不正常,全0),所以kernel又将该IRQ line给disable掉了。

       于是写了一个测试用的kernel module, 假的ISR,直接返回IRQ_NONE,注册到IRQ line上,也是一调用request_irq()后,就马上出现同样的情况。


       而这个device, PCI core是可以正常访问的,可以看到其出现在:
                         /proc/bus/pci/devices
       中, vendor ID什么的都正确。


       很明显,这些interrupt一定是由该device产生的。

      
       很困惑的地方在于, 为什么? 怎样解决? 请各位大哥给一下思路。


谢谢

论坛徽章:
0
2 [报告]
发表于 2010-09-25 12:23 |只看该作者
还没有用过PCI-E

帮你顶顶

论坛徽章:
0
3 [报告]
发表于 2010-09-25 12:52 |只看该作者
帮顶!
但你问题没叙述好

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
4 [报告]
发表于 2010-09-25 16:38 |只看该作者
水平中断和边缘中断是否搞混?
中断高低电平是否搞错?

论坛徽章:
0
5 [报告]
发表于 2010-09-26 16:56 |只看该作者
谢谢各位, 的确是level-triggering和edge-triggering在那个IRQ line上搞混了, BSP默认额外level-triggering, 那个设备是edge-triggering. 太谢谢了, 长经验了. 有问题还需要象各位多请教.

论坛徽章:
0
6 [报告]
发表于 2012-02-13 20:18 |只看该作者
回复 1# nyquist892004


    能不能说说具体怎么解决的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP