1. 程式人生 > >高通攝像頭除錯(OV8856)

高通攝像頭除錯(OV8856)

http://blog.chinaunix.net/uid-7213935-id-5749314.html

一.硬體分析
在除錯的時候,一定要拿到電路圖,模組規格書,SENSOR IC datasheet。
下面是主 camera 電路圖:




由上面電路圖我們看樣看出,此模組有以下主要線路:
1.電源:結合 OV8856 的 datasheet 可知,AVDD:2.8;IOVDD:1.8;DVDD:1.2V;
2.控制訊號:RESET,POWERDOWN;
3.通訊訊號:IIC 通訊,CLK,DATA;
4.資料通訊:一組 MIPI CLK 訊號,4 組 MIPI data 訊號;
5.其他訊號:MCLK,ID_PIN,GND。
副 CAMERA 和主 CAMERA 的電路圖類似,差別在於,副 CAMERA MIPI 通訊組多寡而
已,同時控制訊號 RESET 和 POWERDOWN 則是單獨控制的。IOVDD 和 AVDD 一般都是固
定的而有些模組的 DVDD 是有差別的,比如 OV 的高畫素 SENSOR 一般是 1.2V,而格科微低
畫素 SENSOR 的電壓為 1.8V,極少數為 2.8V;所以在除錯的時候一定要先確認這個電壓,否
則輸出不了影象。
另外由電路圖和模組規格書上可知還包括其他兩部分(單獨電路圖省略):
1. 聚焦馬達:電壓 AF _VDD:2.8V;使能 AF_EN;
2. 閃光 FLASH: CAM_FLASH;
二. 軟體程式碼整合
如何新增 camera 模組
Camera 驅動程式碼的新增主要是兩個部分,一個是 kernel 層,一個是 vendor 層。
1.Kernel 部分
主要是配置 dts 檔案,供 msm_sensor.c 讀取。
a. 確認配置 menuconfig
在 qcom 平臺上,已經弱化了 menuconfig,但是有的也需要配置下,如各種感測器等等。對
於 camera 部分,主要檢查以下配置既可:
CONFIG_MEDIA_CAMERA_SUPPORT=y
CONFIG_MEDIA_RADIO_SUPPORT=y
CONFIG_MEDIA_CONTROLLER=y
CONFIG_VIDEO_V4L2_SUBDEV_API=y
CONFIG_VIDEOBUF2_MSM_MEM=y
CONFIG_V4L_PLATFORM_DRIVERS=y
CONFIG_MSMB_CAMERA=y
b.dts 部分
dts 的配置,除錯部分會有詳細說明。
2.Verdor 部分
而實質性的程式碼一般都放在 vendor 下,這部分是高通自己實現的 daemon 程序和 kernel 層
以及 hal 層進行通訊的框架程式碼;另一部分是效果程式碼。
a. 配置 config 檔案:
vendor\qcom\proprietary\common\config\device-vendor.mk


b.新增適配 string
模組之間都是通過名稱是適配的,所以名稱的選取和一致性就尤為重要。
在此檔案中,對應 camera probe 載入:
vendor\qcom\proprietary\mm-camera\mm-camera2\mediacontroller\modules\sensors\module\sensor_init.c
#define BOARD_SENSORS \
"ov8856",\
#endif
在此檔案中,對應 camera probe 載入:
vendor\qcom\proprietary\mm-camera\mm-camera2\mediacontroller\modules\sensors\module\sensor_init.c
#define BOARD_SENSORS \
"ov8856",\
#endif
boolean sensor_init_probe(module_sensor_ctrl_t *module_ctrl)
{
….............
for (i = 0; i < ARRAY_SIZE(sensor_libs); i++) {
ret = sensor_probe(sd_fd, sensor_libs[i]);
…..............
}
c.sensor,actuator 基本驅動配置以及效果引數檔案

三 .驅動除錯
1. dts 配置
在 msm.c 和 msm_sensor.c 中,高通已經幫我們寫好了軟體架構,一般不用修改程式碼,主
要是配置 dts 檔案:msm8909-camera_sensor-skuc.dtsi。

2. sensor_lib_t 結構體
在 sensor lib 中,有 sensor 基本驅動,主要是新增 sensor_lib_t 結構體:




3. Chromatix 引數
對於 Chromatix 引數驅動工程師要和模組廠或是 ic 原廠工程師溝通除錯驗證,他們給
出引數後,驅動工程師在 merge 的時候也要特別注意,對齊,回車等等一定要注意,否則可能
會出現編譯出錯的現象;當然聚焦馬達要有由高通來除錯。
一般情況下,按照上面操作,sensor 都可以有預覽出來,在此基礎上,例如影象翻轉
180°,顏色 rgb 反調等等,都是可以通過 init reg 做簡單的除錯既可;驅動工程師整合除錯好基
本版本了,就要和 ic 原廠或模組廠聯絡以及配合除錯效果了。
當然在有些情況下,fae 也不是萬能的,比如 OV 的 fae,基本不會搭理你的;而有
些問題 FAE 也不定能解答,很多時候是時間上不允許;這個時候就要大力發揮驅動工程師
的能動性,高通的海量除錯資訊就會派上大用場,後面我會寫一篇關於 tuning 的文件,作
為此文件的補充。

四 效果驗證
vendor 下的編譯,根據 andriod.mk 和 makefile 檔案,一般 mm 即可,在編譯終端下
看生成的 so 的目錄和具體檔案,然後把生成的 so 檔案 push 到相應的目錄下,重啟即可(效
果引數沒有必要重啟)。
高通或是模組廠除錯好後,效果引數給到我們,一定要確保編譯沒有問題。
在驗證的時候,要考慮不同光源下的情況,由於我們沒有特定的光源實驗室,一般情況
下,驗證四個(正常情況,暗處,強光(視窗,日光燈),逆光情況)即可。
在驗證的時候自己一定要多使用,多場景下切換,同時 prevew,capture,video 都要測試
到。