备忘:
文末支持一波,感谢鞠躬
一、名词解释
1.1 OTP
OTP:One Time Programmable。
在嵌入式系统中,所有代码和系统数据都被存储在FLASH芯片内部。FLASH芯片可多次擦写,且掉电数据不丢失。为了保护FLASH中的数据,厂商提供OTP寄存器,OTP这个寄存器只可以编写一次,之后不能修改。
EEPROM全称“电可擦除可编程只读存储器”,手机中camera模块的EEPROM主要用来存储OTP数据,用来进行校准,来保持模组一致性。
1.2 OTP数据包括
模组信息:物料ID、日期、镜头、VCM等基本信息
LSC:lens shading calibration data
AWB:R、Gr、Gb、B的通道值或比值
AF:远、近焦的position对应DAC值
PDAF:SPC和DCC的data
1.3 Platform OTP
Sensor没有OTP自校准功能,需要我们BB端进行校正
从存储空间(外挂eeprom或者sensor内部存储空间)中读出数据,然后将数据送到BB端进行校正
1.4 Sensor OTP
Sensor有OTP自校准功能
从存储空间(外挂eeprom或者sensor内部存储空间)中读出数据,然后写回sensor寄存器
送到BB端的Raw Data是已经校准过的数据
二、OTP存储方式
内:在sensor芯片中ROM,和sensor公用I2C bus和read/write id
外:sensor外挂的EEPROM,和sensor公用I2C bus,但具有不同的read/write id
三、怎么做OTP
3.1.1 调试前准备--模组规格书
对于不同厂家的模组有不同的信息,在拿到一颗模组后需要通过模组规格书来了解模组的一系列信息,比如说:芯片型号、镜头型号、光圈大小等。
3.1.2调试前准备--sensor数据表
1、上电时序 :
Sensor datasheet 搜Power -up seqence ,可以从图中看到上电时序
2、slave address :
I2C设备的写地址 = I2C设备地址 << 1
I2C设备的读地址 = (I2C设备地址 << 1) + 1
3、读写规则
从sensor datasheet可以找到读写规则
3.1.3 调试前准备--模组OTP烧录指导书
主要关注信息:
一、烧录内容详细说明
模组信息
AWB校准
LSC校准
二、EEPROM MAP
由于这段时间只做了OTP代码走读和log抓取,没有dump出otp数据,dump数据这块暂时不展示。
3.2 insensor OTP 代码
读取OTP的方法
1、这块可以修改rg bg的值,刷版本看预览是否偏色,来看OTP是否正常(偏色)应用
2、这一抓kernel log来看OTP数据,是否正常。这块可以联系模组厂fae看OTP数据是否正常。
adb reboot
adb root
adb shell dmesg > D:\log\kernel.txt
3.3 platform OTP 代码
一般前置的是insensor OTP,后置是platform otp。遇到前后置一样型号的sensor会在驱动代码中额外加宏区分
这一抓androdi log来看OTP数据,是否正常。这块可以联系模组厂fae看OTP数据是否正常。
adb reboot
adb root
adb shell logcat > D:\log\android.txt
平台OTP可以在MTK官网下载文档来溜代码,事半功倍。
四、总结
1、OTP分sensor OTP 和platform OTP
2、sensor OTP的函数 》sensor型号_read_data_kernel《,获取有差异,但是大同小异。这里讲一个不一样的,万一找不到,从datasheet中找出OTP的寄存器,然后在驱动代码中搜寄存器就找到了;platform OTP可以根据camera_custom_msdk.cpp中GetCameraCalData()函数来看走那个函数来分析。
3、有问题找文档联系FAE
4、未完待续...
五、恰饭
如果您觉得有用,感谢老铁请支持一波