中断子系统 · 30章
🎯 从入门到实战
📚
嵌入式Linux
⚙️ 中断 & 底半部
🧩 30个章节 · 30个文件
🎨 友好色系
01
中断概念与硬件基础
中断定义 · GIC · 中断号与触发方式
02
Linux中断子系统架构
分层设计 · irq_desc核心数据结构
03
中断注册API
request_irq · devm_request_irq · free_irq
04
中断处理函数编写
中断上下文限制 · 快速响应 · 共享中断
05
中断标志位
IRQF_TRIGGER_* · IRQF_SHARED · ONESHOT
06
中断线程化
request_threaded_irq · thread_fn · 实时性
07
顶半部与底半部概念
为什么需要底半部 · 顶半部职责与限制
08
软中断 (Softirq)
类型 · 注册触发 · ksoftirqd内核线程
09
Tasklet
基于软中断 · 调度使用 · 与软中断对比
10
工作队列 (Workqueue)
机制 · 共享/自定义 · 与Tasklet对比
11
中断嵌套与中断优先级
ARM/Linux嵌套策略 · 优先级配置
12
中断上下文与进程上下文
判断上下文 · in_interrupt · in_irq
13
中断亲和性 (IRQ Affinity)
绑定CPU · smp_affinity · 性能优化
14
中断负载均衡
分发策略 · 硬件/软件均衡 · 多核实践
15
中断调试方法
/proc/interrupts · ftrace · 延迟分析
16
中断延迟测量
测量工具 · 影响因素 · 优化思路
17
设备树中的中断描述
interrupt-parent · interrupts · 绑定
18
GPIO中断
gpio_to_irq · 注册使用 · 边缘/电平触发
19
中断共享机制
硬件支持 · 驱动实现 · 注意事项
20
中断控制器驱动编写
GIC驱动 · 级联 · chained_handler
21
中断子系统初始化流程
start_kernel → early_irq_init → init_IRQ
22
中断号映射
irq_domain · 线性/树形映射 · 动态分配
23
中断门控与屏蔽
local_irq_disable/enable · save/restore · 掩码
24
中断与电源管理
系统休眠 · wakeup_source · noirq阶段
25
中断与实时性
PREEMPT_RT · 中断线程化 · spinlock
26
中断与DMA协同
DMA完成中断 · 环形缓冲区 · 数据搬运
27
中断与定时器
jiffies更新 · hrtimer · 中断关系
28
中断与信号量
信号量问题 · down_trylock · 使用场景
29
中断子系统性能调优
减少频率 · 合并中断 · NAPI机制
30
综合实战:按键驱动
中断+底半部 · 去抖 · 上报事件