当前位置: 首页 > news >正文

高通Camera点亮3——Camera Module

Camera点亮除了Sensor之外还需要配置module、EEPROM等,multicamera;配置好编译设置。

Module

<?xml version="1.0" encoding="utf-8" ?>
<cameraModuleData
    <!--Module group can contain either 1 module or 2 modules
      Dual camera, stereo camera use cases contain 2 modules in the group -->
  <moduleGroup>
    <!--Module configuration -->
    <moduleConfiguration description="Module configuration">
      <!--CameraId is the id to which DTSI node is mapped.
          Typically CameraId is the slot Id for non combo mode. -->
      <!--cameraId字段与Camera设备树中的配置的id需要保持一致,同时multicamera中的soltId也对应该值-->
      <cameraId>6</cameraId>
      <!--Name of the module integrator -->
      <moduleName>united</moduleName>
      <!--Name of the sensor in the image sensor module -->
      <!--对应的Sensor名,与Sensor XML中定义需要一样-->
      <sensorName>ov13b10</sensorName>
      <!--Actuator name in the image sensor module
          This is an optional element. Skip this element if actuator is not present -->
      <!--马达名称,与文件中的定义需要对应一致-->
    <actuatorName>dw9714v</actuatorName>
    <!-- Element for actuatorSlaveAddress -->
    <actuatorSlaveAddress>0x18</actuatorSlaveAddress>
      <eepromName>p24c64e</eepromName>
      <flashName>pmic</flashName>
      <!--Chromatix name is used to used to open binary.
          Binary name is of the form sensor_model_chromatix.bin -->
      <chromatixName>united_ov13b10</chromatixName>
      <!--Position of the sensor module.
          Valid values are: REAR, FRONT, REAR_AUX, FRONT_AUX, EXTERNAL -->
      <position>REAR</position>
      <!--CSI Information -->
      <CSIInfo description="CSI Information">
          <!--MIPI数据lane的分布-->
          <laneAssign>0x3210</laneAssign>
          <isComboMode>0</isComboMode>
      </CSIInfo>
      <!--Lens information -->
      <lensInfo description="Lens Information">
        <!--Focal length of the lens in millimeters. -->
        <focalLength>3.34</focalLength>
        <!--F-Number of the optical system. -->
        <fNumber>2.2</fNumber>
        <!--Minimum focus distance in meters. -->
        <minFocusDistance>0.1</minFocusDistance>
        <!--Total focus distance in meters. -->
        <maxFocusDistance>8.0</maxFocusDistance>
        <!--Horizontal view angle in degrees. -->
        <horizontalViewAngle>68.4</horizontalViewAngle>
        <!--Vertical view angle in degrees. -->
        <verticalViewAngle>53</verticalViewAngle>
        <!--Maximum Roll Degree. Valid values are: 0 to 359 -->
        <maxRollDegree>360</maxRollDegree>
        <!--Maximum Pitch Degree. Valid values are: 0, 90, 180, 270 -->
        <maxPitchDegree>360</maxPitchDegree>
        <!--Maximum Yaw Degree. Valid values are: 0 to 359 -->
        <maxYawDegree>360</maxYawDegree>
      </lensInfo>
    </moduleConfiguration>
  </moduleGroup>
</cameraModuleData>

EEPROM

