中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行RK3399 camera驅動開發

發布時間:2022-01-12 09:53:59 來源:億速云 閱讀:1206 作者:柒染 欄目:移動開發

如何進行RK3399 camera驅動開發,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

Android camera驅動開發

概述

目前板子上有兩路mipi rx,可以接雙攝像頭。

DTS配置

1、Enabled  isp

  1. &isp0 {
        status = "okay";
    };
    &isp1 {
        status = "okay";
    };
    &isp0_mmu {
        status = "okay";
    };
    &isp1_mmu {
        status = "okay";
    };

2、Enabled mipi對應的i2c

  1. &i2c1 {
        status = "okay";
    };

camera驅動(默認為OV9750)

1、android 驅動代碼路徑

hardware/rockchip/camera/SiliconImage/isi/drv/OV9750_A

2、編譯生成的libisp_isi_drv_OV9750_A.so 放置于/vendor/lib/hw

3、cp hardware/rockchip/camera/SiliconImage/isi/drv/OV9750_A/calib/ OV9750_A.xml  /vendor/etc/

4、cp hardware/rockchip/camera/Config/cam_board_rk3399.xml /vendor/etc/cam_board.xml

xml 配置

1、根據電路圖為camera上電,并配置rst,pdn,以下按mipi0配置電壓以及相關gpio,I2C通道(1),mipi phy 通道(0),IO 電壓 1.8v、CORE電壓1.8v、模擬電壓:3.2v,具體請看電路圖、以及OV9750 datasheet。

Linux camera驅動開發

概述

RK3399Pro toybrick 開發板分別帶有兩個MIPI,一個DVP攝像頭接口,MIPI支持最高4K拍照,并支持 1080P 30fps以上視頻錄制。此外,開發板還支持 USB 攝像頭。

本文以 OV9750 攝像頭為例,講解在該開發板上的配置過程。

配置原理

由以下電路圖可知,兩路MIPI攝像頭連接的是不同的ISP和I2C通道。

MIPI0:使用ISP0和I2C1,還需配置MIPI_MCLK0、MIPI_PDN、MIPI_RST

MIPI1:使用ISP1和I2C2,還需配置MIPI_MCLK_T2、JMIPI_PDN2、JMIPI_RST2

如何進行RK3399 camera驅動開發

如何進行RK3399 camera驅動開發

DTS配置

配置isp節點

  1. cif_isp0: cif_isp@ff910000 {
                compatible = "rockchip,rk3399-cif-isp";
                rockchip,grf = <&grf>;
                reg = <0x0 0xff910000 0x0 0x4000>, <0x0 0xff968000 0x0 0x8000>;
                reg-names = "register", "dsihost-register";
                clocks =
                    <&cru ACLK_ISP0_NOC>, <&cru ACLK_ISP0_WRAPPER>,
                    <&cru HCLK_ISP0_NOC>, <&cru HCLK_ISP0_WRAPPER>,
                    <&cru SCLK_ISP0>, <&cru SCLK_DPHY_RX0_CFG>,
                    <&cru SCLK_CIF_OUT>, <&cru SCLK_CIF_OUT>,
                    <&cru SCLK_MIPIDPHY_REF>;
                clock-names =
                    "aclk_isp0_noc", "aclk_isp0_wrapper",
                    "hclk_isp0_noc", "hclk_isp0_wrapper",
                    "clk_isp0", "pclk_dphyrx",
                    "clk_cif_out", "clk_cif_pll",
                    "pclk_dphy_ref";
                interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH 0>;
                interrupt-names = "cif_isp10_irq";
                power-domains = <&power RK3399_PD_ISP0>;
                rockchip,isp,iommu-enable = <1>;
                iommus = <&isp0_mmu>;
                status = "disabled";
                      };
    &isp0 {
       status = "okay";
           };
     
    &isp0_mmu {
        status = "okay";
               };
    &cif_isp0 {
    rockchip,camera-modules-attached = <&camera0>;
      status = "okay";
    };

設置CPU MCLK引腳功能

  1. &pinctrl {
    /* */
         cam_mclk {
              cam_default_pins: cam-default-pins {
                                rockchip,pins = <2 11 RK_FUNC_3 &pcfg_pull_none>;
                                          };
                };
              };

