
和你一起终身学 习,这里是程序员Android
经典好文推荐,通过阅读本文,您将收获以下知识点:
一、PDAF 简介
二、PDAF 类型
三、QPD porting 笔记
续前面porting 文档,porting 笔记可以查看如下文章
QPD pdaf porting 笔记(一)
3.4 获取EEPROM 校准数据
获取校准数据这个可以参考EEPROM 点亮流程。
camera_calibration_cam_cal.cpp 中getCalData方法如下:
获取EEPROM 校准数据

获取EEPROM 校准数据
通过入口函数获取EEPROM校准数据

通过入口函数获取EEPROM校准数据
调用xxxx_DoCamCalPDAF获取校准数据

调用xxxx_DoCamCalPDAF获取校准数据
xxxx_DoCamCalPDAF 实现

xxxx_DoCamCalPDAF 实现
3.5 lens 使能PDAF
3.5.1. 效果AF.cpp 文件使能PDAF
代码文件路径参考如下:
custom/[platform]/hal/imgsensor/ver1/[sensorname]/Scene_xxxx/AF.cpp
效果AF.cpp 文件使能PDAF

效果AF.cpp 文件使能PDAF
4. PDAF 自动校准数据验证
4.1 PDAF 自动校准数据准备
4.1.1 测试材料准备
- PDAF_Charts.zip(用来测试PDAF 对焦图)

chart 图参考
2.AF_Basic_Flow_Report.xlsx(用来分析log 数据是否符合线性度)。
4.1.2 测试环境
-
测试charts图 应该平放,可以贴到墙上。
-
测试设备与charts图保持平行放置。
-
钻石chart图(需要有24~33个)/ 条纹chart 图,需要占据整个预览FOV。
-
测试环境需要在明亮环境下,iso 尽量小于200(研发debug 大于200 也可以测试pass),测试那有灯箱,如果要精确的可以使用灯箱。
-
普通的lens,将手机放置到三脚架上,然后举例chart图 20cm(非固定,需要参考lens 规格书)。
4.1.3 打开 PD debug log 命令
由于部分PDAF log 是默认没有打印的,需要打开log 以及推动镜头检查线性度。
参考命令如下:
go
adb root
adb remount
adb shell setenforce 0
adb shell setprop debug.cam.drawid 1
adb shell setprop debug.cam.draw.ctrl 'DAC,MAGIC,ISO'
adb shell setprop vendor.debug.camera.dbginfo 1
adb shell setprop vendor.debug.pd.vpu.enable 1
adb shell setprop debug.af.log.enable 1
adb shell setprop debug.af.enable 1
adb shell setprop vendor.debug.af.log.enable 1
adb shell setprop vendor.debug.af.enable 1
adb shell setprop vendor.debug.af_mgr.enable 1
adb shell setprop vendor.debug.pd.enable 1
adb shell setprop vendor.pd.offset.comp 0
adb shell setprop persist.vendor.mtk.camera.log_level 3
adb shell setprop vendor.debug.pd.vpu.log.enable 1
adb shell setprop vendor.debug.camera.af.draw.lens 1
adb shell setprop debug.cam.drawid 1
adb shell setprop vendor.debug.af.localfullscan 3
adb shell setprop vendor.debug.af.localfullscan.auto 1
adb shell svc power stayon true
adb shell setting put system sreen_off_timeout 1800000
adb shell setprop vendor.debug.af_motor.disable
adb shell sync
adb shell sync
adb shell sync
adb shell pkill camera*
pause
4.1.4 开始测试抓取log
Full Scan Peak 配置
Excell 表格中通过log 确认配置 Full Scan Peak,如果这配置错误,可能会导致DAC Diff 异常或者线性度测试失败。

Full Scan Peak 配置
AFInf 、AFMacro 配置
数据来源OTP 烧录的数据。
AFInf 、AFMacro 配置 举例如下:

AFInf 、AFMacro 配置
不同DAC值 PD 配置
log 关键字:
DAC: 120|DAC: 196|DAC: 272|DAC: 348|DAC: 424|DAC: 500|DAC: 576|DAC: 652|DAC: 728|DAC: 804|connect call|select size|GET_DENSE_PD_VC_SETTING|Fullscan.*peak|AFInf|AFMacro
抓取MTK log 后,配置不同DAC 的PD 值,然后Excell 表格会自动计算线性度,DAC diff 等。
PD position、PDvalue、PD CL、不同DAC值 PD 配置方法如下:

不同DAC值 PD 配置
不同DAC值 PD 信息如下:

不同DAC值 PD 信息如下:
检查RSQ是否正常
如果RSQ< 0.96 或者RSQ平均值<0.99 则表示线性度失败,配置的代码或者测试环境有问题,需要check。
检查线性度是否正常,RSQ是否正常:
检查PD range 是否正常
1.如果 PD range <7 & PD range >=5,需要找平台确认。
2.如果 PD range < 5 ,则表示测试失败。
检查PD range是否正常,RSQ是否正常举例如下:

检查PD range是否正常,RSQ是否正常
检查DAC Diff 是否正常
DAC Diff 的计算方式如下:
DAC Diiff= Abs(PD target Position - Full Scan Peak Position )
如果 DAC Diff 差异过大,需要考虑一下 Full Scan Peak Position 设置是否正确以及PDAF 代码是否配置正确,过大可能会导致对焦效果出现拉焦等现象。
检查DAC Diff 是否正常举例如下:

检查DAC Diff 是否正常
检查PD CL 置信度
-
如果PD 置信度 < 60,线性度会直接fail。
-
对于PD core4.6 及以下的PD algo ,Confidence 为
60~100算正常。 -
对于PD core5.0 及以上的PD algo ,对着菱形图 Confidence 为
80~100算正常。
统计PDAF 线性度
统计PDAF 线性度举例如下:

统计PDAF 线性度
五、PDAF debug
5.1 Debug log 关键字
connect call|select size|PDAF_Support|SensorModeSupportPDAF|pd_buf_mgr.*createInstance|BufType|setPDCaliData|parseStep|fullRawOffset|setPDBlockInfo|PDAF flow is enabled|pd buffer manager type|set_blk_info| PDAF flow is enabled|Not supported pd sensor type|pd_buf_mgr
5.2 PDAF_Support 和createInstance check
log 关键字:
connect call|pdaf_support|pd_buf_mgr.*createInstance|SensorModeSupportPDAF

PDAF_Support 和createInstance check
5.3 PDO dump
dump 命令如下:
go
adb wait-for-device
adb root
adb remount
adb shell setenforce 0
adb shell "mkdir data/vendor/pdo"
adb shell "chmod 777 /data/vendor/pdo"
adb shell "rm -rf data/vendor/pdo/*"
adb shell setprop persist.vendor.mtk.camera.log_level 3
adb shell setprop vendor.debug.af_mgr.enable 1
adb shell setprop vendor.debug.pd.enable 1
adb shell setprop vendor.debug.af.enable 1
adb shell setprop vendor.debug.dump_pdaf_cali.enable 1
adb shell setprop vendor.dump.bpci_tbl.enable 1
adb shell setprop vendor.pd.dump.enable 1
adb shell setprop vendor.vc.dump.enable 1
adb shell setprop vendor.debug.pdinfo.enable 1
::dump camerasv's convertd pd buffer
adb shell setprop vendor.pd.dump_cvt.enable 1
adb shell pkill camera*
pause
至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,比如:文章底部留言,12小时内必删,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

点个在看,为大佬点赞!