<?xml version="1.0" encoding="utf-8" ?>
<EEPROMDriverData
  <!--EEPROM slave information
       element for EEPROMName
       element for slaveAddress
       elemet for regAddrType
       element for regDataType
       element for I2CFrequencyMode
       element for power up sequence
       element for power down sequence  -->
  <slaveInfo description="EEPROM Slave Information">
    <!--Name of the EEPROM device -->
    <!--需要与module中配置的对应起来来-->
    <EEPROMName>p24c64e_eeprom</EEPROMName>
    <!--8-bit or 10-bit I2C slave Write address -->
    <slaveAddress>0xa0</slaveAddress>
    <!--Register address / data size in bytes -->
    <regAddrType range="[1,4]">2</regAddrType>
    <!--Register address / data size in bytes -->
    <regDataType range="[1,4]">1</regDataType>
    <!--I2C frequency mode of slave
        Supported modes are: STANDARD (100 KHz), FAST (400 KHz), FAST_PLUS (1 MHz), CUSTOM (Custom frequency in DTSI) -->
    <i2cFrequencyMode>FAST</i2cFrequencyMode>
    <!--Sequence of power configuration type and configuration value required to control power to the device -->
    <powerUpSequence>
      <!--Power setting configuration
          Contains: configType, configValue and delay in milli seconds -->
      <powerSetting>
        <!--Power configuration type
            Supported types are: MCLK, VANA, VDIG, VIO, VAF, RESET, STANDBY -->
        <configType>VIO</configType>
        <!--Configuration value for the type of configuration -->
        <configValue>0</configValue>
        <!--Delay in milli seconds -->
        <delayMs>0</delayMs>
      </powerSetting>
    </powerUpSequence>
    <!--Sequence of power configuration type and configuration value required to control power to the device -->
    <powerDownSequence>
      <!--Power setting configuration
          Contains: configType, configValue and delay in milli seconds -->
      <powerSetting>
        <!--Power configuration type
            Supported types are: MCLK, VANA, VDIG, VIO, VAF, RESET, STANDBY -->
        <configType>VIO</configType>
        <!--Configuration value for the type of configuration -->
        <configValue>0</configValue>
        <!--Delay in milli seconds -->
        <delayMs>0</delayMs>
      </powerSetting>
    </powerDownSequence>
  </slaveInfo>
  <!--Sequence of register settings to configure the device -->
  <memoryMap>
    <!--Register setting configuration
        Contains: register address, register data, register address type, register data type,
        operation and delay in micro seconds
         element for slaveAddr
         element for registerAddr
         element for registerData
         element for regAddrType
         element for regDataType
         element for operation
         element for delayUs  -->
    <regSetting>
      <!--Slave address to communicate withe the device -->
      <slaveAddr>0xa0</slaveAddr>
      <!--Register address that is accessed -->
      <registerAddr>0x0000</registerAddr>
      <!--If operation is WRITE, registerData is the data value to be written into the specified register address
          If operation is READ, registerData is the number of bytes to be read from the specified register address -->
      <!--这里为从EEPROM读取数据字节数,根据实际EEPROM中数据来填写-->
      <registerData>0x0B04</registerData>
      <!--Register address / data size in bytes -->
      <regAddrType range="[1,4]">2</regAddrType>
      <!--Register address / data size in bytes -->
      <regDataType range="[1,4]">1</regDataType>
      <!--Type of the operation
          Valid values are: WRITE, READ, POLL -->
      <operation>READ</operation>
      <!--Delay in micro seconds. Delay is 0 if not explicitly provided -->
      <delayUs>0</delayUs>
    </regSetting>
  </memoryMap>
  <!--EEPROM data format information
       element for auto focus information
       element for white balance information
       element for lens shading information
       element for dual camera information
       element for shield pixel information
       element for PDAF DCC information
       element for pdaf 2D information  -->
  <formatInfo description="EEPROM Data Format Information">
    <!--Specifies auto focus data information to format the OTP data
         element for AF data availablity and endian
         element for macro information
         element for infinity information
         element for hall information
         element for hall bias information
         element for vertical macro information
         element for vertical infinity information
         element for horizontal macro information
         element for horizontal infinity
         element for macro margin value information
         element for infinity margin value  -->
    <AF>
      <!--Specifies the availability of the specified data and type of endianness
           element for operation  -->
      <autoFocusData description="Memory Type">
        <!--Specifies whether a particular OTP data available or not -->
        <isAvailable>true</isAvailable>
        <!--Type of the Endianness
            Valid values are: BIG, LITTLE -->
        <endianness>LITTLE</endianness>
      </autoFocusData>
      <!--Specifies memory offset value and mask information -->
      <macro>
        <!--Offset value in the OTP memory -->
        <offset>0x0719</offset>
        <!--mask value which will be applied to obtain required data bits -->
        <mask>0xFFFF</mask>
      </macro>
      <!--Specifies memory offset value and mask information -->
      <infinity>
        <!--Offset value in the OTP memory -->
        <offset>0x071B</offset>
        <!--mask value which will be applied to obtain required data bits -->
        <mask>0xFFFF</mask>
      </infinity>
      <!--Specifies memory offset value and mask information -->
      <hall>
        <!--Offset value in the OTP memory -->
        <offset>0</offset>
        <!--mask value which will be applied to obtain required data bits -->
        <mask>0</mask>
      </hall>
      <!--Specifies memory offset value and mask information -->
      <hallBias>
        <!--Offset value in the OTP memory -->
        <offset>0</offset>
        <!--mask value which will be applied to obtain required data bits -->
        <mask>0</mask>
      </hallBias>
      <!--Hall register address to update with calibrated data -->
      <hallRegisterAddr>0</hallRegisterAddr>
      <!--Specifies memory offset value and mask information -->
      <verticalMacro>
        <!--Offset value in the OTP memory -->
        <offset>0</offset>
        <!--mask value which will be applied to obtain required data bits -->
        <mask>0</mask>
      </verticalMacro>
      <!--Specifies memory offset value and mask information -->
      <verticalInfinity>
        <!--Offset value in the OTP memory -->
        <offset>0</offset>
        <!--mask value which will be applied to obtain required data bits -->
        <mask>0</mask>
      </verticalInfinity>
      <!--Specifies memory offset value and mask information -->
      <horizontalMacro>
        <!--Offset value in the OTP memory -->
        <offset>0</offset>
        <!--mask value which will be applied to obtain required data bits -->
        <mask>0</mask>
      </horizontalMacro>
      <!--Specifies memory offset value and mask information -->
      <horizontalInfinity>
        <!--Offset value in the OTP memory -->
        <offset>0</offset>
        <!--mask value which will be applied to obtain required data bits -->
        <mask>0</mask>
      </horizontalInfinity>
      <!--Margin value to extend towards macro region -->
      <macroMargin>0</macroMargin>
      <!--margin value to extend towards infinity region -->
      <infinityMargin>0</infinityMargin>
      <!--lens sag in macro calibration -->
      <lensSagCalMac>DEFAULT</lensSagCalMac>
      <!--lens sag in infinity calibration -->
      <lensSagCalInf>DEFAULT</lensSagCalInf>
      <!--Specifies memory offset value and mask information -->
      <otpGravityOfs0to90>
        <!--Offset value in the OTP memory -->
        <offset>0</offset>
        <!--mask value which will be applied to obtain required data bits -->
        <mask>0</mask>
      </otpGravityOfs0to90>
       <!--Specifies memory offset value and mask information -->
      <otpGravityOfs90to180>
        <!--Offset value in the OTP memory -->
        <offset>0</offset>
        <!--mask value which will be applied to obtain required data bits -->
        <mask>0</mask>
      </otpGravityOfs90to180>
      <!--average value of gravity offset from 0 to 90 -->
      <avgGravityOfs0to90>0</avgGravityOfs0to90>
      <!--average value of gravity offset from 90 to 180 -->
      <avgGravityOfs90to180>0</avgGravityOfs90to180>
    </AF>
    <!--Specifies white balance data information to format the OTP data
         element for WB data availablity and endian
         element for WBType information
         element for WB light information
         element for mirror information
         element for flip information
         element for qValue information
         element for isInvertGROverGB information  -->
    <WB>
      <!--Specifies the availability of the specified data and type of endianness
           element for operation  -->
      <WBData description="Memory Type">
        <!--Specifies whether a particular OTP data available or not -->
        <isAvailable>true</isAvailable>
        <!--Type of the Endianness
            Valid values are: BIG, LITTLE -->
        <endianness>LITTLE</endianness>
      </WBData>
      <!--Type of the white balance data
          Valid values are: INDIVIDUAL, RATIO -->
      <datatype>RATIO</datatype>
      <!--whitebalance information for a particular light type
           element for light type
           element for R value information
           element for gr Value information
           element for b Value information
           element for gb Value information
           element for rOverG Value information
           element for bOverG Value information
           element for grOverGB Value information  -->
      <lightInfo description="White balance light Information">
        <!--Type of the illuminant
            Supported illuminants are D65, TL84, A, D50 and H -->
        <illuminantType>D50</illuminantType>
        <!--Specifies memory offset value and mask information -->
        <rValue>
          <!--Offset value in the OTP memory -->
          <offset>0x0</offset>
          <!--mask value which will be applied to obtain required data bits -->
          <mask>0x0</mask>
        </rValue>
        <!--Specifies memory offset value and mask information -->
        <grValue>
          <!--Offset value in the OTP memory -->
          <offset>0x0</offset>
          <!--mask value which will be applied to obtain required data bits -->
          <mask>0x0</mask>
        </grValue>
        <!--Specifies memory offset value and mask information -->
        <bValue>
          <!--Offset value in the OTP memory -->
          <offset>0x0</offset>
          <!--mask value which will be applied to obtain required data bits -->
          <mask>0x0</mask>
        </bValue>
        <!--Specifies memory offset value and mask information -->
        <gbValue>
          <!--Offset value in the OTP memory -->
          <offset>0x0</offset>
          <!--mask value which will be applied to obtain required data bits -->
          <mask>0x0</mask>
        </gbValue>
        <!--Specifies memory offset value and mask information -->
        <rOverGValue>
          <!--Offset value in the OTP memory -->
          <offset>0x0021</offset>
          <!--mask value which will be applied to obtain required data bits -->
          <mask>0xFFFF</mask>
        </rOverGValue>
        <!--Specifies memory offset value and mask information -->
        <bOverGValue>
          <!--Offset value in the OTP memory -->
          <offset>0x0023</offset>
          <!--mask value which will be applied to obtain required data bits -->
          <mask>0xFFFF</mask>
        </bOverGValue>
        <!--Specifies memory offset value and mask information -->
        <grOverGBValue>
          <!--Offset value in the OTP memory -->
          <offset>0x0025</offset>
          <!--mask value which will be applied to obtain required data bits -->
          <mask>0xFFFF</mask>
        </grOverGBValue>
      </lightInfo>
      <!--Specifies memory offset value and mask information -->
      <mirror>
        <!--Offset value in the OTP memory -->
        <offset>0</offset>
        <!--mask value which will be applied to obtain required data bits -->
        <mask>0</mask>
      </mirror>
      <!--Specifies memory offset value and mask information -->
      <flip>
        <!--Offset value in the OTP memory -->
        <offset>0</offset>
        <!--mask value which will be applied to obtain required data bits -->
        <mask>0</mask>
      </flip>
      <!--Q value -->
      <qValue>1024.0</qValue>
      <!--Set to TRUE if GRoverGB needs to be inverted -->
      <isInvertGROverGB>TRUE</isInvertGROverGB>
    </WB>
    <!--Specifies LSC data information to format the OTP data
         element for LSC data availablity and endian
         element for LSC light information
         element for mesh HW roll off size information
         element for incrimenting value for obtaing R value information
         element for incrimenting value for obtaing GR value information
         element for incrimenting value for obtaing GB value information
         element for incrimenting value for obtaing B value information  -->
    <LSC>
      <!--Specifies the availability of the specified data and type of endianness
           element for operation  -->
      <LSCData description="Memory Type">
        <!--Specifies whether a particular OTP data available or not -->
        <isAvailable>true</isAvailable>
        <!--Type of the Endianness
            Valid values are: BIG, LITTLE -->
        <endianness>BIG</endianness>
      </LSCData>
      <!--Lens shading information for a particular rolloff light
           element for light type
           element for MSB part of the R gain value information
           element for LSB part of the R gain value information
           element for MSB part of the gr gain value information
           element for LSB part of the gr gain value information
           element for MSB part of the gb gain value information
           element for LSB part of the gb gain value information
           element for MSB part of the b gain value information
           element for LSB part of the b gain value information  -->
      <lightInfo description="Lens shading light information">
        <!--Type of the illuminant
            Supported illuminants are D65, TL84, A, D50 and H -->
        <illuminantType>D50</illuminantType>
        <!--Specifies memory offset value and mask information -->
        <rGainMSB>
          <!--Offset value in the OTP memory -->
          <offset>0x0030</offset>
          <!--mask value which will be applied to obtain required data bits -->
          <mask>0xFF</mask>
        </rGainMSB>
        <!--Specifies memory offset value and mask information -->
        <rGainLSB>
          <!--Offset value in the OTP memory -->
          <offset>0x002F</offset>
          <!--mask value which will be applied to obtain required data bits -->
          <mask>0xFF</mask>
        </rGainLSB>
        <!--Specifies memory offset value and mask information -->
        <grGainMSB>
          <!--Offset value in the OTP memory -->
          <offset>0x0032</offset>
          <!--mask value which will be applied to obtain required data bits -->
          <mask>0xFF</mask>
        </grGainMSB>
        <!--Specifies memory offset value and mask information -->
        <grGainLSB>
          <!--Offset value in the OTP memory -->
          <offset>0x0031</offset>
          <!--mask value which will be applied to obtain required data bits -->
          <mask>0xFF</mask>
        </grGainLSB>
        <!--Specifies memory offset value and mask information -->
        <gbGainMSB>
          <!--Offset value in the OTP memory -->
          <offset>0x0034</offset>
          <!--mask value which will be applied to obtain required data bits -->
          <mask>0xFF</mask>
        </gbGainMSB>
        <!--Specifies memory offset value and mask information -->
        <gbGainLSB>
          <!--Offset value in the OTP memory -->
          <offset>0x0033</offset>
          <!--mask value which will be applied to obtain required data bits -->
          <mask>0xFF</mask>
        </gbGainLSB>
        <!--Specifies memory offset value and mask information -->
        <bGainMSB>
          <!--Offset value in the OTP memory -->
          <offset>0x0036</offset>
          <!--mask value which will be applied to obtain required data bits -->
          <mask>0xFF</mask>
        </bGainMSB>
        <!--Specifies memory offset value and mask information -->
        <bGainLSB>
          <!--Offset value in the OTP memory -->
          <offset>0x0035</offset>
          <!--mask value which will be applied to obtain required data bits -->
          <mask>0xFF</mask>
        </bGainLSB>
      </lightInfo>
      <!--mesh HW rolloff size -->
      <meshHWRollOffSize>221</meshHWRollOffSize>
      <!--position of the next R value from the current R -->
      <rIncrement>8</rIncrement>
      <!--position of the next GR value from the current GR -->
      <grIncrement>8</grIncrement>
      <!--position of the next GB value from the current GB -->
      <gbIncrement>8</gbIncrement>
      <!--position of the next B value from the current B -->
      <bIncrement>8</bIncrement>
    </LSC>
    <!--Specifies shield pixel correction data information to format the OTP data
         element for SPC data availablity and endian
         element for offset address of the SPC data
         element for SPC address information
         element for size of the SPC settings information
         element for address type information
         element for data type information
         element for delay to write each registry entry information  -->
    <SPC>
      <!--Specifies the availability of the specified data and type of endianness
           element for operation  -->
      <SPCData description="Memory Type">
        <!--Specifies whether a particular OTP data available or not -->
        <isAvailable>false</isAvailable>
        <!--Type of the Endianness
            Valid values are: BIG, LITTLE -->
        <endianness>BIG</endianness>
      </SPCData>
      <SPCSettings>
          <!--Specifies memory offset value and mask information -->
          <dataOffset>
            <!--Offset value in the OTP memory -->
            <offset>0</offset>
            <!--mask value which will be applied to obtain required data bits -->
            <mask>0</mask>
          </dataOffset>
          <!--register address value to write SPC data -->
          <SPCAddress>0</SPCAddress>
          <!--size of the SPC data settings -->
          <settingsSize>0</settingsSize>
      </SPCSettings>
      <!--Register address / data size in bytes -->
      <addressType range="[1,4]">2</addressType>
      <!--Register address / data size in bytes -->
      <dataType range="[1,4]">1</dataType>
      <!--Delay in milli seconds. Delay is 0 if not explicitly provided -->
      <delay>0</delay>
    </SPC>
    <OIS>
      <OISData description="Memory Type">
        <isAvailable>false</isAvailable>
        <endianness>BIG</endianness>
      </OISData>
      <dataOffset>
        <offset>0</offset>
        <mask>0xFF</mask>
      </dataOffset>
      <OISAddressArray>0</OISAddressArray>
      <settingsSize>0</settingsSize>
      <addressType range="[1,4]">2</addressType>
      <dataType range="[1,4]">1</dataType>
      <delay>0</delay>
    </OIS>
    <!--Specifies PDAF defocus conversion coefficient data information to format the OTP data
         element for PDAF 2D data availablity and endian
         element for version information
         element for X information
         element for Y information
         element for X ratio information
         element for Y ratio information
         element for map width information
         element for map height information
         element for gain width information
         element for gain height information
         element for left gain map information
         element for right gain map information
         element for conversion Coefficient Count information
         element for conversion Coefficient information  -->
    <PDAF2D>
        <!--Specifies the availability of the specified data and type of endianness
           element for operation  -->
      <PDAF2DData description="Memory Type">
        <!--Specifies whether a particular OTP data available or not -->
        <isAvailable>true</isAvailable>
        <!--Type of the Endianness
            Valid values are: BIG, LITTLE -->
        <endianness>LITTLE</endianness>
      </PDAF2DData>
      <!--Specifies memory offset value and mask information -->
      <version>
        <!--Offset value in the OTP memory -->
        <offset>0x0721</offset>
        <!--mask value which will be applied to obtain required data bits -->
        <mask>0xFFFF</mask>
      </version>
      <!--Specifies memory offset value and mask information -->
      <mapWidth>
        <!--Offset value in the OTP memory -->
        <offset>0x0723</offset>
        <!--mask value which will be applied to obtain required data bits -->
        <mask>0xFFFF</mask>
      </mapWidth>
      <!--Specifies memory offset value and mask information -->
      <mapHeight>
        <!--Offset value in the OTP memory -->
        <offset>0x0725</offset>
        <!--mask value which will be applied to obtain required data bits -->
        <mask>0xFFFF</mask>
      </mapHeight>
      <!--gain width -->
      <gainWidth>17</gainWidth>
      <!--gain height -->
      <gainHeight>13</gainHeight>
      <!--Specifies memory offset value and mask information -->
      <leftGainMap>
        <!--Offset value in the OTP memory -->
        <offset>0x0727</offset>
        <!--mask value which will be applied to obtain required data bits -->
        <mask>0xFFFF</mask>
      </leftGainMap>
      <!--Specifies memory offset value and mask information -->
      <rightGainMap>
        <!--Offset value in the OTP memory -->
        <offset>0x08E1</offset>
        <!--mask value which will be applied to obtain required data bits -->
        <mask>0xFFFF</mask>
      </rightGainMap>
      <!--count of the conversion coefficient -->
      <conversionCoefficientCount>48</conversionCoefficientCount>
      <!--Specifies memory offset value and mask information -->
      <DCCQFormatMemoryInfo>
        <!--Offset value in the OTP memory -->
        <offset>0x0A9D</offset>
        <!--mask value which will be applied to obtain required data bits -->
        <mask>0xFFFF</mask>
      </DCCQFormatMemoryInfo>
      <!--Specifies memory offset value and mask information -->
      <DCCMapWidthMemoryInfo>
        <!--Offset value in the OTP memory -->
        <offset>0x0A9F</offset>
        <!--mask value which will be applied to obtain required data bits -->
        <mask>0xFFFF</mask>
      </DCCMapWidthMemoryInfo>
      <!--Specifies memory offset value and mask information -->
      <DCCMapHeightMemoryInfo>
        <!--Offset value in the OTP memory -->
        <offset>0x0AA1</offset>
        <!--mask value which will be applied to obtain required data bits -->
        <mask>0xFFFF</mask>
      </DCCMapHeightMemoryInfo>
      <!--Specifies memory offset value and mask information -->
      <conversionCoefficient>
        <!--Offset value in the OTP memory -->
        <offset>0x0AA3</offset>
        <!--mask value which will be applied to obtain required data bits -->
        <mask>0xFFFF</mask>
      </conversionCoefficient>
    </PDAF2D>
  </formatInfo>
