高通camera驱动 camx read xml 和 probe 流程 和 sensor I2C读写的波形图 (三)

Camx 刚接触的时候对于这个xml 一脸懵逼,实际上和mm-camera差不多就是以xml node节点的方式标准化了driver相关的code,exposure 和 gain的逻辑实现还是在同级目录的cpp中,并且将 xml 的解析工作放在了 out/target//gen/STATIC_LIBERARIES/libcamxgenerated_intermediates/generated/ 中主要是包含了:

  • g_chromatix : tuning 相关xml的解析code
  • g_facedetection :人脸检测相关xml的解析code
  • g_parser :主要的解析manager 流程图中的 imageSensorModuleDataManager 的 初始化调到了,此目录下的paramtersetmanager.cpp 的 LoadBinaryParameters() 再根据type不同进行各个sub module xml 的读取。
  • g_sensor:camera sensor xml 解析code,包括:actuator, eeprom, flash, moduleconfig, ois ,sensor, sensormodule, eebin主要看此目录下的 camxsenordriver.cpp ,主要功能把 sensor driver xml 的各个节点内容全都 load 一遍。看懂了这里剩下的就是 xml 的填空工作啦。

详细的加载过程流程图:

高通camera驱动 camx read xml 和 probe 流程 和 sensor I2C读写的波形图 (三)_第1张图片

camx 的sensor probe 主要流程:

camera 的 probe success 主要需要 xml 中 salveAddress 、sensorIdRegAddr 、sensorID 和 powerUpSequence 这个4个参数(当然还有一个前提是你的 kenrel 的i2c clock power gpio等配置的没有问题),这时候还用不到 initsetting 等等其他参数,毕竟你sensor 还没有读到正确寄存器值,详细过程见流程图。

高通camera驱动 camx read xml 和 probe 流程 和 sensor I2C读写的波形图 (三)_第2张图片

下面以OV8825 Sensor的I2C来说明

OV8825的Slave Write Address为0x6c ( [1:7]是slave address [0]是读写位 R/W = 1/0 , 即0x6C = 0110 1100),OV8825的ID register Address为0x300a,0x300b,ID register里面存的Value是0x88,0x25.

1) 设定I2C写的地址 0110 1100 (0x6C)  00110000(0x30) 00001010(0x0a)

Slave Write Address:0x6c,ID register address:0x300a

高通camera驱动 camx read xml 和 probe 流程 和 sensor I2C读写的波形图 (三)_第3张图片

2)设定I2C读的地址:01101101(0x6d)  10001000(0x88)

Slave Read Address:0x6d,ID register value:0x88

高通camera驱动 camx read xml 和 probe 流程 和 sensor I2C读写的波形图 (三)_第4张图片

你可能感兴趣的:(android,camera)