MI VIF DEBUG SOP


REVISION HISTORY

Revision No.
Description
Date
1.00
  • Initial release
  • 2024.12.9

    1. 前言

    本文档旨在介绍遇到MI VIF和Sensor相关问题时,如何进行初步排查,快速定位问题,以及确定是Sigmastar SDK问题后,需提供哪些信息给RD分析。

    VIF由于Sensor和ISP在video pipeline物理位置相邻,经常会发生单个模块错误导致其他模块刷异常log的现象,这时候可以参考下图进行问题的快速定位:

    1. cat /proc/mi_modules/mi_vif/mi_vif0
    2. 对照图中的两个判断条件,先检查dev attr后检查outport attr, 将问题分类到对应模块
    3. 进一步debug各个模块的问题: sensorvif、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 流程:

    1. 检查dts和sensordriver看是否存在引脚配置问题,例如dts中sensor0使用senor2的gpio
    2. 检查sensor的work mode是否为slave mode,例如sensor0 设置为slave mode依赖sensor 2的vsync
    3. 分别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 流程:

    1. 查找datasheet或咨询厂商,开启sensor pattern查看vif出图
    2. 使用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

    3. 如果上述步骤试验下来都正常就继续在后级模块打pattern,直到可以定位到导致画图的模块

    3.3 VIF fifo full

    Debug 流程:

    1. 确认当前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是否可以进一步提高