</EEPROMDriverData>

EEPROM需要根据模组厂提供的EEPROM烧录内容和格式说明进行配置,

验证EEPROM
adb shell echo "dumpSensorEEPROMData=1" >> /vendor/etc/camera/camxoverridesettings.txt

该命令执行成功后可以查看/vendor/etc/camera/camxoverridesettings.txt是否生效,然后adb reboot重启设备后打开相机,在/data/vendor/camera/路径下会生成类似文件:

  • p24c64e_kbuffer_OTP.txt:从EEPROM中读取的所有数据
  • p24c64e_lsc_OTP.txt :从EEPROM中读取的LSC OTP数据
  • p24c64e_wb_OTP.txt:从EEPROM中读取的WBOTP数据

需要确认:

  • 读取的数据长度是否与设置的一致?并且大于或者等于烧录内容长度;
  • 读取的WB OTP数据是否合法?
  • 读取的LSC OTP数据是否合法?尤其注意是否为0或者明显特别大的数据;

WB OTP数据示例:

p24c64e_wb_OTP.txt
Whitebalance data dump for EEPROM p24c64e

Light Type: A 
  rOverG   = 0.828125
  bOverG   = 0.281250
  grOverGB = 0.999023

Light Type: TL84 
  rOverG   = 0.608398
  bOverG   = 0.479492
  grOverGB = 0.999023

