免费注册 查看新帖 |

Chinaunix

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

[驱动] 请教中断注册中的软件中断号和硬件中断号 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-26 14:18 |只看该作者 |倒序浏览
各位大侠,
在linux3.x 以后版本中引入了设备树,在设备树文件dts中每个外设中有一项标明中断号的条目。但其中的中断号不是硬件中断号,和硬件手册中的硬件中断号不对应。
请教一下这是软件中断号吗?
另外,在中断注册过程中软件中断号如何和硬件中断号对应?因为使用request_irq()函数时输入的是软件中断号,如何将硬件中断号告知内核呢?
麻烦各位大侠指点。
谢谢先

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
2 [报告]
发表于 2014-06-26 14:42 |只看该作者
什么核的?cortex-a9还是其他的神马?

论坛徽章:
0
3 [报告]
发表于 2014-06-26 14:49 |只看该作者
回复 2# arm-linux-gcc
是cortex-a9的核,不同的cpu核,linux中的处理还不同吗?之前没注意过。
非常感谢


   

论坛徽章:
0
4 [报告]
发表于 2014-06-26 15:27 |只看该作者
arm-linux-gcc 发表于 2014-06-26 14:42
什么核的?cortex-a9还是其他的神马?


大侠,有什么资料可以推荐吗?
从很多资料中都没有说明如何告知内核硬件中断号的。
非常感谢!

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
5 [报告]
发表于 2014-06-26 16:03 |只看该作者
本帖最后由 arm-linux-gcc 于 2014-06-29 12:03 编辑

soc手册上的中断号,可能与a9核中的中断号不是同一个
a9核中的0-15是ipi(inter-processer interrupt),16-31是ppi(private peripheral interrupt),32及其以上的是spi(shared peripheral interrupt)

最终写到中断控制器(gic)里的中断号,是a9上的ID号
0-15号不是外设中断,你要查看你的soc手册上的中断号是从0开始的还是从16开始的

dts中要求ppi和spi都从0开始,因为irq-gic.c中的gic_irq_domain_xlate会根据type来加16(GIC_PPI)或32(GIC_SPI),加了16或32之后的数字就是对应于cortex-a9上的物理ID号
例如:interrupts = <0 43 4>;,第一个数字表示类型(GIC_PPI或GIC_SPI),第二个是中断号(这个中断号并不是物理中断号),第三个表示触发方式

写中断控制器的寄存器,在函数gic_unmask_irq中有用例

文档需要看arm官方的cortex-a9手册


论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
6 [报告]
发表于 2014-06-26 16:11 |只看该作者
另外request_irq中的中断号就是物理中断号,因为irq_create_mapping时的from是16,所以是跳过了ipi的

论坛徽章:
0
7 [报告]
发表于 2014-06-29 10:16 |只看该作者
DTS 高大上,,,没研究过,,,不过 request_irq()  传入的应该就是 硬件中断号,,,
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP