当前位置:   article > 正文

展锐平台Camera驱动移植_展锐ums9620

展锐ums9620

本文基于展锐的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的供电

  1. &i2c0 {
  2. status = "okay";
  3. clock-frequency = <400000>;
  4. #address-cells = <1>;
  5. #size-cells = <0>;
  6. //senor_main: sensor_id 0 (一般为后主摄)
  7. //senor_main2: sensor_id 2 (一般为后辅摄)
  8. sensor_main: sensor-main@20 {
  9. compatible = "sprd,sensor-main";
  10. reg = <0x20>; //I2C地址,用来区分I2C设备,不一定是设备的实际地址
  11. clock-names = "clk_src","sensor_eb",
  12. "clk_96m","clk_64m",
  13. "clk_51m2","clk_48m","clk_26m";
  14. clocks = <&mm_clk CLK_SENSOR0>,<&mm_gate CLK_SENSOR0_EN>,
  15. <&g5l_pll CLK_TGPLL_96M>,<&g5l_pll CLK_TGPLL_64M>,
  16. <&g5l_pll CLK_TGPLL_51M2>,<&g5l_pll CLK_TGPLL_48M><&ext_26m>;
  17. vddio-supply = <&vddcamio>; //IOVDD
  18. vddcama-supply = <&vddcama0>; //AVDD
  19. vddcamd-supply = <&vddcamd0>;//DVDD
  20. vddcammot-supply = <&vddcammot0>; //AFVDD
  21. reset-gpios = <&ap_gpio 40 0>; //reset
  22. power-down-gpios = <&ap_gpio 46 0>; //PWDN
  23. sprd,phyid = <0>; //PHY
  24. csi = <&csi0>; //csi
  25. power-domains = <&mm_domain>;
  26. };
  27. //senor_sub: sensor_id 1 (一般为前摄)
  28. sensor_sub: sensor-sub@5a {
  29. compatible = "sprd,sensor-sub";
  30. reg = <0x5a>;
  31. clock-names = "clk_src","sensor_eb",
  32. "clk_96m","clk_64m",
  33. "clk_51m2","clk_48m","clk_26m";
  34. clocks = <&mm_clk CLK_SENSOR0>,<&mm_gate CLK_SENSOR0_EN>,
  35. <&g5l_pll CLK_TGPLL_96M>,<&g5l_pll CLK_TGPLL_64M>,
  36. <&g5l_pll CLK_TGPLL_51M2>,<&g5l_pll CLK_TGPLL_48M>,<&ext_26m>;
  37. vddio-supply = <&vddcamio>;
  38. vddcama-supply = <&vddcama0>;
  39. vddcamd-supply = <&vddcamd0>;
  40. vddcammot-supply = <&vddcammot0>;
  41. reset-gpios = <&ap_gpio 39 0>;
  42. power-down-gpios = <&ap_gpio 45 0>;
  43. sprd,phyid = <1>;
  44. csi = <&csi1>;
  45. power-domains = <&mm_domain>;
  46. };
  47. };

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
  1. sensor id 0
  2. <CameraModuleCfg> //sensor属性字段
  3. <SlotId>0</SlotId>
  4. <SensorName>ov08a10</SensorName> //sensor Name:与sensor驱动文件夹要保持一致
  5. <Facing>BACK</Facing> //sensor的朝向,指的是后摄
  6. <Orientation>90</Orientation> //sensor安装的角度
  7. <Resource_cost>55</Resource_cost> //sensor的资源占有比例,0-100
  8. <SensorRole>dualcam_master</SensorRole> //sensor角色,如不配置认为单摄
  9. <VCM>
  10. <AfName>lc898219</AfName> //与AF驱动文件名称保持一致
  11. <Mode>0</Mode> //AF的工作模式。默认为0,暂未使用
  12. </VCM>
  13. <TuningParameter>
  14. <TuningName>ov08a10</TuningName>//与its_param目录下的Tunning参数文件夹名称相同
  15. </TuningParameter>
  16. </CameraModuleCfg>

5、AF驱动配置

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

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

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

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号