CTS fail项
- 观察fail结果,都是帧率相关的测试项,比如:
testCameraToSurfaceTextureMetadata
testPreviewFpsRange
再查看result/log,发现fail都出现在测试前摄时。
- 打开系统相机,查看前摄的帧率在室内光/打灯条件下是不是正常,能不能达到30fps。结果:前摄帧率最大只跑到了15fps,这显然是一个异常状态
- 强制固定帧率为30fps(这一步有很多丧心病狂的方法,改代码/设置属性),查看实时log依然只有15fps。
- 直接看内核驱动代码的log,实际设置的shutter/framelength的值是多少,这里有两个个计算公式:
(1)实时帧率 = pclk/linelength/framelength;pclk与linelength来自于驱动中配置的imgsensor info。
(2)framelength = ((shutter + margin)< min_framelength)?(min_framelength):(shutter + margin);shutter来自效果参数的一系列计算,margin来自驱动代码的配置,min_framelength即为imgsensor info中设置的framelength。
然而从实际打印的内核Log看,shutter与framelength的值违反了第二个公式,shutter值在2000左右波动,framelength一直固定在4164.
从对应的imgsensor info中查找到pclk与linelength的值计算实时帧率,结果大概在15帧,同时发现imgsensor info里面设置的framelength = 4164,但最大帧率写的是30fps。
- 此处framelength显然是一个异常值,那么应该修改成什么值呢?
从write_shutter中可以看到framelength的值最终被写入寄存器0x0006中,查找对应setting(cap)中0x0006写入的值:0x0822,转换成十进制就是2082。所以将imgsensor info中的framelength修改成2082验证。
- 修改后系统相机室内亮光环境下可以达到30帧,复测cts fail项,都可以pass。
- 找FAE double check后提交修改。
ITS fail项
- 查看fail项,基本都是曝光相关的测试项,如:
test_exposure
test_latching……
- test_latching是其中比较典型的一个测试项,查看测试脚本可以看出,此测试项内容是:
(1)获取IC支持的sensitivity和exposuretime
(2)然后设置预设的一系列值来获取图片:
its.objects.manual_capture_request(s, e, 0.0, True, props)