日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Camera 涉及的文件

發布時間:2024/1/18 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Camera 涉及的文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Camera 涉及的文件

1、上電時序

Mediate/custom/$PROJECT/Camera/Camera/kd_camera_hw.c

Mediate/custom/$PROJECT/Camera/Camera/kd_camera_hw.h

2、

模塊驅動:

Mediate/custom/common/kernel/imgsensor/src/kdsensorlist.c

Mediate/custom/common/kernel/imgsensor/src/kdsensorlist.h

IO控制的定義,ID以及sensor名稱定義等:

Mediate/custom/common/kernel/imgsensor/inc/kd_imgsensor.h

提供給用戶空間條用的接口:

Mediate/custom/common/kernel/imgsensor/inc/kd_imgsensor_define.h

3、驅動文件

YUV的模組定義使用xxx_yuv:

Mediate/custom/common/kernel/imgsensor/hi253_yuv/

Mediate/custom/common/kernel/imgsensor/hi253_mipi_yuv/

RAW的模組定義使用xxx_raw或者XXX_mipi_raw文件夾命名,其中xxx_raw一般使用的數據接口為并口,XXX_mipi_raw使用MIPI接口

Mediate/custom/common/kernel/imgsensor/xxx_raw/

Mediate/custom/common/kernel/imgsensor/xxx_mipi_raw/

該驅動文件實現Mediate/custom/common/kernel/imgsensor/src/kdsensorlist.c

文件中模塊驅動的接口,如下:

MULTI_SENSOR_FUNCTION_STRUCT kd_MultiSensorFunc =

{

kd_MultiSensorOpen, ?------------------? SensorOpen

kd_MultiSensorGetInfo, ?----------------?SensorGetInfo

kd_MultiSensorGetResolution,?------------? SensorGetResolution

kd_MultiSensorFeatureControl,?----------? SensorFeatureControl

kd_MultiSensorControl, ?-----------------? SensorControl

kd_MultiSensorClose ?--------------------?iSensorClose

};

而通過該接口中的函數可以看出,調用該接口實際調用到

4、HAL

Mediate/custom/common/kernel/hal/xxx_raw/

Mediate/custom/common/kernel/hal/xxx_mipi_raw/

Mediate/custom/common/kernel/hal/xxx_yuv/

Mediate/custom/common/kernel/hal/xxx_mipi_yuv/

Mediate/custom/common/kernel/hal/src/

注意兩個文件(以后會講到):

Mediate/custom/common/kernel/hal/src/sensorlist.cpp

Mediate/custom/common/kernel/hal/xxx_yuv/cfg.ftbl.XXX_yuv.h或者

Mediate/custom/common/kernel/hal/xxx_yuv/cfg.ftbl.XXX_raw.h

5、Camera驅動和HAL優先級調用順序:

(1)kernel優先級:

Mediate/custom/$PROJECT/kernel/imgsensor/

Mediate/custom/$PLATFORM/kernel/imgsensor/

Mediate/custom/common/kernel/imgsensor/

(2)HAL層優先級:

Mediate/custom/$PROJECT/hal/imgsensor/

Mediate/custom/$PLATFORM/hal/imgsensor/

Mediate/custom/common/hal/imgsensor/

從上到下優先級逐步遞減

6、系統配置

Mediate/config/$PROJECT/ProjectConfig.mk

Mediate/config/$PROJECT/init.rc

重點:

5、怎么樣添加一個新的驅動

以下以hi253為例子:

1、需要向供應商或者MTK要資料有哪些

(1)芯片原廠的sensor芯片手冊

(2)向芯片原廠要驅動程序或者超找目前平臺上MTK是否已經支持該sensor,如果支持,直接可以提E-Service向MTK要驅動。

一般情況MTK或者Sensor原廠提供的驅動:

(2)將驅動添加到代碼中,有以下幾個步驟:

1)將驅動放到Mediate/custom/common/kernel/imgsensor/ 下面,命名為hi253_yuv文件夾。

