Camera驱动 · 排查实战
📘
30章 · 从入门到项目实战
01
Camera驱动开发概述
工作原理
驱动架构
V4L2框架
02
开发环境搭建
交叉编译链
内核源码树
设备树基础
03
Sensor驱动基础
I2C/SPI
寄存器读写
上电时序
04
MIPI CSI接口调试
D-PHY协议
Lane速率
时钟同步
05
V4L2核心数据结构
video_device
v4l2_device
v4l2_subdev
06
ioctl函数实现
查询能力
设置格式
申请缓冲区
流开关
07
DMA缓冲区管理
DMA-BUF
mmap
缓存同步
ION内存
08
中断与等待队列
中断处理
等待队列
poll/select
09
帧同步与VSYNC
VSYNC信号
帧率控制
时间戳
10
图像格式与色彩空间
RAW/YUV/JPEG
色彩空间转换
11
ISP管线集成
ISP初始化
3A算法
坏点校正
12
电源管理
Runtime PM
suspend/resume
时钟门控
13
热插拔与设备检测
GPIO检测
中断触发
设备树overlay
14
多Camera同步
主从模式
帧同步分发
时间戳对齐
15
调试技巧
printk/dev_dbg
tracepoint
ftrace
kprobe
16
性能优化
内存拷贝优化
中断合并
DMA scatter-gather
17
常见错误码分析
ENOMEM
EIO
EAGAIN
EPIPE
18
稳定性问题
内存泄漏
死锁排查
竞态条件
19
兼容性处理
Sensor适配
多平台移植
内核版本差异
20
用户空间测试工具
v4l2-ctl
media-ctl
yavta
21
日志分析与抓拍
dmesg
ramdump
抓拍验证
22
硬件调试工具
逻辑分析仪
示波器
协议分析仪
23
固件与驱动协同
Sensor固件升级
版本匹配
24
安全与权限
SELinux
Capability
设备节点权限
25
虚拟Camera驱动
vivid驱动
模拟Sensor
测试框架
26
内核模块参数
module_param
调试开关
动态配置
27
设备树解析
of_match_table
属性读取
pinctrl
28
中断共享与IRQ问题
中断号冲突
中断线程化
IRQ affinity
29
DMA引擎使用
dmaengine API
slave DMA
描述符链
30
项目实战案例
调试新Sensor
常见坑点总结