MI VIF DEBUG SOP
REVISION HISTORY¶
Revision No. | Description |
Date |
---|---|---|
1.00 | 2024.12.9 |
1. 前言¶
本文档旨在介绍遇到MI VIF和Sensor相关问题时,如何进行初步排查,快速定位问题,以及确定是Sigmastar SDK问题后,需提供哪些信息给RD分析。
VIF由于Sensor和ISP在video pipeline物理位置相邻,经常会发生单个模块错误导致其他模块刷异常log的现象,这时候可以参考下图进行问题的快速定位:
- cat /proc/mi_modules/mi_vif/mi_vif0
- 对照图中的两个判断条件,先检查dev attr后检查outport attr, 将问题分类到对应模块
- 进一步debug各个模块的问题: sensor 、vif、isp
2. Sensor相关问题¶
2.1 I2C err¶
Debug 流程如下:
流程 | 确认方法 | 关键信息 | 异常解决方法 |
---|---|---|---|
A | 交叉试验确认相关硬件是否正常 | 具体交叉试验步骤,确定该问题是只在特定硬件或平台出现 | 和客户/厂商反馈试验情况,了解硬件电路上是否需要其他配置 |
B | 结合padmux配置表和硬件原理图检查dts设定,确认对应的寄存器值是否正确 | padmux bank: 0x103c gpio bank: 0x103e | 1. dts和原理图对不上请咨询cae或厂商是否有rework 2.确认padmux是经由padmux.dtsi设置:參考Sigmastar_GPIO使用参考 |
C | 使用LA或示波器测量相关引脚电压和mclk 频率 | 1. rst pin, mclk, sensor 供电 2. i2c sda scl 波形 | 1. 请cae或厂商确认sensor 供电需要用到的引脚及工作电压和频率 2. 请i2c owner确认波形是否正确 |
2.2 Sensor不出流¶
Debug 流程如下:
流程 | 确认方法 | 流程关键信息 | 异常反馈和解决 | ||
---|---|---|---|---|---|
A | 交叉试验确认相关硬件是否正常 | 具体交叉试验步骤,确定该问题是否只在特定硬件或模组出现 | 和客户/厂商沟通试验情况,了解可能的硬件问题 | ||
B | 结合padmux配置表和硬件原理图检查dts设定,确认对应的寄存器值是否正确 | padmux bank: 0x103c gpio bank: 0x103e | 1. dts和原理图对不上请咨询cae或厂商是否有rework 2.确认padmux是经由padmux.dtsi设置:參考Sigmastar_GPIO使用参考 | ||
C | 确认mipi sensor各data lane swap以及P/N swap是否配置正确,使用示波器测量每一路的p/n是否正确 | data/clk lane 波形图 | 找客户/CAE定位data lane 波形异常原因 | ||
D | 查阅datasheet,确认power on sequence是否正确 | 上电时序图和实测上电时序 | 请找客户/厂尚协助确认power on sequence | ||
E | 参考datasheet,确认mipi rx data lane 的差分信号正确,电压和频率在正确范围内 | 重点关注mipi data lane LP->HS 的波形 | 请找厂商/CAE协助确认 | ||
F | 读取对应sensor pad的寄存器信息,0x7e和7f 为mipi rx收到的line cnt和pixel cnt, 应该保证多次riu_r该值不变 | pad0: bank 153b pad2: bank 153E | 1.尝试找厂商将sensor clk lane改成non-continus mode 2.sensor driver中关闭MIPI CSI MCG | ||
G | 若能串到VIF可以dump图片进行确认,对于特殊data(如pdaf data)可以请厂商/客户帮忙确认 | 图片 | 请厂商/客户确认数据的有效性 | ||
H | Dump信息至VIF owner分析: 1 ./pcupid_vif_reg.sh | NA | NA |
2.3 Sensor画面异常¶
Debug 流程如下:
流程 | 确认方法 | 关键信息 | 异常解决方法 |
---|---|---|---|
C | init table中是否设置crop flip/mirror | init table 和datasheet | 1.基于init table的初始bayer fmt和crop/mirror/flip操作推算出实际的bayerid 2.如果上面推算的仍有问题可以尝试修改sensor driver,将其他三种bayer id都试一遍 |
D | 交叉试验确认相关硬件是否正常 | 具体交叉试验步骤,确保该问题只在特定硬件或模组导致 | 和客户/厂商反馈试验情况,了解sensor是否可能受到外部环境或特定寄存器影响 |
E | CAE分析原理图上MIPI RX是否有残段 | 板子原理图 | 请CAE帮忙去除掉可能影响到MIPI RX的所有电路残段 |
F | 使用sensor pattern 确认异常图像是否由vif 产生 | sensor pattern图像 | 咨询厂商sensor pattern可能的异常原因 |
H | Dump信息请VIF owner进行分析 1 ./pcupid_vif_reg.sh | NA | NA |
2.4 多sensor异常¶
这种问题通常是单sensor跑不出来,只有多sensor才可以复现。
Debug 流程:
- 检查dts和sensordriver看是否存在引脚配置问题,例如dts中sensor0使用senor2的gpio
- 检查sensor的work mode是否为slave mode,例如sensor0 设置为slave mode依赖sensor 2的vsync
- 分别dump 正常和异常时的寄存器(padmux:103c gpio:103e),比对两者区别。
3. VIF相关问题¶
3.1 VIF帧率异常¶
Debug 流程:
流程 | 确认方法 | 关键信息 | 异常解决方法 |
---|---|---|---|
A | 多次cat mi_vif0 观察dev attr和outport attr的 frame interval,位置如下图 | cat /proc/mi_modules/mi_vif/mi_vif0 | 如果这两个地方看到的帧间隔有异常情况,可以先量波形确认sensor输出的帧率是否也有波动 |
B | 多次cat mi_vif0 outport attr的fail 和drop cnt是否有增加 | cat /proc/mi_modules/mi_vif/mi_vif0 | 请MI_SYS 帮忙确认为什么会fail or drop |
C | 查看当前的cpu loading 和bw占用情况 miu wiki | 1. cat /sys/devices/system/miu/miu0/bw 2. top | 请MI_SYS 帮忙确认系统载荷是否有异常或可否降低 |
mi_vif0 debug info:
3.2 VIF图像异常¶
Debug 流程:
- 查找datasheet或咨询厂商,开启sensor pattern查看vif出图
-
使用vif debug cmd 开启vif patgen,查看vif出图
echo patgen vifGroup width height fps fmt chn fieldModeEnable enable >/proc/mi_modules/mi_vif/mi_vif0
example: echo 0 1920 1080 30 32 0 0 1 >/proc/mi_modules/mi_vif/mi_vif0
-
如果上述步骤试验下来都正常就继续在后级模块打pattern,直到可以定位到导致画图的模块
3.3 VIF fifo full¶
Debug 流程:
- 确认当前vif-isp是framemode还是realtime bind, 如果是realtime bind 请找isp owner看
流程 | 确认方法 | 关键信息 | 异常解决方法 |
---|---|---|---|
A | 检查chip的规格,查看当前的bw是否处于临界值附近或超出 | NA | 可以尝试降低sensor的分辨率或fps,看下情况是否有所缓解 |
B | 查看当前的VIF dma的优先级,尝试调高vif dma的优先级看下fifo full是否有所缓解 | cat /sys/devices/system/miu/miu0/bw | 请MIU owner 帮忙确认vif qos是否可以进一步提高 |