2)在Mediate/custom/common/kernel/imgsensor/inc/kd_imgsensor.h中定義ID和sensor名稱,如下:

#define HI253_SENSOR_ID 0x0092

#define SENSOR_DRVNAME_HI253_YUV "hi253yuv"

3)在Mediate/custom/common/kernel/imgsensor/src/kdsensorlist.h 中定義初始化函數聲明,在Kdsensorlist數組中加入hi253的定義,如下:

UINT32 HI253_YUV_SensorInit(PSENSOR_FUNCTION_STRUCT *pfFunc);

ACDK_KD_SENSOR_INIT_FUNCTION_STRUCT kdSensorList[MAX_NUM_OF_SUPPORT_SENSOR+1] =

{ ………….

…………

………….

#if defined(HI253_YUV)

{HI253_SENSOR_ID, SENSOR_DRVNAME_HI253_YUV, HI253_YUV_SensorInit},

#endif

………………..

………………..

}

4、將原廠或者MTK給的驅動文件中HAL部分放到

Mediate/custom/common/hal/imgsensor/hi253_yuv/

5、在Mediate/custom/common/kernel/hal/src/sensorlist.cpp中sensorlist數組中添加hi253的

接口,如下:

MSDK_SENSOR_INIT_FUNCTION_STRUCT SensorList[] =

{

……………………….

……………………..

#if defined(HI253_YUV)

YUV_INFO(HI253_SENSOR_ID, SENSOR_DRVNAME_HI253_YUV,NULL),

#endif

……………………………

…………………………….

}

6、camera的系統配置,將新添加的模組添加到系統配置文件中,如下:

1)Mediate/config/$PROJECT/ProjectConfig.mk

CUSTOM_HAL_IMGSENSOR =hi253_yuv siv121d_yuv hi257_yuv sp0a19_yuv

CUSTOM_HAL_MAIN_BACKUP_IMGSENSOR=hi257_yuv

CUSTOM_HAL_MAIN_IMGSENSOR = hi253_yuv

CUSTOM_HAL_SUB_IMGSENSOR =siv121d_yuv

CUSTOM_HAL_SUB_BACKUP_IMGSENSOR=sp0a19_yuv

CUSTOM_KERNEL_IMGSENSOR = hi253_yuv siv121d_yuv hi257_yuv sp0a19_yuv

CUSTOM_ KERNEL _MAIN_BACKUP_IMGSENSOR=hi257_yuv

CUSTOM_ KERNEL _MAIN_IMGSENSOR = hi253_yuv

CUSTOM_ KERNEL _SUB_IMGSENSOR =siv121d_yuv

CUSTOM_ KERNEL _SUB_BACKUP_IMGSENSOR=sp0a19_yuv

2)Mediate/config/$PROJECT/init.rc

添加如下:

#Camera

chmod 0664 /dev/camera-sysram

chmod 0664 /dev/camera-isp

chmod 0664 /dev/camera-pipemgr

chmod 0660 /dev/kd_camera_hw

chmod 0660 /dev/kd_camera_flashlight

chmod 0660 /dev/kd_camera_hw_bus2

chmod 0660 /dev/FM50AF

chmod 0660 /dev/CAM_CAL_DRV

chown system camera /dev/camera-sysram

chown system camera /dev/camera-isp

chown system camera /dev/camera-pipemgr

chown system camera /dev/kd_camera_hw

chown system camera /dev/kd_camera_flashlight

chown system camera /dev/kd_camera_hw_bus2

chown system camera /dev/FM50AF

chown system camera /dev/CAM_CAL_DRV

注意:上面兩個步驟優先級順序如下(從上到下逐步降低):

Mediate/config/$PROJECT/

Mediate/config/$PPLATFORM/

Mediate/config/common/

7、打開sensor原廠給的Camera上電時序和下電時序部分,按照sensor的上電和下電時序以及MTK上電時序文件編寫模組上電和下電時序。

