内核中断子系统移植与验证实战

📚 共计 30 章节
第01章
中断基础概念
中断的定义、中断类型(IRQ、FIQ、NMI)、中断上下文、中断优先级与嵌套。
概念IRQ优先级
第02章
ARM GIC 架构详解
GIC v2/v3 控制器结构、Distributor与CPU Interface、中断ID与中断号映射。
GICv2/v3Distributor
第03章
中断控制器驱动框架
Linux irqchip 子系统、struct irq_chip 结构体、irq_domain 映射机制。
irqchipirq_domain
第04章
中断号映射与irq_domain
线性映射、树形映射、不映射三种方式,irq_create_mapping 与 irq_find_mapping。
映射线性树形
第05章
中断处理流程
从CPU异常向量表到do_IRQ,再到handle_irq_desc 的完整链路。
异常向量do_IRQ
第06章
中断处理函数注册
request_irq、request_threaded_irq、devm_request_irq 的使用与区别。
注册request_irq
第07章
中断线程化
强制线程化与自愿线程化、thread_fn 与 handler 的分工、实时性考量。
线程化实时
第08章
中断下半部机制
软中断(softirq)、tasklet、工作队列(workqueue)的对比与选择。
下半部softirqworkqueue
第09章
中断亲和性与负载均衡
SMP_IRQ_AFFINITY、irqbalance 服务、手动设置CPU亲和性。
亲和性SMPirqbalance
第10章
中断调试基础
/proc/interrupts、/proc/stat、cat /proc/irq 查看中断统计。
调试proc统计
第11章
中断延迟测量
使用ftrace跟踪中断入口/出口、测量中断响应时间。
ftrace延迟测量
第12章
中断风暴检测与处理
检测异常高频中断、屏蔽中断源、使用hrtimer限流。
风暴hrtimer限流
第13章
设备树中的中断描述
interrupt-parent、interrupts、interrupt-cells、interrupt-map 属性。
设备树interrupts
第14章
中断控制器驱动编写实战
实现一个简单的GPIO中断控制器驱动。
实战GPIO驱动
第15章
中断共享与中断线共享
IRQF_SHARED 标志、共享中断的probe机制。
共享IRQF_SHARED
第16章
中断唤醒系统
enable_irq_wake、disable_irq_wake、suspend/resume 中的中断处理。
唤醒suspendwake
第17章
MSI/MSI-X 中断
PCIe MSI 机制、MSI 中断的申请与释放、MSI 与INTx 的对比。
MSIPCIeINTx
第18章
虚拟中断与KVM中断虚拟化
KVM 中中断注入、APICv/AVIC 硬件加速。
KVM虚拟化APICv
第19章
中断嵌套与优先级反转
实际硬件中的中断嵌套场景、优先级反转的避免策略。
嵌套优先级反转
第20章
中断上下文中的锁
spin_lock_irqsave、spin_lock_bh、raw_spin_lock 的选择。
spin_lockBH
第21章
中断与DMA协同
DMA完成中断、环形缓冲区处理、避免数据竞争。
DMA环形缓冲
第22章
中断子系统移植准备
分析目标SoC手册、确认GIC版本、准备最小系统。
移植SoCGIC
第23章
中断控制器设备树配置
编写GIC节点、配置CPU接口、设置中断路由。
设备树GIC节点
第24章
内核中断子系统配置
Kconfig 选择、menuconfig 配置、编译选项调整。
Kconfigmenuconfig
第25章
中断控制器驱动移植
修改irq-gic.c、适配寄存器地址、验证中断号映射。
移植irq-gic
第26章
中断处理函数验证
编写测试驱动、注册中断、触发中断、查看处理结果。
验证测试驱动
第27章
中断性能基准测试
使用cyclictest测量中断延迟、对比不同配置下的性能。
性能cyclictest
第28章
中断子系统常见问题排查
中断丢失、中断重复触发、中断死锁的调试方法。
排查死锁丢失
第29章
中断子系统优化技巧
中断合并、中断节流、使用percpu中断减少锁竞争。
优化合并percpu
第30章
中断子系统移植总结与最佳实践
移植checklist、测试用例设计、文档编写规范。
总结checklist最佳实践