af 驱动正确性检查
af 驱动需要配置的地方很少,驱动添加完毕后,先保证马达能动,对焦成功。对于马达的类
型需要和 fae 确认,然后设置对应的 initial_code,region_params 等信息。
otp 驱动正确性检查
一:LSC
LSC 校正分 sensor 校正和平台校正,如果是将 otp 的数据读出来直接传到 3A 里面就是平台
校正,如果读出来的数据还要写到 sensor 的寄存器里的就是 sensor 端校正。
如果是平台校正:
1:可以将 LSC 的地址偏移一位,看看是否花屏
如果是 sensor 校正:
1:拍 raw 图看
01:50:19.911
二:AWB
1:在手机刚开机时打印:adb logcat > log.txt,查看 r/gr, b/gr 的比值相加是否接近 1,gr/gb
的值是否接近 1。例如:
01-02
sunny_m24c64s_eeprom_format_wbdata:140,AWB : r/gr = 0.494141
01-02
sunny_m24c64s_eeprom_format_wbdata:141,AWB : b/gr = 0.589844
01-02
811
sunny_m24c64s_eeprom_format_wbdata:142,AWB : gb/gr = 1.002930
2:可以将 AWB 的值写的离谱点,看会不会颜色变化,如果变化说明的 AWB 的值是有生效
的,例如:
01:50:19.911
01:50:19.911
mm-camera:
mm-camera:
811
811
811
mm-camera:
811
811
E
E
E
3:AWB 打开和关闭的时候拍摄一张 JPEG 图对比一下看看(直接在进入 awb 校正这个函数
的时候 return 则是关闭了 AWB)
三:AF
1:在手机刚开机时打印:adb logcat > log.txt,也可以通过命令把数据 dump 出来。查看 macro
和 infinity 值是否与 dump 出来的值一样。远焦值肯定大于近焦值。例如:
打印出来的 log:
01-02
mm-camera:
sunny_m24c64s_eeprom_format_afdata:260,AF : macro 625 infinity 329 (no starting DAC set to
infinity)
dump 出来的数据:
00:44:20.035
872
872
E
运算可得数据一致,即 AF 添加正确。
四:PDAF 和 DCC
1:在手机刚开机时打印:adb logcat > log.txt,或者通过命令 dump 数据。和 AF 的检查步骤
一样,主要是看自己输出的 log 的值和 dump 出来的数据是否一致。GainMap 值一般在几百
左右。
新平台在 vendor 层 dump 数据的步骤:
1:设置命令
adb root
adb remount
adb shell setprop persist.camera.cal.dump 1
2:重启手机并挂载
3:设置文件操作权限:
adb shell chmod 777 /data/misc/camera
4:把文件 pull 出来
adb pull /data/misc/camera d:(路径自定)
把 dump 出来的 lsc 和 awb 的值写到效果文件里,lsc 的放到 common 目录下,awb 的放到
3A 目录下,搜索 Golden Module Info 关键词。这个起到校验 golden 模组的作用。
pdaf 驱动正确性检查
1,先设置命令:
adb root
adb remount
adb shell setprop persist.camera.global.debug 1
adb shell setprop persist.camera.stats.haf.debug 5
adb shell setprop persist.camera.stats.af.debug 5
adb shell setprop persist.camera.sensor.debug 5
2,把 HAF 的 LOG 打开,并设置成 fullsweep 模式:
adb shell setprop debug.camera.af_fullsweep 3
3,对着条形卡,让马达跑一个来回,并抓取 LOG:adb logcat |find "defocus(dac/um)"
4,搜索如下 LOG
af_pdaf_proc_pd: 2059: roi(0) lens_pos=313 index=43, pd=4.32, defocus(um)=-140, conf=899,
is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE
af_pdaf_proc_pd: 2059: roi(0) lens_pos=313 index=44, pd=4.28, defocus(um)=-138, conf=902,
is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE
af_pdaf_proc_pd: 2059: roi(0) lens_pos=303 index=45, pd=4.26, defocus(um)=-138, conf=901,
is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE
af_pdaf_proc_pd: 2059: roi(0) lens_pos=303 index=46, pd=3.96, defocus(um)=-128, conf=910,
is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE
af_pdaf_proc_pd: 2059: roi(0) lens_pos=303 index=47, pd=4.02, defocus(um)=-130, conf=905,
is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE
af_pdaf_proc_pd: 2059: roi(0) lens_pos=293 index=48, pd=4.00, defocus(um)=-130, conf=906,
is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE
af_pdaf_proc_pd: 2059: roi(0) lens_pos=293 index=49, pd=3.73, defocus(um)=-120, conf=901,
is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE
af_pdaf_proc_pd: 2059: roi(0) lens_pos=293 index=0, pd=3.74, defocus(um)=-120, conf=899,
is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE
---------------
af_pdaf_proc_pd: 2059: roi(0) lens_pos=373 index=3, pd=6.00, defocus(um)=-194, conf=897,
is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE
af_pdaf_proc_pd: 2059: roi(0) lens_pos=373 index=4, pd=5.98, defocus(um)=-194, conf=897,
is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE
af_pdaf_proc_pd: 2059: roi(0) lens_pos=373 index=5, pd=5.98, defocus(um)=-194, conf=898,
is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE
af_pdaf_proc_pd: 2059: roi(0) lens_pos=122 index=6, pd=5.98, defocus(um)=-194, conf=898,
is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE
af_pdaf_proc_pd: 2059: roi(0)
is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE
af_pdaf_proc_pd: 2059: roi(0)
is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE
af_pdaf_proc_pd: 2059: roi(0)
is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE
af_pdaf_proc_pd: 2059: roi(0) lens_pos=122 index=10, pd=-0.24, defocus(um)=6, conf=939,
is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE
af_pdaf_proc_pd: 2059: roi(0) lens_pos=122 index=11, pd=-0.28, defocus(um)=8, conf=938,
is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE
af_pdaf_proc_pd: 2059: roi(0) lens_pos=122 index=12, pd=-0.24, defocus(um)=6, conf=938,
is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE
af_pdaf_proc_pd: 2059: roi(0) lens_pos=122 index=13, pd=-0.25, defocus(um)=8, conf=940,
is_conf=TRUE, not_conf_cnt=0, is_stable=TRUE
可以看到,这句 LOG 有当前位置,有 defocus 值,在 fullsweep 过程中,位置会从远焦->近
焦->远焦,最后停在最清晰的位置
5,任意找一句,lens_pos + defocus 大概等于最清晰位置的 lens_pos
6,最后马达停下来后,如果 pd 接近于 0,defocus 值应该要比较稳定,变化小于 30
lens_pos=122 index=7, pd=-0.01, defocus(um)=0, conf=957,
lens_pos=122 index=8, pd=-0.23, defocus(um)=6, conf=945,
lens_pos=122 index=9, pd=-0.23, defocus(um)=6, conf=942,
7,如果最后停的位置不是准的时候,看 pd 接近 0 的时候,defacus 值最小