高通camera驱动 camx read xml 和 probe 流程 和 sensor I2C读写的波形图 (三)
Camx 刚接触的时候对于这个xml 一脸懵逼,实际上和mm-camera差不多就是以xml node节点的方式标准化了driver相关的code,exposure 和 gain的逻辑实现还是在同级目录的cpp中,并且将 xml 的解析工作放在了 out/target/<product>/gen/STATIC_LIBERARIES/libcamxgenerated_intermedia
Camx 刚接触的时候对于这个xml 一脸懵逼,实际上和mm-camera差不多就是以xml node节点的方式标准化了driver相关的code,exposure 和 gain的逻辑实现还是在同级目录的cpp中,并且将 xml 的解析工作放在了 out/target/<product>/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 的填空工作啦。
详细的加载过程流程图:
camx 的sensor probe 主要流程:
camera 的 probe success 主要需要 xml 中 salveAddress 、sensorIdRegAddr 、sensorID 和 powerUpSequence 这个4个参数(当然还有一个前提是你的 kenrel 的i2c clock power gpio等配置的没有问题),这时候还用不到 initsetting 等等其他参数,毕竟你sensor 还没有读到正确寄存器值,详细过程见流程图。
下面以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
2)设定I2C读的地址:01101101(0x6d) 10001000(0x88)
Slave Read Address:0x6d,ID register value:0x88
3)设定I2C写的地址:01101100(0x6c) 00110000(0x30) 00001011(0x0b)
Slave Write Address:0x6c,ID register address:0x300b
4)设定I2C读的地址:01101101(0x6d) 00100101(0x25)
Slave Read Address:0x6d,ID register value:0x25
更多推荐
所有评论(0)