Sensor适配

目标是把一颗新 Sensor 从“硬件能探测”推进到“线性/WDR 图像稳定、AE/AWB 可用、快起和 AOV 可验证”。

适配原则

1. 先测硬件,再改代码:确认供电、RESET、PWDN、MCLK、I2C、MIPI/DVP 后再排软件。

2. 先在线性模式完成:线性模式稳定后再增加 WDR。

3. 一次只改变一个配置:寄存器表、MIPI、曝光和 IQ 参数不要同时修改。

4. Kernel/ISP/Sensor 同版本:Sensor 驱动必须依赖匹配的 tx-isp-PRJ008.ko。

5. 保留基线:为每个分辨率、FPS、HDR 和启动模式保留可回退配置。

第1步:准备Sensor模板

• 以指南中的 IMX327 模板为起点。

• 将文件名、宏、函数名和结构体中的 template 替换为 Sensor 名。

• 同步 Makefile 中驱动名。

• 首次配置阶段启用 #define SENSOR_TEST,用于只验证探测和寄存器访问。

第2步:配置I2C寄存器位宽与ChipID

寄存器地址为 8 bit 时,不定义或注释:

// #define SENSOR_I2C_REG_8BIT

寄存器地址为 16 bit 时定义:

#define SENSOR_I2C_REG_8BIT

根据 Sensor 数据手册填写 Chip ID 高低字节,并实现两次寄存器读取:

#define SENSOR_CHIP_ID_H (0xXX) #define SENSOR_CHIP_ID_L (0xXX) static int <sensor>_detect(struct tx_isp_subdev *sd, unsigned int *ident) { /* read high byte, compare, read low byte, compare */ }

若 Chip ID 读取失败,不应继续调试图像。

第3步:填写Sensor属性

重点字段:

字段配置
nameSensor 名称
chip_id数据手册 Chip ID
cbus_typeI2C/SPI 控制总线
cbus_mask采样位宽、地址位宽
cbus_deviceI2C 地址
alloc_againISP gain 到 Sensor 寄存器 gain 的映射
alloc_dgain数字增益;仅使用 again 时返回 0
alloc_again_shortWDR 短帧增益

第4步:配置MCLK、初始化表和输出尺寸

需要从数据手册确认:

• SENSOR_MCLK。

• 线性模式初始化寄存器表。

• WDR 长帧/短帧初始化表。

• 主分辨率、预览分辨率。

• 输出 FPS 分子/分母。

• mbus_code 的 Bayer 和 RAW 位宽。

• colorspace。

win_sizes[] 的顺序应为:

[0] full_resolution [1] preview_resolution

第5步:配置MIPI

MIPI 结构必须与 Sensor 数据手册和板级连线一致:

• mode:普通 MIPI/WDR/VC 模式。

• clk:MIPI 时钟。

• lans:Lane 数。

• image_twidth、image_theight:Sensor 真实输出宽高。

• sensor_csi_fmt:RAW8/10/12/14 等。

• data_type_value:MIPI Data Type。

• sensor_frame_mode:普通或两帧 WDR。

• sensor_mode:普通/VC/非 VC 模式。

• mipi_crop_*、line_sync_mode:只有硬件确需裁剪或行同步时启用。

宽高错误时,先核对 image_twidth/image_theight 与 win_sizes.width/height 两组值。

第6步:配置曝光和增益

根据 Sensor 能力选择:

• 曝光与 Again 同时下发:打开 SENSOR_EXPO,实现 set_expo(value),其中 value=(again<<16)|it。

• 曝光与 Again 分开下发:保持宏关闭,分别实现 set_integration_time() 和 set_analog_gain()。

• 如果 Sensor 只需要 Again,alloc_dgain() 返回 0。

Again 有两种方式:

1. Gain 表方式:打开 SENSOR_AGAIN_TABLE,生成 *_again_lut。

2. 非 Gain 表方式:关闭宏,实现 alloc_again(),把 ISP gain 映射为 Sensor 寄存器值。

重点检查:

• again.value/max/min。

• integration_time.value/max/min。

• apply_delay。

• total_width、total_height。

• HCG 参数。

• WDR 短帧参数。

第7步:配置FPS、镜像和翻转

