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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

前言

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

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

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

    平臺(tái)特性:

    硬件平臺(tái):SL8521E

    軟件平臺(tái):Android-4.4

    Sensor IC:

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

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

    其他:支持閃光燈,自動(dòng)對(duì)焦,持續(xù)對(duì)焦,錄像功能,HDR

    數(shù)據(jù)格式:RGGB

    前言

    1?Kernel?部分

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

    1.1.1?Rear?Cam mipi?布線串聯(lián)共模電感

    1.1.2?Rear cam csi 1?主攝接線

    1.1.3 Rear cam rst?腳

    1.1.4?Rear cam?mclk?時(shí)鐘腳

    1.1.5 Rear cam?pwn?腳

    1.1.6 Rear cam 獲取主攝信息

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

    1.2.1?Rear cam I2C?節(jié)點(diǎn)配置

    1.2.2?Rear?cam?mipi?節(jié)點(diǎn)配置

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

    1.3.1?Front?cam?mipi?布線串聯(lián)共模電感?

    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?前攝設(shè)備樹配置 (Front Camera dts cfg)

    1.4.1?Front?cam?I2C?節(jié)點(diǎn)配置?

    1.4.2?Front?cam?mipi?節(jié)點(diǎn)配置

    2?vendor?部分

    2.1?device?下項(xiàng)目配置 camera

    2.2?vendor?添加 lib 和 chromatix 文件

    2.3?vendor?引用 lib 驅(qū)動(dòng)入口函數(shù)

    2.4?AF?驅(qū)動(dòng) & 修改編譯選項(xiàng)

    2.5?OTP?驅(qū)動(dòng) ( eeprom) & 修改編譯選項(xiàng)

    3?Tips

    你再快,也永遠(yuǎn)有人比你快!Fighting ~~

    ?

    1?Kernel?部分

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

    查閱硬件主板主攝相關(guān)接口信息如下:

    主攝 gc5025 500w:

    1.1.1?Rear?Cam mipi?布線串聯(lián)共模電感

    1.1.2?Rear cam csi 1?主攝接線

    1.1.3 Rear cam rst?腳

    1.1.4?Rear cam?mclk?時(shí)鐘腳

    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復(fù)位腳、 cam mclk 時(shí)鐘腳、csm pwn 腳

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

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

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

    1.2.1?Rear cam I2C?節(jié)點(diǎn)配置

    Rear Camera 配置節(jié)點(diǎn):

    &i2c0 { // 根據(jù)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?節(jié)點(diǎn)配置

    &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?布線串聯(lián)共模電感?

    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復(fù)位腳、 cam mclk 時(shí)鐘腳、csm pwn 腳

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

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

    1.4.1?Front?cam?I2C?節(jié)點(diǎn)配置

    &i2c0 { // 根據(jù)實(shí)際掛載修改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?節(jié)點(diǎn)配置

    &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?下配置項(xiàng)目的?camera

    路徑: device\xxx\BoardConfig.mk

    1.? 修改對(duì)應(yīng)的 camera 的對(duì)應(yīng)像素信息配置,根據(jù)camera 規(guī)格書配置。

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

    關(guān)閉對(duì)立沖突的宏

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

    這兩個(gè)宏的含義是相反的

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

    2. 修改前后攝像頭對(duì)應(yīng)的型號(hào)

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

    3. 修改對(duì)焦功能配置

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

    4. 以上信息務(wù)必根據(jù)實(shí)際需要填寫

    5. 若第一次無法點(diǎn)亮,可以屏蔽AF和FLASH LED功能,優(yōu)先保證出圖后,再調(diào)試其他功能。

    2.2?vendor?添加 lib 和 chromatix 文件

    一般lib和chromatix驅(qū)動(dòng)文件廠家會(huì)提供,若不提供。

    需要找一個(gè)比較相近的sensor,或同一個(gè)數(shù)據(jù)格式、同一個(gè)廠商的驅(qū)動(dòng)文件上修改而來。

    vendor驅(qū)動(dòng)文件主要分2部分:

  • lib 驅(qū)動(dòng)參數(shù)配置部分和chromatix 效果參數(shù)配置部分
  • 編譯選項(xiàng)配置
  • 不同于qcom架構(gòu),展訊的cam 驅(qū)動(dòng)中,lib 驅(qū)動(dòng)配置和效果參數(shù)配置文件位于同一個(gè)目錄下。

    以gc5025舉例,添加lib驅(qū)動(dòng)和chromatix驅(qū)動(dòng):

    lib 驅(qū)動(dòng)

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

    文件

    sensor_gc5025_mipi_raw.c // 計(jì)算曝光等函數(shù)sensor_gc5025_mipi_raw.h // 驅(qū)動(dòng)參數(shù)配置

    chromatix 驅(qū)動(dòng)

    路徑: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 驅(qū)動(dòng)入口函數(shù)

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

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

    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. 添加進(jìn)數(shù)組中

    主攝添加:

    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?驅(qū)動(dòng) & 修改編譯選項(xiàng)

    gc5025使用了 dw9714 AF 馬達(dá)驅(qū)動(dòng),以此為例添加 dw9714 AF馬達(dá)驅(qū)動(dòng):

    1. 打開使用 AF 的宏

    ? ? 馬達(dá)是自動(dòng)對(duì)焦使用的,需要打開相對(duì)應(yīng)的宏

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

    ? ? 代碼如:

    #select continuous auto focus 持續(xù)對(duì)焦宏控TARGET_BOARD_CAMERA_CAF := true#select camera support autofocus 自動(dòng)對(duì)焦宏控TARGET_BOARD_CAMERA_AUTOFOCUS := true

    持續(xù)對(duì)焦控制方式:

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

    自動(dòng)對(duì)焦控制方式:

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

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

    即:

    AUTOFOCUS = true,判斷條件不成立,無動(dòng)作,就(默認(rèn))支持自動(dòng)對(duì)焦功能。

    AUTOFOCUS = false,判斷條件成立,定義不支持AF的宏,就不支持自動(dòng)對(duì)焦功能。

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

    2 配置對(duì)應(yīng)的AF 的宏

    2.1 打開 AF 宏定義

    device\prj_name\xxx\BoardConfig.mk

    代碼如:(這個(gè)宏經(jīng)過追溯代碼調(diào)用,好像不起作用。。。)

    #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驅(qū)動(dòng)文件

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

    2.5?OTP?驅(qū)動(dòng) ( eeprom) & 修改編譯選項(xiàng)

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

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

    1?打開 使用OTP 的宏控開關(guān)

    路徑: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 驅(qū)動(dòng)文件

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

    驅(qū)動(dòng)文件:

    imx258_otp_drv.cimx258_golden_otp.himx258_otp_drv.h

    ?

    3?Tips

    全刷驗(yàn)證。

    ?

    ?

    你再快,也永遠(yuǎn)有人比你快!Fighting ~~

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。