112、MIPI CSI-2 协议层细节:ECC、Checksum、Virtual Channel、Data Type 字段解读
112、MIPI CSI-2 协议层细节:ECC、Checksum、Virtual Channel、Data Type 字段解读
从一次诡异的图像花屏说起
去年调试某款旗舰机的前摄,Sensor输出RAW10,平台是骁龙8 Gen2。图像偶尔出现整帧偏绿、下半部分撕裂,但log里没有任何报错。抓了CSI-2的trace,发现PHY层PLL锁定正常,LP状态机也没跳异常。折腾了两天,最后用示波器怼着D-PHY的D0P/D0N看,才发现是某个packet的ECC校验位被干扰了,导致接收端把Data Type解析成了别的格式——RAW10被当成了YUV422去解,颜色不乱才怪。
这个坑让我重新审视了CSI-2协议层那些平时不太在意的字段。今天就把ECC、Checksum、Virtual Channel、Data Type这几个关键字段掰开揉碎,结合调试经验聊清楚。
ECC:单比特纠错,双比特检测,但别指望它救你
CSI-2的ECC(Error Correction Code)只覆盖Short Packet的Header部分,也就是8字节的PH(Packet Header)。它采用汉明码(8,4)的变种,能纠正1比特错误,检测2比特错误。注意,它不保护Long Packet的Payload数据——Payload的完整性靠Checksum。
实际调试中常见的ECC误判场景:
