linux中断系统中,重要的数据结构

1、硬件中断的发生

这里举得例子有点难度,我们先来介绍一下:什么是共享中断?
多个中断源,使用同一个GPIO引脚(这个GPIO引脚,已经配置好了,用做中断引脚)。
在这里插入图片描述

2 中断系统中用到的关键结构体:

在这里插入图片描述

3 硬件中断号和虚拟中断号

3.1 假设,有两个中断,分别是GPIO1模块中的5号中断和GPIO2模块中的5号中断。
在这里插入图片描述
虽然他们用的是同一号中断,但是属于不同的模块。显然,在设备树中,他们的配置是不同的。在设备树中,指定一个中断的方式如下:

//表示要使用的GPIO 1模块里面的引脚
interrupt - parent = <&gpio1>;
//表示使用5号中断,上升沿触发
interrupts = <5 IRQ_TYPE_EDGE_RISING>;

//表示要使用的GPIO 2模块里面的引脚
interrupt - parent = <&gpio2>;
//表示使用5号中断,上升沿触发
interrupts = <5 IRQ_TYPE_EDGE_RISING>;
3.2 结构体的属性分析:

在这里插入图片描述

3.3 irq_domain

这个结构体的功能主要有两个:
1)、通过解析设备树中的中断属性,提取出hwirq(硬件中断号)等信息。
2)、将局部的hwirq(硬件中断号)转换为全局的irq(虚拟中断号)—》他们之间的映射关系会保存在irq_domain结构的一个成员数组里面。
虚拟中断号会保存在platform_device里面,这样,就可以使用request_irq()函数来注册这个中断了。
学习到这里,我们可以对上面的内容,进行一下完善(完善中断A的中断函数的内容):
在这里插入图片描述
那我,还存在另外一个疑问,中断A是如何和irq_domain联系起来呢?
事实上,它位于irq_data结构体里面,里面的一个成员结构体就是irq_domain.
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

One Piece&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值