在i2c上配置camera節點,mipi0 camera連接到i2c1上

  1. &i2c1 {
             status = "okay";   /* 使能i2c1 */
             /*
             * 一般寫成cameraX:camera-module@ID,其中X為序號,ID為camera的7bit I2C地址
                      * camera0表示節點名,綁定isp節點時,將camera0 attach到isp0
                      */
        camera0: camera-module@10 {
           status = "okay";
           compatible = "omnivision,ov9750-v4l2-i2c-subdev";
           reg = <0x10>;             /* 7bit I2C地址 */
           device_type = "v4l2-i2c-subdev";    /* 無需修改 */
           clocks = <&cru SCLK_CIF_OUT>;     /* 無需修改,時鐘源選擇 */
           clock-names = "clk_cif_out";      /* 無需修改,時鐘源名字 */
     
           pinctrl-names = "default";       /* 無需修改,通過pinctrl配置MCLK引腳 */
           pinctrl-0 = <&cam_default_pins>;      /* 無需修改,與上文的pinctrl定義一致 */
     
           rockchip,pd-gpio = <&gpio4 RK_PD1 GPIO_ACTIVE_LOW>;  /* PD管腳分配及有效電平 */
           rockchip,rst-gpio = <&gpio4 RK_PD2 GPIO_ACTIVE_LOW>; /* RST管腳分配及有效電平 */
     
           rockchip,camera-module-mclk-name = "clk_cif_out";   /* 無需修改 */
           rockchip,camera-module-facing = "back";       //前后置配置
           rockchip,camera-module-name = "MDG001";       //Camera 模組名稱
           rockchip,camera-module-len-name = "NONE";      //Camera 模組鏡頭
           rockchip,camera-module-fov-h = "80";         //模組水平可視角度配置
           rockchip,camera-module-fov-v = "65";         //模組垂直可視角度配置
           rockchip,camera-module-orientation = <0>;      //模組角度設置
           rockchip,camera-module-iq-flip = <0>;        //IQ 上下翻轉
           rockchip,camera-module-iq-mirror = <0>;       //IQ 左右鏡像
           //以上 2 個屬性控制攝像頭的效果參數鏡像配置,一般都是設置成 0,但是發現以下現象:拍攝白墻,圖片的上半部偏色與下半部偏色不一致,或者左右半部偏不一致,即可以將這2個屬性置成1。
           rockchip,camera-module-flip = <1>;
           rockchip,camera-module-mirror = <1>;
           //以上 2 個屬性控制攝像頭驅動中的鏡像配置,如果圖像旋轉 180 度,可以將這 2 個屬性修改成相反的值即可旋轉 180。
           rockchip,camera-module-defrect0 = <1280 960 0 0 1280 960>; //根據攝像頭分辨率進行設置
     
           rockchip,camera-module-flash-support = <0>;        //閃光燈支持
           rockchip,camera-module-mipi-dphy-index = <0>;       //mipi口配置,根據物理連接定義
           as-master = <0>;
      };
    };

驅動說明

與攝像頭相關的代碼目錄如下:

  1. drivers/media/i2c/soc_camera/rockchip
    |-- ov9750_v4l2-i2c-subdev.c    // OV9750驅動
    |-- ov_camera_module.c       // OV系列公共函數
    |-- ov_camera_module.h       //
    |-- rk_camera_mclk.c        // RK Camera MCLK時鐘信號管理
    |-- rk_camera_mclk.h
    |-- rk_camera_module.c       // RK 系列公共函數
    `-- rk_camera_module_version.h   //模塊版本信息

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

如皋市| 盐城市| 白玉县| 成都市| 泾阳县| 阿巴嘎旗| 奉新县| 富蕴县| 达尔| 甘泉县| 涞水县| 泽库县| 林周县| 苏尼特左旗| 顺平县| 长兴县| 梧州市| 阿克| 扬州市| 万源市| 大石桥市| 中方县| 彭州市| 建水县| 佛学| 敖汉旗| 赤峰市| 包头市| 会理县| 雷州市| 江都市| 长子县| 小金县| 滁州市| 墨玉县| 兴国县| 舒兰市| 郯城县| 武威市| 始兴县| 澳门|