Camera driver porting

來源:互聯網
上載者:User

原文參考

        近來剛接手項目的camera驅動,除了查看平台文檔和sensor的到規格書,也在網上查看了高手們到經驗。本人對camera還是比較陌生的,奈何公司無人過問,只好按部就班的來吧!

和大部分驅動的調試相差無幾,還是在前人的工作基礎上進行的。項目採用高通7627平台,sensor採用ov7675。

驅動移植

1.核心驅動移植

sensor資訊記錄在android\kernel\arch\arm\mach-msm\board-msm7x27.c檔案中,board file中要更改的資訊如下:

(1)為sensor添加相應的i2c驅動,加到i2c_devices[]數組中,這裡是使用i2c匯流排的裝置數組。機器啟動時會註冊相應裝置。

static struct i2c_board_info i2c_devices[] = {

#ifdef CONFIG_MT9D112

{

I2C_BOARD_INFO("mt9d112", 0x60 >> 1),//這是7bit形式,採用硬體I2C,把真實的讀或寫地址右移一位即可

},

#endif

......}

(2)msm_camera_sensor_info包含了裝置啟動資訊。添加一個新的sensor驅動,就必須填寫這樣的一個結構體,包括sensor所使用的GPIO口。結構體中的sensor name將被用作driver id。

static struct msm_camera_sensor_info msm_camera_sensor_mt9d112_data = {

.sensor_name = "mt9d112", //將被用作driver id

.sensor_reset = 1, //sensor reset GPIO

.sensor_pwd = 20, //電源開關

.vcm_pwd = 0, //用作自動對焦。0表示不使用。

.vcm_enable = 0,

.pdata = &msm_camera_device_data,

.flash_data = &flash_mt9d112

};

另外還要把sensor註冊成platform_device。

(3)修改i2c地址。gpio表修改,使用8線輸入。修改camera_on_gpio_table[]和camera_off_gpio_table[]兩個數組。由於平台採用的是雙核架構,在功能上有所區分,個別GPIO需要在modem那邊配置成app這邊控制。

(4)建立自己的驅動檔案。使用YUV sensor則查看android\kernel\drivers\media\video\msm\mt9d112.c,若使用bayer sensor則查看android\kernel\drivers\media\video\msm\mt9t013.c。這裡不作詳細說明。

(5)完成上述工作後,修改Kconfig和Makefile檔案。

2.使用者空間驅動

(1)使用者空間驅動主要在vendor目錄下,把自己的sensor加到sensors[]中,以便啟動自己的senor。

static sensor_proc_start_t sensors[] = {

SENSORS_PROCCESS_START(mt9d112),

......};

(2)修改sensor相關參數:例如sensor類型,sensor輸出格式,輸出映像大小等等。\android\vendor\qcom-proprietary\mm-camera\targets\tgtcommon\sensor\mt9d112\mt9d112.c,這些參數必須得到正確的修改,否則sensor將啟動不了。

(3)mt9d112_process_start函數中為VFE具體配置一些參數。

(4)mt9d112_video_config函數做了一些IO configuration調研,和核心mt9d112_set_sensor_mode是相關聯的。通過IOCTL調用,相應的寄存器值會通過i2c匯流排寫入sensor。

寫入sensor寄存器的值(mt9d112_set_sensor_mode)必須和vfe_camif配置的值(mt9d112_video_config)相匹配,如果使用YUVsensor,需將每行像素值定義為預覽模式下 的兩倍。

其他重要的部分還包括HAL層的配置vendor/qcom/android-open/libcamera2\QualcommCameraHardware.cpp,

android\packages\apps\Camera\res\layout\camera.xml。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.