展锐平台Camera驱动移植

本文基于展锐的ums9620-2h10平台上讲解Camera驱动的移植和配置的完整过程。

一、Camera驱动代码结构

   展锐平台SDK的很多功能一般都是以模块化为主。camera的驱动位于libcamera这个模块。驱动代码具体路径为:vendor/sprd/modules/libcamera/。整个模块的驱动代码结构如下:

二、配置流程

编译型配置: bsp/kernel5.4/kernel5.4/arch/arm64/boot/dts/sprd/ums9620-2h10-overlay.dts

编译型配置:vendor/sprd/modules/libcamera/sensor/sensor_drv/classic/

解析型配置:vendor/sprd/modules/libcamera/sensor/its_param/qogirl6/

解析型配置:device/sprd/qogirl6/ums9620-2h10/module/camera/sensor_config.xml

1、硬件配置---->DTS文件配置

文件路径如下:bsp/kernel5.4/kernel5.4/arch/arm64/boot/dts/sprd/ums9260-2h10-overlay.dts。要根据实际使用平台的硬件原理图配置,确定Camera挂在哪一路I2C上,reset-gpiod的引脚以及IOVDD、AVDD、DVDD和AFVDD的供电

&i2c0 {
        status = "okay";   
        clock-frequency = <400000>;
        #address-cells = <1>;
        #size-cells = <0>;
         //senor_main: sensor_id 0 (一般为后主摄)
         //senor_main2: sensor_id 2 (一般为后辅摄)
         
        sensor_main: sensor-main@20 {
                compatible = "sprd,sensor-main";
                reg = <0x20>;  //I2C地址,用来区分I2C设备,不一定是设备的实际地址
                clock-names = "clk_src","sensor_eb",
                        "clk_96m","clk_64m",
                        "clk_51m2","clk_48m","clk_26m";
                clocks = <&mm_clk CLK_SENSOR0>,<&mm_gate CLK_SENSOR0_EN>,
                                <&g5l_pll CLK_TGPLL_96M>,<&g5l_pll CLK_TGPLL_64M>,
                                <&g5l_pll CLK_TGPLL_51M2>,<&g5l_pll CLK_TGPLL_48M>,<&ext_26m>;
                vddio-supply = <&vddcamio>;  //IOVDD
                vddcama-supply = <&vddcama0>; //AVDD
                vddcamd-supply = <&vddcamd0>;//DVDD
                vddcammot-supply = <&vddcammot0>; //AFVDD
                reset-gpios = <&ap_gpio 40 0>;   //reset
                power-down-gpios = <&ap_gpio 46 0>; //PWDN
                sprd,phyid = <0>;  //PHY
                csi = <&csi0>;    //csi
                power-domains = <&mm_domain>;
        };
            //senor_sub: sensor_id 1 (一般为前摄)
           sensor_sub: sensor-sub@5a {
                compatible = "sprd,sensor-sub";
                reg = <0x5a>;
                clock-names = "clk_src","sensor_eb",
                        "clk_96m","clk_64m",
                        "clk_51m2","clk_48m","clk_26m";
                clocks = <&mm_clk CLK_SENSOR0>,<&mm_gate CLK_SENSOR0_EN>,
                        <&g5l_pll CLK_TGPLL_96M>,<&g5l_pll CLK_TGPLL_64M>,
                        <&g5l_pll CLK_TGPLL_51M2>,<&g5l_pll CLK_TGPLL_48M>,<&ext_26m>;
                vddio-supply = <&vddcamio>;
                vddcama-supply = <&vddcama0>;
                vddcamd-supply = <&vddcamd0>;
                vddcammot-supply = <&vddcammot0>;
                reset-gpios = <&ap_gpio 39 0>;
                power-down-gpios = <&ap_gpio 45 0>;
                sprd,phyid = <1>;
                csi = <&csi1>;
                power-domains = <&mm_domain>;
        };
};

2、添加驱动文件

驱动文件存放的路径为:vendor/sprd/modules/libcamera/sensor/sensor_drv/

展锐平台的框架已经在classic目录下建好存放各sensor vendor对应的驱动代码文件夹,将自己所用的Camera放到对应文件夹中,这里我用的是OmniVision的ov08a10

添加好驱动后要配置一下sensor_lib_cfg.mk文件,在sensor_lib_cfg.mk中添加libsensor_ov08a10将编译好的so文件打包到pac。

 

3、Tuning参数配置

Tuning参数是决定Camera的效果。 路径如下:vendor/sprd/modules/libcamera/sensor/its_param/
将如下的Tuning参数文件夹添加到its_param目录下。
然后要将 Tuning 参数文件夹下所有文件复制到 pac vendor/firmware 目录下(即将 bin 文件打包到 pac 对应文件vendor/sprd/modules/libcamera/libcam_device.mk 内容如下:

4、模组的配置

 路径如下:device/sprd/qogirl6/ums9230_4h10/module/camera/sensor_config.xml
 sensor id 0
      <CameraModuleCfg>                      //sensor属性字段
        <SlotId>0</SlotId>                    
        <SensorName>ov08a10</SensorName>   //sensor Name:与sensor驱动文件夹要保持一致
        <Facing>BACK</Facing>                //sensor的朝向,指的是后摄
        <Orientation>90</Orientation>        //sensor安装的角度
        <Resource_cost>55</Resource_cost>    //sensor的资源占有比例,0-100
        <SensorRole>dualcam_master</SensorRole> //sensor角色,如不配置认为单摄
        <VCM>
            <AfName>lc898219</AfName> //与AF驱动文件名称保持一致
            <Mode>0</Mode>            //AF的工作模式。默认为0,暂未使用
        </VCM>
        
        <TuningParameter>
            <TuningName>ov08a10</TuningName>//与its_param目录下的Tunning参数文件夹名称相同
        </TuningParameter>
      </CameraModuleCfg>
      

5、AF驱动配置

添加AF的驱动文件到如下路径:vendor/sprd/modules/libcamera/sensor/af_drv/。要根据自己camera实际使用的AF添加。

添加完AF驱动后,要配置vcm_lib_cfg.mk文件将编译好的so打包到pac:

以上就是基于展锐平台框架下的camera驱动移植和配置的完整流程。本篇文章是记录自己的学习过程,方便自己以后可以查看笔记,也希望对大家有所帮助,谢谢!

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值