🧩 海思驱动陷阱·对策 30章 · 实战精讲

友好色系
01
MMU与Cache一致性陷阱 物理地址操作 → 数据不一致 · 死机
02
中断上下文休眠陷阱 ISR中调用mutex_lock等休眠函数
03
DMA缓冲区对齐陷阱 未Cache Line对齐 → 数据错乱
04
时钟门控与动态频率调节陷阱 关闭时钟未等待 → 寄存器写入丢失
05
IOMMU/SMMU页表配置陷阱 缺页异常 · 设备无响应
06
中断共享与竞争条件陷阱 共享中断号 → 死锁
07
电源管理休眠唤醒顺序陷阱 先关电源后停DMA → 总线挂死
08
寄存器位域操作陷阱 读-改-写未考虑硬件自动清零
09
内存屏障缺失陷阱 多核/DMA指令重排 · 数据错误
10
中断顶半部与底半部数据共享陷阱 全局变量未加锁 → 数据竞争
11
ioremap与mmap陷阱 用户态mmap后驱动释放ioremap
12
硬件定时器精度陷阱 中断延迟+重载延迟 → 周期不准
13
GPIO中断触发方式陷阱 双边沿触发 · 信号抖动 → 中断风暴
14
SPI/I2C时钟极性相位配置陷阱 主从配置不一致 → 数据错位
15
DMA描述符链回环陷阱 回环未处理结束标志 → 无限循环
16
设备树解析陷阱 of_get_property未检查返回值
17
热插拔设备枚举陷阱 probe/remove并发 → 资源重复
18
Firmware/固件加载陷阱 request_firmware文件系统未就绪
19
中断亲和性设置陷阱 绑定到离线CPU → 中断无法处理
20
原子上下文内存分配陷阱 自旋锁/中断中用GFP_KERNEL
21
外设复位时序陷阱 复位后未等待延时 → 读回默认值
22
多队列中断均衡陷阱 中断未均匀分布 → 单核负载过高
23
调试接口暴露陷阱 生产版本未移除/proc或debugfs
24
模块参数校验陷阱 未做范围校验 → 数组越界/除零
25
中断嵌套与优先级反转陷阱 低优先级被高优先级打断 → 死锁
26
DMA一致性内存分配陷阱 dma_alloc_coherent属性错误
27
外设FIFO溢出陷阱 未及时读取FIFO → 数据丢失
28
电源域隔离陷阱 跨电源域访问已关闭域 → 总线错误
29
内核版本API兼容性陷阱 使用废弃API → 编译警告/不兼容
30
驱动热升级陷阱 运行时卸载重载 · 硬件状态未知