Linux中断管理(二):irq_domain(1):概念

参考文档/博客:

<IRQ-domain.txt>

http://www.wowotech.net/linux_kenrel/irq-domain.html

https://blog.csdn.net/weixin_41028621/article/details/101448227

一.软硬件中断号

在linux kernel中,我们使用下面两个ID来标识一个来自外设的中断:

  • IRQ number(软件/逻辑/虚拟中断号)

       CPU需要为每一个外设中断编号,我们称之IRQ number。这个IRQ number是一个虚拟的interrupt ID,和硬件无关,仅仅是被CPU用来标识一个外设中断。

  • HW interrupt ID(硬件/物理中断号)

       对于interrupt controller而言,它收集了多个外设的interrupt request line并向上传递,因此,interrupt controller需要对外设中断进行编码。Interrupt controller用HW interrupt ID来标识外设的中断。在interrupt controller级联的情况下,仅仅用HW interrupt ID已经不能唯一标识一个外设中断,还需要知道该HW interrupt ID所属的interrupt controller(HW interrupt ID在不同的Interrupt controller上是会重复编码的

二.irq_domain

先来看看标准文档是怎么解释IRQ-domain的:

  • kernel必须保证IRQ number是不重复的(non-overlapping),而在中断控制器级联(cascading interrupt controllers)的情况下,hardware irq极有可能会重复编码
  • irq_alloc_desc*()/irq_free_desc()* 系列API负责内核的IRQ number的开辟工作,但是它们不负责软硬件中断号的映射工作
  • irq_domain可以在开辟IRQ number的基础上提供软硬件中断号的映射以及硬件中断号的解析等工作

早期的系统,只有一个中断控制器,接入中断控制器的物理中断号都是不同的。但是随着计算机系统的发展,系统中可以挂接更多的中断控制器。特别是嵌入式系统的出现,类似GPIO这种也可以视作一种中断控制器。每个中断控制器都有自己中断线的物理编号,且这些物理编号会有重复。此时,Linux Kernel发展出了IRQ Domain的概念,来区分这些相同的物理中断编号。

我们听说过很多的domain,power domain,clock domain等等,所谓domain,就是领域,范围的意思,也就是说,任何的定义出了这个范围就没有意义了。系统中所有的interrupt controller会形成树状结构,对于每个interrupt controller都可以连接若干个外设的中断请求(我们称之interrupt source),interrupt controller会对连接其上的interrupt source(根据其在Interrupt controller中物理特性)进行编号(也就是HW interrupt ID了)。但这个编号仅仅限制在本interrupt controller范围内

如下面一张简图所示:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值