OTP分为内置和外挂,常用说法:内置(insensor OTP/sensor端OTP);外挂(EEPROM/平台端OTP)
按照平台OTP规范烧录,数据存储在E2PROM中,建议使用general驱动。
sensor_config.xml
<OTP>
<E2prom>
<OtpName>general</OtpName> 如果使用sensor去处理,就写sensor驱动名
<I2cAddr>X</I2cAddr> eeprom就填写W地址,insensor就写sensor I2C
<E2promNum>X</E2promNum>
<E2promSize>X</E2promSize> 填写有效size就行
</E2prom>
</OTP>
E2promNum:
• 0:单摄, 一个EEPROM
• 1:双摄, 一个EEPROM
• 2:双摄, 两个EEPROM
• 3:多摄, 各自独立的EEPROM
按照平台OTP规范烧录,数据存储在insensor中,应用Sensor OTP的两种方式:
1.将Sensor OTP的处理放在Sensor驱动中,不需要单独维护OTP驱动,但是每一次进Camera都会处理OTP,增加启动时间
2.借助平台OTP流程处理Sensor OTP,只开机第一次读取OTP,需要按照平台架构嵌入Sensor OTP处理
这里就需要问到sensor FAE要读取OTP的文件,当然也可以自己写,sensor里面的地址,FLAG和size都是按照实际填写,将OTP数据全部读取到buffer里面,之后送到平台端处理即可
OTP driver:
第一次开机—>identify—>OTP init—>Read OTP to buffer
OTP driver:
进入Camera—>idertify—>Read OTP from buffer—>init setting—>Apply OTP
Sensor driver:
每次进入Camera—>identify—>init setting—>OTP init—>Read OTP—>Apply OTP
OTP数据确认
OTP每一个数据都会被打印出来,可以对着pd map查看数据是否对应上
使用平台端处理OTP数据的时候先会去确认buffer前六位 otp first six bytes看otp version is版本是什么就用相应的版本规范去解析OTP数据,最后做一个checksum,对应模块在PD map中有数据并且数据正确就会checksum pass,否则就会checksum error
比较常见的错误就是OTP size最后一位是否读完,如果没有读完就会出现pd map中前面的模块checksum pass;最后一个有数据的模块checksum error,这时候就需要size+1