手机SoC神经网络加速器驱动开发指南

📚 共计 30 章节
01
NPU驱动概述
什么是NPU · 手机SoC中的角色 · 交叉编译工具链、模拟器与开发板
入门环境
02
硬件接口与寄存器
NPU硬件架构 · 关键寄存器 · MMIO映射与访问
硬件寄存器
03
内核模块基础
Linux内核模块框架 · 加载/卸载 · printk调试
内核模块
04
设备树与平台驱动
设备树语法 · NPU节点 · platform_driver注册
设备树驱动
05
中断处理
NPU中断类型 · request_irq · tasklet/workqueue
中断底半
06
DMA与内存管理
DMA引擎 · SG列表 · 一致性映射
DMA内存
07
固件加载与启动
固件格式 · 加载流程 · 启动/复位序列
固件启动
08
命令队列与调度
命令提交 · 硬件队列 · FIFO/优先级调度
调度队列
09
内存池与缓冲区管理
ION/DMA-BUF · 内存池设计 · 缓存一致性
内存池ION
10
性能计数器与监控
硬件计数器 · 驱动采集 · perf集成
性能监控
11
电源管理
Runtime PM · DVFS调频 · suspend/resume
电源PM
12
调试与日志
dynamic_debug · ftrace · Oops/kdump
调试日志
13
用户空间接口
IOCTL设计 · mmap映射 · 文件操作函数集
用户态IOCTL
14
同步与并发
互斥锁/自旋锁 · 等待队列 · 原子操作/屏障
并发同步
15
硬件抽象层 (HAL)
HAL架构 · 标准接口 · 多厂商适配
HAL抽象
16
神经网络模型解析
TFLite/ONNX · 算子解析 · 张量描述
模型解析
17
算子实现与优化
卷积/池化/全连接 · Winograd/FFT加速
算子优化
18
量化支持
对称/非对称量化 · 参数传递 · 混合精度
量化精度
19
多核调度与负载均衡
NPU多核 · 任务拆分 · 负载均衡算法
多核调度
20
虚拟化支持
S-EL2虚拟化 · vNPU · 直通/共享模式
虚拟化vNPU
21
安全与隔离
TEE环境 · 安全内存 · 防侧信道攻击
安全TEE
22
兼容性设计
多代NPU兼容 · 版本检测 · 降级策略
兼容版本
23
测试与验证
kunit · 压力测试 · 覆盖率分析
测试kunit
24
性能调优
Profiling · 瓶颈分析 · 编译器优化
调优性能
25
热插拔与错误恢复
热插拔流程 · 错误检测/恢复 · 故障注入
热插拔恢复
26
与上层框架集成
Android NNAPI · ONNX Runtime · TFLite Delegate
框架集成
27
文档与注释
内核文档规范 · kernel-doc · 维护者信息
文档注释
28
社区协作与上游化
补丁提交流程 · 代码审查 · 邮件列表
社区上游
29
案例分析
旗舰SoC NPU驱动架构 · 性能数据对比
案例实战
30
未来趋势
存内计算 · 3D堆叠 · 光互连对驱动的影响
前沿趋势