1. 程式人生 > >MTK-MT6735-camera新加模組除錯總結

MTK-MT6735-camera新加模組除錯總結

最近公司專案新換了一個不在支援列表中的camera,記錄一下除錯流程,以方便以後查閱。

1、第三方提供kernel的驅動程式碼以及hal層的效果程式碼。

kernel程式碼拷貝到(比如)kernel-3.18/drivers/misc/mediatek/imgsensor/src/mt6735/sc2232_mipi_raw_sub/

hal程式碼拷貝到(比如)vendor/mediatek/proprietary/custom/mt6735/hal/D1/imgsensor/sc2232_mipi_raw_sub/

檔名很重要,不能隨便寫,兩處程式碼中的SENSOR_ID和SENSOR_DRVNAME要一致,並且和下文中的定義也要一致。

2、修改sensorlist.cpp新增sensor相關配置(如下圖)


DRVNAME後面的sc2232_mipi_raw_sub就是對應資料夾名,所以第一步中的檔名不能隨便寫。

3、新增sensor ID和DRVNAME的定義


兩處定義的順序要一致!!!

4、繫結函式入口


注意紅框的名字必須和kernel驅動程式碼中此函式的名字一致。

5、修改上下電時序,關鍵是上電時序

程式碼位置:kernel-3.18/drivers/misc/mediatek/imgsensor/src/mt6735/camera_hw/kd_camera_hw.c

函式名:kdCISModulePowerOn,注意if中判斷的sensor name,不同的模組上電時序不同,請仔細閱讀datasheet

另外若想修改I2C讀寫時的i2c-bus-num,請注意修改kernel驅動程式碼的這裡

返回值有兩個0和1,走的i2c匯流排不一樣,i2c選擇不對時kernel的日誌上會看到i2c傳送超時或者無應答錯誤。

I2C掛載的具體實現在kernel-3.18/drivers/misc/mediatek/imgsensor/src/mt6735/kd_sensorlist.c中,不管使用的是什麼模組,mtk都會先註冊main-camera和sub-camera,上面截圖中會決定你的camera的i2c是哪一路,即在mtk已經註冊的main和sub中選擇一個。

6、新增config使相關修改編譯進去

hal的修改對應配置在ProjectConfig.mk(在device目錄下),可以搜尋IMGSENSOR檢視

kernel的修改對應配置在kernel-3.18/arch/arm64/configs/,可以搜尋IMGSENSOR檢視

注意ProjectConfig.mk修改時若不清楚對應的MAIN_LENS和SUB_LENS的設定,請先設定為dummy_lens,此設定項對應相機的AF功能。

至此一顆新的sensor新增完成。

備註:關於preview size 白平衡等相關設定的位置在vendor/mediatek/proprietary/custom/mt6735/hal/D1/sendepfeature/