• set_fps() 形参为 (fps_num<<16)|fps_den。

• 多数 Sensor 通过修改 VTS 设置 FPS,但必须先确认数据手册支持。

• 定义 SENSOR_MIR_FLIP 后实现 set_vflip(enable)。

• enable[0] 是 mirror,enable[1] 是 flip。

• 镜像/翻转后需重新验证 OSD、人脸/目标坐标和 IRCUT 方向。

第8步:配置WDR

1. 修改 sensor_mode:

• TX_SENSOR_NOT_VC_MODE

• TX_SENSOR_VC_MODE

2. 修改 sensor_frame_mode=TX_SENSOR_WDR_2_FRAME_MODE。

3. 长帧曝光/增益复用线性函数。

4. 增加短帧函数:

• set_expo_short()

• set_integration_time_short()

• set_analog_gain_short()

• alloc_again_short()

5. 实现 set_wdr_stop():停流并切换配置。

6. 实现 set_wdr():复位 Sensor 并重新出流。

7. 检查 wdr_cache 与短帧行数。

8. 验证线性↔WDR、日夜切换和快起第一帧。

第9步:从测试模式切换到正常模式

确认 Chip ID、寄存器读写和初始化表正确后:

// #define SENSOR_TEST

重新编译并从线性模式开始出图。Sensor 驱动必须在 Kernel 和 ISP 驱动之后编译,加载顺序也必须先 ISP 后 Sensor。

Sensor适配Skill

要通过 T33 Sensor 适配,工程师至少应具备以下能力:

Skill必须掌握的内容验收证据
原理图阅读供电域、RESET/PWDN、I2C、MCLK、MIPI、IRCUT/IRLED引脚对照表和上电时序
I2C 调试地址、寄存器位宽、读写时序、ACKChip ID 稳定读取
MIPI 调试Lane、Data Type、时钟、宽高、VC、示波器波形MIPI 无 timeout/lost
ISP 数据流Sensor→VIC→ISP→FrameSource→IPU/EncoderRAW/YUV/码流可取
AE/增益映射曝光行、Again、DGain、gain 表、apply_delay画面亮度连续、无跳变
Sensor 模式管理FPS/VTS、mirror/flip、linear/WDR 切换多模式稳定切换
图像效果IQ day/night bin、Bayer、LSC、WDR日夜效果一致
低功耗TAG、Sensor init、suspend/resume、首帧ZERATUL/Atlas 唤醒可出图
问题定位日志、寄存器、波形、PCM/RAW/YUV 抓取可复现并定位到具体层
版本管理Kernel、ISP、Sensor、IMP 和图效文件匹配可追溯的版本清单

Sensor验收清单

• Chip ID 连续多次上电均可识别。

• 所有供电电压、RESET/PWDN 电平和上电延时符合数据手册。

• MCLK 频率和波形正确。

• 主/预览分辨率、帧率和 RAW 位宽一致。

• 线性模式稳定出图。

• 曝光、Again 全范围无花屏和跳变。

• Mirror/Flip/FPS 动态修改有效。

• WDR 长帧、短帧和切换稳定。

• Day/Night IQ bin 生效。

• ZERATUL 快起和 Atlas 唤醒首帧正常。

• 双摄/多摄时 I2C、同步、buffer 和中断无冲突。

常见故障定位

现象优先检查
timeoutGPIO function、I2C 上拉、总线状态
NOACKI2C 地址、RESET/PWDN、MCLK、供电时序
LOSTI2C 干扰、布线和上下拉
边缘无关数据Sensor 有效窗口和裁剪配置
色彩异常mbus_code 的 Bayer 顺序
花屏MIPI 时序、Lane、RAW 位宽;可先关闭 LSC 验证
MIPI 宽高错误image_twidth/image_theight
宽高错误win_sizes.width/height 和 check 函数


图 37 Sensor 色彩/Bayer 异常。


图 38 Sensor 花屏。


图 39 MIPI 宽高错误。


图 40 图像宽高错误。


图 41 Sensor check 函数校验点。


Tx Sensor Supported List.xlsx 的 PRJ008 页是支持基线,记录分辨率、MIPI Lane、Bayer、RAW 位宽、WDR、FPS 和多摄能力。