Light Type: D65 
  rOverG   = 0.429688
  bOverG   = 0.657227
  grOverGB = 0.999023

LSC OTP数据示例:
在这里插入图片描述

multicamera配置

高通Camera会根据
vendor/qcom/proprietary/chi-cdk/oem/qcom/multicamera/chimcxcameraconfig/configs中的配置与DTS中的配置对应然后找到具体加载哪一份配置
netrani/netrani_dc.xml

<Devices
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:noNamespaceSchemaLocation="../../../tools/logicalcameragenerator/logicalcam.xsd">
    <PhysicalDevice name="RearPhysicalCam"     slotId="6" cameraId="0" sensorName="ov13b10"/>
</Devices>

编译

vendor/qcom/proprietary/chi-cdk/oem/Android.mk中指定了编译so文件:

include $(CAMX_CHICDK_OEM_PATH)/qcom/sensor/ov13b10/build/android/Android.mk 

vendor/qcom/proprietary/chi-cdk/configs/product.mk:

PRODUCT_PACKAGES += com.qti.sensor.ov13b10
PRODUCT_PACKAGES += com.qti.sensormodule.united_ov13b10.bin
PRODUCT_PACKAGES += com.qti.tuned.united_ov13b10.bin

vendor/qcom/proprietary/chi-cdk/oem/qcom/buildbins/build/android/binary_parrot会有相应的mk文件,指定了使用哪一个文件来生成:

