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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Sprd平台添加Camera驱动(SL8521E/SC9820E)

發布時間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Sprd平台添加Camera驱动(SL8521E/SC9820E) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

Qocm平臺 Android5.1 和 Android8.0 (msm8909)流程基本一致,Android9.0(msm8953)框架變化較大。

而展訊平臺Android4.4(SC9820E),框架又有所不同,因此共三份文檔。

  • A-(msm8953 Android9.0)
  • B-(msm8909 Android5.1/8.0)
  • C-(SC9820E Android4.4)
  • ? ? 本文是 C-(SC9820E Android4.4)

    平臺特性:

    硬件平臺:SL8521E

    軟件平臺:Android-4.4

    Sensor IC:

    主攝:GC5025 5M(500w像素),主攝,最大 2 lane,5M像素

    前攝:sp0a09z 0M3(30w像素),前攝,最大 1 lane,2M像素

    其他:支持閃光燈,自動對焦,持續對焦,錄像功能,HDR

    數據格式:RGGB

    前言

    1?Kernel?部分

    1.1?主攝硬件原理圖 (Rear Camera SCH)

    1.1.1?Rear?Cam mipi?布線串聯共模電感

    1.1.2?Rear cam csi 1?主攝接線

    1.1.3 Rear cam rst?腳

    1.1.4?Rear cam?mclk?時鐘腳

    1.1.5 Rear cam?pwn?腳

    1.1.6 Rear cam 獲取主攝信息

    1.2?主攝設備樹配置 (Rear Camera dts cfg)

    1.2.1?Rear cam I2C?節點配置

    1.2.2?Rear?cam?mipi?節點配置

    1.3?前攝硬件原理圖 (Front Camera SCh)

    1.3.1?Front?cam?mipi?布線串聯共模電感?

    1.3.2?Front?cam?csi 0 前攝接線

    1.3.3?Front?cam?rst?腳

    1.3.4?Front?cam?mclk?腳

    1.3.5?Front?cam?pwn?腳

    1.3.6?Front?cam?獲取前攝信息?

    1.4?前攝設備樹配置 (Front Camera dts cfg)

    1.4.1?Front?cam?I2C?節點配置?

    1.4.2?Front?cam?mipi?節點配置

    2?vendor?部分

    2.1?device?下項目配置 camera

    2.2?vendor?添加 lib 和 chromatix 文件

    2.3?vendor?引用 lib 驅動入口函數

    2.4?AF?驅動 & 修改編譯選項

    2.5?OTP?驅動 ( eeprom) & 修改編譯選項

    3?Tips

    你再快,也永遠有人比你快!Fighting ~~

    ?

    1?Kernel?部分

    1.1?主攝硬件原理圖 (Rear Camera SCH)

    查閱硬件主板主攝相關接口信息如下:

    主攝 gc5025 500w:

    1.1.1?Rear?Cam mipi?布線串聯共模電感

    1.1.2?Rear cam csi 1?主攝接線

    1.1.3 Rear cam rst?腳

    1.1.4?Rear cam?mclk?時鐘腳

    1.1.5 Rear cam?pwn?腳

    1.1.6 Rear cam 獲取主攝信息

    1. MIPI – CSI 接線

  • MCSI1_CLK_P, MCSI1_CLK_P
  • MCSI1_DATA1_P,MCSI1_DATA1_N
  • MCSI1_DATA0_P,MCSI1_DATA0_N
  • 2. cam rst復位腳、 cam mclk 時鐘腳、csm pwn 腳

  • gpio45、gpio43、gpio47
  • 3. 供電部分

  • VDD? IO核心電,1.8V – VDDCAMIO
  • VDD? IO數字電,1.2V – VDDCAMCORE
  • VDD ?AF馬達電,2.8V – VDDCAMMOT
  • VDD ?模擬電, ??2.8V – VDDCAMA
  • 1.2?主攝設備樹配置 (Rear Camera dts cfg)

    dts配置路徑:kernel\arch\arm\boot\dts\xxx\xxx_sp9820e-2h10-native.dts

    1.2.1?Rear cam I2C?節點配置

    Rear Camera 配置節點:

    &i2c0 { // 根據camera掛載更改status = "okay";clock-frequency = <400000>;/* Rear Camera */sensor_main: sensor-main@37 {compatible = "sprd,sensor-main";reg = <0x37>;clock-names = "clk_src","sensor_eb","clk_96m","clk_76m8","clk_48m","clk_26m";clocks = <&clk_sensor1>, <&clk_mm_ckg_gates 2>,<&clk_twpll_96m>,<&clk_twpll_76m8>,<&clk_twpll_48m>,<&ext_26m>;vddio-supply = <&vddcamio>;vddcama-supply = <&vddcama>;vddcamd-supply = <&vddcamd>;vddcammot-supply = <&vddcammot>;reset-gpios = <&ap_gpio 45 0>;power-down-gpios = <&ap_gpio 47 0>;host = "dcam0";port {sensor_main_0: endpoint {remote-endpoint = <&phy1_out>;};};}; ... };

    1.2.2?Rear?cam?mipi?節點配置

    &mipi_csi_phy1 {status = "okay";sprd,phyid = <1>;sprd,csi = <&csi0>;port {phy1_out: endpoint {remote-endpoint = <&sensor_main_0>;};}; };

    1.3?前攝硬件原理圖 (Front Camera SCH)

    前攝 sp0a09z 03M(30w)像素

    ?

    1.3.1?Front?cam?mipi?布線串聯共模電感?

    1.3.2?Front?cam?csi 0 前攝接線

    1.3.3?Front?cam?rst?腳

    1.3.4?Front?cam?mclk?腳

    1.3.5?Front?cam?pwn?腳

    1.3.6?Front?cam?獲取前攝信息?

    1. MIPI – CSI0 接線

  • MCSI0_CLK_P,MCSI0_CLK_N
  • MCSI0_DATA0_P,MCSI1_DATA0_N
  • 2. cam rst復位腳、 cam mclk 時鐘腳、csm pwn 腳

  • gpio44、gpio42、gpio46
  • 3. 供電部分

  • VDD? IO核心電1.8V – VDDCAMIO
  • VDD ?模擬電 ??2.8V – VDDCAMA
  • 1.4?前攝設備樹配置 (Front Camera dts cfg)

    1.4.1?Front?cam?I2C?節點配置

    &i2c0 { // 根據實際掛載修改status = "okay";clock-frequency = <400000>; ...sensor_sub:sensor-sub@3d {compatible = "sprd,sensor-sub";reg = <0x3d>;clock-names = "clk_src","sensor_eb","clk_96m","clk_76m8","clk_48m","clk_26m";clocks = <&clk_sensor0>, <&clk_mm_ckg_gates 1>,<&clk_twpll_96m>,<&clk_twpll_76m8>,<&clk_twpll_48m>,<&ext_26m>;vddio-supply = <&vddcamio>;vddcama-supply = <&vddcama>;vddcamd-supply = <&vddcamd>;vddcammot-supply = <&vddcammot>;reset-gpios = <&ap_gpio 44 0>;power-down-gpios = <&ap_gpio 46 0>;host = "dcam1";port {sensor_sub_0: endpoint {remote-endpoint = <&phy0_m_out>;};};}; };

    1.4.2?Front?cam?mipi?節點配置

    &mipi_csi_phy0_m {status = "okay";sprd,phyid = <2>;sprd,csi = <&csi1>;port {phy0_m_out:endpoint {remote-endpoint = <&sensor_sub_0>;};}; };

    ?

    2?vendor?部分

    2.1?device?下配置項目的?camera

    路徑: device\xxx\BoardConfig.mk

    1.? 修改對應的 camera 的對應像素信息配置,根據camera 規格書配置。

    #select camera 2M,3M,5M,8M,13M,16M,21MCAMERA_SUPPORT_SIZE := 5M // 代表主攝 FRONT_CAMERA_SUPPORT_SIZE := 0M3 // 代表前攝

    關閉對立沖突的宏

    FRONT_CAMERA_SUPPORT_SIZE := 0M3 ... TARGET_BOARD_NO_FRONT_SENSOR := false

    這兩個宏的含義是相反的

    如果使用了前攝就需要把 TARGET_BOARD_NO_FRONT_SENSOR 置false。

    2. 修改前后攝像頭對應的型號

    #camera sensor type CAMERA_SENSOR_TYPE_BACK := "gc5025,gc5035" CAMERA_SENSOR_TYPE_FRONT := "sp0a09z"

    3. 修改對焦功能配置

    #select continuous auto focus +TARGET_BOARD_CAMERA_CAF := true#select camera support autofocus +TARGET_BOARD_CAMERA_AUTOFOCUS := true

    4. 以上信息務必根據實際需要填寫

    5. 若第一次無法點亮,可以屏蔽AF和FLASH LED功能,優先保證出圖后,再調試其他功能。

    2.2?vendor?添加 lib 和 chromatix 文件

    一般lib和chromatix驅動文件廠家會提供,若不提供。

    需要找一個比較相近的sensor,或同一個數據格式、同一個廠商的驅動文件上修改而來。

    vendor驅動文件主要分2部分:

  • lib 驅動參數配置部分和chromatix 效果參數配置部分
  • 編譯選項配置
  • 不同于qcom架構,展訊的cam 驅動中,lib 驅動配置和效果參數配置文件位于同一個目錄下。

    以gc5025舉例,添加lib驅動和chromatix驅動:

    lib 驅動

    路徑:vendor\sprd\modules\libcamera\sensor\sensor_drv\classic\Galaxycore\gc5025\

    文件

    sensor_gc5025_mipi_raw.c // 計算曝光等函數sensor_gc5025_mipi_raw.h // 驅動參數配置

    chromatix 驅動

    路徑:vendor\sprd\modules\libcamera\sensor\sensor_drv\classic\Galaxycore\gc5025\parameters

    文件:

    isp_nr.hsensor_gc5025_raw_param_cap_0.csensor_gc5025_raw_param_common.csensor_gc5025_raw_param_main.csensor_gc5025_raw_param_prv_0.csensor_gc5025_raw_param_video_0.c ...

    2.3?vendor?引用 lib 驅動入口函數

    修改路徑: vendor/sprd/modules/libcamera/sensor/sensor_cfg.c

    注意:主攝和前攝要添加到不同的數組中。

    back_sensor_infor_tab[] front_sensor_infor_tab[]

    1. 聲明

    主攝聲明

    #ifdef GC5025 extern SENSOR_INFO_T g_sensor_gc5025_mipi_raw_info; #endif

    前攝聲明

    #ifdef SP2509 extern SENSOR_INFO_T g_sp2509_mipi_raw_info; #endif

    2. 添加進數組中

    主攝添加:

    const SENSOR_MATCH_T back_sensor_infor_tab[] = { // gc area ... #ifdef GC5035{MODULE_SUNNY, "gc5035", &g_gc5035_mipi_raw_info, {&dw9714_drv_entry, 0}, NULL}, #endif ... };

    前攝添加

    const SENSOR_MATCH_T front_sensor_infor_tab[] = { // sp area ... #ifdef SP2509{MODULE_SUNNY, "sp2509", &g_sp2509_mipi_raw_info, {NULL, 0}, NULL}, #endif ... };

    2.4?AF?驅動 & 修改編譯選項

    gc5025使用了 dw9714 AF 馬達驅動,以此為例添加 dw9714 AF馬達驅動:

    1. 打開使用 AF 的宏

    ? ? 馬達是自動對焦使用的,需要打開相對應的宏

    修改路徑:vendor\sprd\modules\libcamera\SprdCtrl.mk

    ? ? 代碼如:

    #select continuous auto focus 持續對焦宏控TARGET_BOARD_CAMERA_CAF := true#select camera support autofocus 自動對焦宏控TARGET_BOARD_CAMERA_AUTOFOCUS := true

    持續對焦控制方式:

    TARGET_BOARD_CAMERA_CAF,若為真(true),則定義支持持續對焦的宏 ===> ifeq ($(strip $(TARGET_BOARD_CAMERA_CAF)),true) LOCAL_CFLAGS += -DCONFIG_CAMERA_CAF endif

    自動對焦控制方式:

    TARGET_BOARD_CAMERA_AUTOFOCUS若不為真(true),則定義不支持自動對焦的宏

    定義有點繞,但是控制原理還是和正常一樣,這樣做有一個好處,就是AF的功能默認就是開啟的。

    即:

    AUTOFOCUS = true,判斷條件不成立,無動作,就(默認)支持自動對焦功能。

    AUTOFOCUS = false,判斷條件成立,定義不支持AF的宏,就不支持自動對焦功能。

    ifneq ($(strip $(TARGET_BOARD_CAMERA_AUTOFOCUS)),true) LOCAL_CFLAGS += -DCONFIG_CAMERA_AUTOFOCUS_NOT_SUPPORT endif

    2 配置對應的AF 的宏

    2.1 打開 AF 宏定義

    device\prj_name\xxx\BoardConfig.mk

    代碼如:(這個宏經過追溯代碼調用,好像不起作用。。。)

    #VCM DRIVER TARGET_BOARD_AF_VCM_DW9714 := true

    2.2 添加AF 索引

    ???路徑:vendor\sprd\modules\libcamera\sensor\sensor_cfg.c

    代碼如:

    extern struct sns_af_drv_entry dw9714_drv_entry;#ifdef GC5025{MODULE_SUNNY, "gc5025", &g_sensor_gc5025_mipi_raw_info, {&dw9714_drv_entry, 0}, NULL}, #endif

    3 添加AF驅動文件

    路徑:vendor\sprd\modules\libcamera\sensor\af_drv\dw9714\

    2.5?OTP?驅動 ( eeprom) & 修改編譯選項

    路徑: vendor\sprd\modules\libcamera\sensor\otp_drv\driver\

    部分cam 不使用eeprom(OTP)驅動,這里以 imx258的OTP驅動添加為例:

    1?打開 使用OTP 的宏控開關

    路徑:vendor\sprd\modules\libcamera\sensor\sensor_cfg.c

    代碼修改:

    extern otp_drv_entry_t imx258_drv_entry;{MODULE_TRULY, "imx258", &g_imx258_mipi_raw_info, {&dw9800_drv_entry, 0}, &imx258_drv_entry},

    2 添加 OTP 驅動文件

    路徑: vendor\sprd\modules\libcamera\sensor\otp_drv\driver\imx258\

    驅動文件:

    imx258_otp_drv.cimx258_golden_otp.himx258_otp_drv.h

    ?

    3?Tips

    全刷驗證。

    ?

    ?

    你再快,也永遠有人比你快!Fighting ~~

    總結

    以上是生活随笔為你收集整理的Sprd平台添加Camera驱动(SL8521E/SC9820E)的全部內容,希望文章能夠幫你解決所遇到的問題。

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