Mediate/custom/$PROJECT/Camera/Camera/kd_camera_hw.c

Mediate/custom/$PROJECT/Camera/Camera/kd_camera_hw.h

注意有時需要查看模組說明書。并且每個模組一個上下電一個函數,以方便移植或出問題好查找。

6、調試過程中常遇到的問題:

(1)讀不到ID,這種情況,首先排除硬件部分,如模組沒焊接好(有時是數據總線或者I2C或者其它控制線)。其次就是上電時序沒上正確。

(2)前后置攝像頭切換有問題:

這種情況一般是在上前置camera時沒將后置camera的PDN設成不工作引起的。同樣上后置camera時沒將前置攝像頭PDN設成不工作。這樣會引起在切換到前置或后置時另外一個sensor仍然有數據輸出,到ISP報ANR錯誤。

(3)camera漏電:

這種情況一般多時下電時PDN處理不當引起的,一般情況是在下電的時候將PDN拉高之后在拉低,然后在下電。而如果是有前后置camera,那么不管當前是哪個camera,下電時對PDN統一處理。

(4)模組的方向,前后置模組之間的夾角是90度,如果不配置成90度,會引起顯示圖像的方向不正確,調整下邊的驅動是達不到目的的。這個配置在如下路徑:

Mediate/custom/MT6572/hal/camera/camera/cfg_setting_imgsensor.h中的

SensorOrientation_T const&

getSensorOrientation()

{

static SensorOrientation_T const inst = {

u4Degree_0 : 90, // main sensor in degree (0, 90, 180, 270)

u4Degree_1 : 0, // sub sensor in degree (0, 90, 180, 270)

u4Degree_2 : 90, // main2 sensor in degree (0, 90, 180, 270)

};

return inst;

}

這個配置好了之后,如果方向不正確,可以通過驅動中的方向調整函數進行調整,如下: static void XXXXXSetMirror(kal_uint16 ImageMirror)

(5)功能配置和sensor插值,這個部分主要是由sensor的hal層的

Mediate/custom/common/kernel/hal/xxx_yuv/cfg.ftbl.XXX_yuv.h 文件的配置來實現。

在這個配置文件中如果添加了相應的配置之后,在camera APP打開之后,點擊菜單項功能不起作用,一般情況下是驅動中沒有添加相應的接口引起的,在驅動中的XXXXControl()或者XXXXFeatureControl()函數中添加相應的接口。大都是在XXXXFeatureControl()函數中添加相應的接口。

(6)拍照圖片的制造商信息,這個部分在如下文件中配置,

Mediate/custom/MT6572/hal/camera/camera/camera_custom_if.cpp中,如下:

#ifdef EN_CUSTOM_EXIF_INFO //打開這個部分

#define CUSTOM_EXIF_STRING_MAKE "custom make" //修改字符串

#define CUSTOM_EXIF_STRING_MODEL "custom model"

#define CUSTOM_EXIF_STRING_SOFTWARE "custom software"

(7)工程模式查看當前使用的攝像頭,這個部分在Camera模塊進行注冊時添加相應的注冊接口,將當前使用的攝像頭的驅動名稱給返回到用戶空間給用戶使用,參考

Mediate/custom/common/kernel/imgsensor/src/kdsensorlist.c

文件中的

#ifdef LCT_MTK_CAM_INFO_SUPPORT

#ednif

部分。在該文件中,向系統注冊時添加了

/proc/driver/camsensor_info的接口,用戶空間直接讀取這個接口即可得到當前系統中使用的camera模組。

(8)預覽圖像時,物體快速移動,圖像撕裂現象,這種情況一般是由于LCD幀速率不夠,或者LCD刷新頻率不夠引起的。

(9)色彩飽和度的調試

針對YUV sensor模組,主要由sensor或者模組廠家來調試。

針對raw sensor模組,主要由MTK來調試。

總結

以上是生活随笔為你收集整理的Camera 涉及的文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。