qti.sensormodule.united_ov13b10.mk
##################################
# Generate camx binary file from XMLs

ifeq ($(CAMX_CHICDK_PATH),)
  LOCAL_PATH            := $(abspath $(call my-dir)/../../..)
  CAMX_CHICDK_PATH      := $(abspath $(LOCAL_PATH)/../../..)
else
  LOCAL_PATH            := $(CAMX_CHICDK_OEM_PATH)/qcom/buildbins
endif

include $(CLEAR_VARS)

# file name of the binary
CAMX_LOCAL_BIN := com.qti.sensormodule.united_ov13b10.bin

# the inputs to the binary
CAMX_LOCAL_BIN_INPUTS := sensor/ov13b10/ov13b10_sensor.xml      \
                        sensor/ov13b10/ov13b10_pdaf.xml        \
                        module/united_ov13b10_module.xml       \
                        eeprom/p24c64e_ov13b10_eeprom.xml           \
                        actuator/dw9714p_actuator.xml        \
                        flash/pmic_flash.xml

CAMX_BINARY_XSD_PATH  := $(CAMX_CHICDK_PATH)/api/sensor/

# The argument for the ParameterParser
# leave it blank if you are not sure about it.
CAMX_LOCAL_PARAMETERPARSER_ARG :=

# include the common settings for camx binary generation
include $(CAMX_BUILD_GENERIC_BINARY)

