高通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_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

 

 

 

  • 15
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值