[DESCRIPTION]
1,进入factory mode之后,自动测试结果camera 部分fail;
2,进入factory mode之后,进入单项测试,预览画面图像固定,抓main log,发现CRC校验fail;
3,进入factory mode之后,进入单项测试,动态预览画面,抓main log,发现CRC校验fail;
以上三种情况都属于不正确的部分,正常的应该是进入自动测试不会failed,进入单项测试,画面为固定的图像(test pattern),1~2s之后退出,抓main log,CRC校验pass
[SOLUTION]
•进入工厂模式测试camera,发现出现的是彩色条纹,纯色图片或者其他的test pattern,然后退出preview。这个是正常的,进入工厂模式后,driver会向sensor下输出test pattern的命令,然后下capture命令调用capture setting,抓拍一张图后退出camera。我们会将抓到的图片(test pattern是固定输出)做校验,来判断硬件是否是ok的
流程如下:
如果sensor吐出来的不是固定图像或者校验失败,需要做如下几个部分的check:
1,在camera 驱动中增加feature controlSENSOR_FEATURE_SET_TEST_PATTERN:代码如下:
2,的在camera驱动中增加feature control SENSOR_FEATURE_TEST_PATTERN_ CHECKSUM_VALUE,代码如下:
注意:
1,获取CHECKSUM_VALUE这个值的时候,最好在工模下多试几次,因为有些sensor吐出来的固定图像的数据实际上是变化的,这个时候,每次输出的CRC_Accum值就会不一样,此时要找FAE确认。
2,如果之前已经确认是ok的,但是又修改了驱动中的HV Mirror或者GrabWindow,Startx,starty等参数,会导致CheckSum这个值又和之前的不一致,请注意重新按照上面的方法k这个参数
3,有时候出现每次checksum值都不一致,是因为掉线引起的,这个时候需要修改驱动那边的驱动能力,PCLK的相位等来解决掉线问题之后再来测试
PS:掉线是指当我们去抓data的时候,假设是在PCLK的上升沿去抓取data,这个时候由于PCLk的驱动能力不足或者太大,导致去抓data的时候,数据还没有稳定或者已经在变化了,此时抓到的data就不正确,通常表现为抓到的都是0,呈现出来的是绿条纹,也有可能是PCLK和data之间的相位没有匹配,导致波形是ok的,可是抓取data的时机也不对,导致的掉线问题。解决方法一般有:改善MCLK的驱动能力,改善PCLK的驱动能力,调整PCLk的相位,降低PCLK的帧率等~
4,如果发现不同的模组出的CRC_Accum的值不一样,还需要check sensor driver的otp_en的寄存器位,并将其关掉。