相关文章:

  • 记录此刻:历时两月,初步实现基于FPGA的NVMe SSD固态硬盘存储控制器设计!
  • SpringBoot+Mybatis-Plus实现动态数据源
  • Deepseek-强化学习算法(通俗易懂版)
  • 【带你 langchain 双排系列教程】9.LangChain基于RAG 实现文档问答:从入门到实战
  • inet_pton()函数的概念和使用案例
  • JavaScript作用域和闭包,原理与用途?
  • 面向对象程序设计-实验十一
  • CSS—盒模型(3分钟结合示例精通盒模型)
  • (十七)WebGL中 图像处理的初识
  • docker部署RustDesk自建服务器
  • 数据库(MySQL):使用命令从零开始在Navicat创建一个数据库及其数据表(一).创建基础表
  • Windows 系统常用快捷键指南
  • Linux 命令大全完整版(14)
  • Linux DMA Engine 基础
  • AI2-THOR环境下实现机器人导航、物体定位与抓取
  • C++经典框架案例(六)
  • CentOS停服后的替代选择:openEuler、Rocky Linux及其他系统的未来展望
  • 《离线唤醒+离线Vosk识别+DeepSeek+离线合成,你的第二大脑》
  • RFID涉密载体柜:智能安全,全程守护,提供智能化的安全管控
  • QEMU源码全解析 —— 内存虚拟化(18)
  • 赣州网站建设策划/做一个app软件大概要多少钱
  • 90设计网是干嘛的/青岛网络优化哪家专业
  • 网站群建设方案/seo基本步骤
  • 六安论坛六安杂谈/抚顺优化seo
  • 网站建设推广页/seo搜索引擎优化
  • ps网站轮播图怎么做的/seo快速排名案例