8、设备驱动中的中断处理详解

设备驱动中的中断处理详解

1. 中断请求概述

中断请求(IRQ)可来自不同源,如通用输入输出(GPIO)、外部中断(EXTI)或片上外设。不同设备可共享同一中断线,即共享一个 IRQ。在 Linux 中,IRQ 号是机器上不同中断源的枚举,通常枚举的是系统中所有中断控制器的输入引脚数量。它是虚拟中断 ID,与硬件无关。

Linux 内核使用单个大编号空间,为每个独立的 IRQ 源分配不同编号。单中断控制器系统较简单,但多中断控制器系统中,内核需确保各控制器分配的 Linux IRQ 编号不重叠。现代片上系统(SoC)中,注册为 irqchips 的中断控制器数量不断增加,过去 IRQ 号可与硬件 IRQ 线匹配,如今只是编号,因此需将控制器本地中断号(硬件 IRQ,hwirq)与 Linux IRQ 号分离。

2. 中断控制器驱动结构

2.1 irq_chip 结构

特定架构的中断控制器驱动会向内核注册 irq_chip 结构,该结构包含一组指向管理中断控制器 IRQ 的函数指针。其声明如下:

/*
 * struct irq_chip - hardware interrupt chip descriptor
 * @parent_device:     pointer to parent device for irqchip
 * @name:              name for /proc/interrupts
 * @irq_startup:       start up the interrupt (defaults to ->enable
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值