Linux之IRQ domain
来源:互联网 发布:淘宝网与阿里巴巴 编辑:程序博客网 时间:2024/06/06 03:02
概述
Linux使用IRQ domain来描述一个中断控制器(IRQ Controller)所管理的中断源。换句话说,每个中断控制器都有自己的domain。我们可以将IRQ Domain看作是IRQ Controller的软件抽象。
这里所说的“中断控制器”,不仅指硬件上实际存在的中断控制器,也可以是一个“虚拟”的中断控制器。例如,假设我们有一块CPU,它有多个GPIO Pin可以作为外部中断源使用(事实上大多数嵌入式CPU都有这样的GPIO)。我们还假定所有的GPIO中断都复用到该CPU的同一个中断向量。在这样的情况下,这多个GPIO中断就可以抽象成一个虚拟的中断控制器,它连接到CPU的某个中断向量上。
这样做的好处在于,可以将“对中断控制器的中断响应”和“对产生中断的外部设备的中断响应”分离开来。我们还是看一个例子,假定我们有若干个GPIO,分别接了不同外设(如按键、外部以太网控制器等),当这些外设产生中断的时候,CPU内部的GPIO控制器会置位相应的中断标志位,并向CPU提交中断请求。这样,对每一个外设中断,我们实际上要进行两级中断服务:第一级中断服务判断是哪个GPIO产生了中断,并需要清除GPIO控制器内部某个寄存器中的某个标志位;第二级中断服务才是服务产生中断的那个外设的。显然,第一级中断服务代码对每个产生GPIO中断的外设是类似的。有了IRQ Domain的帮助,第一级中断服务代码就可以统一,设备驱动程序只需要关心第二级中断服务就可以了。
IRQ Domain的创建
有两个函数可以用来创建IRQ Domain:irq_domain_add_linear和irq_domain_add_tree。对于大多数情况,前一个函数就够用了:它在中断源和irq_desc之间建立线性映射。如果硬件提供的可用中断源较多(>256),而实际用到的很少,就可以用后者,避免无用的表项。
- Linux之IRQ domain
- linux irq domain笔记
- Linux kernel的中断子系统之:IRQ Domain介绍
- Linux kernel的中断子系统之(二):IRQ Domain介绍
- Linux kernel的中断子系统之(二):IRQ Domain介绍
- Linux kernel的中断子系统之(二):IRQ Domain介绍
- 【转载】Linux kernel的中断子系统之(二):IRQ Domain介绍
- Linux IRQ
- Linux irq
- [RK3288][Android6.0] IRQ-domain.txt 翻译
- Linux kernel 中断之proc接口之irq
- Linux内核中断系列之通用IRQ(六)
- Linux IRQ(2)
- linux irq抽象
- Linux GPIO & IRQ Driver
- Linux generic IRQ handling
- 关于 linux disable irq
- linux kernel threaded irq
- js笔记
- http、TCP/IP协议与socket之间的区别
- ActiveMQ集群:网络连接模式(network connector)详解
- netstat命令简单了解
- MySQL 性能优化的最佳20多条经验分享
- Linux之IRQ domain
- hadoop总结
- Android Launcher分析和修改1——Launcher默认界面配置(default_workspace)
- 孩子缺乏学习动力的表现
- Android 图标上面添加提醒(二)使用开源UI类库 Viewbadger
- Qt5官方demo解析集29——Extending QML - Property Value Source Example
- 初识Php
- Android Launcher分析和修改2——Icon修改、界面布局调整、壁纸设置
- C 语言 函数之realloc