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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章