Xilinx社区
首页 > 技术专栏 > 骁龙820A 车载原型系统上调试ov5647记录(1)
骁龙820A 车载原型系统上调试ov5647记录(1)
来源:技术专家 时间:2017-06-23

  开发车载信息娱乐系统和产品的厂商面临着诸多挑战,下一代车载信息娱乐系统正以前所未有的创新速度变革驾乘体验。骁龙820A是专用的车用处理器,在连接性、图形显示、拍摄、电池续航能力及功率等方面给人以极致的体验。Qualcomm的系统化解决方案,结合了领先技术、规模和经验,支持先进车载信息娱乐系统的开发。

  本文重点介绍骁龙820A上CPU和DSP在图像处理上的优势。汽车级骁龙820A处信息娱乐理器是一大亮点,它集成前沿的CPU、GPU 和DSP,帮助减少任务负载量、增强性能、降低功耗,并提升用户体验。

  笔者所在公司正好有一个利用820A开发项目,主要是对820A上支持raw data数据的ov5647摄像头进行开发调试。由于ov5647摄像头使用较少,我们在开发过程中遇到了一些问题,这里小编把整个过程尽可能多的都记录下来,供大家参考。

  笔者准备分成一个系列来写,这篇主要介绍ov5647的驱动移植。

  对OV5647摄像头RAW数据的支持

  DSP的主要功能是处理大量的音视频图像数据,摄像头无疑是这些图像数据的最大来源。笔者项目中采用ov5647摄像头模组具备五百万像素,并支持RAW格式拍摄的1/4寸的感光元件。具有极佳的弱光感光效果,并支持以每秒 60 帧录制 720p视频,或者支持以每秒 30帧拍摄1080p的视频。

  ov5647的结构

  下图是ov5647模组,该模组使用2组Mipi线,通过3.7V和GPIO1控制模组上三个电压转换芯片,对DVDD,AVDD和IOVDD供电,同时控制了模组上的外置晶振,从而初始化ov5647。

  按照接口把ov5647的模组连接到820A处理器上,主要完成如下开发调试:

  配置DTS

  找到该Android版本的dtsi文件,添加ov5647的具体配置信息,在里面添加如下信息:

  camera_vdddo_2v8: fixedregulator@1 {

  compatible = "regulator-fixed";

  regulator-name = "camera_vdddo";

  regulator-min-microvolt = <2800000>;

  regulator-max-microvolt = <2800000>;

  regulator-always-on;

  };

  &cci{

  ...

  remote-endpoint = <&ov5647_ep>;

  remote-endpoint = <&ov5647_2_ep>;

  ...

  }

  &blsp_i2c6{

  ...

  ov5647_rear_camera:camera_rear@76 {

  compatible = "ovti,ov5647";

  reg = <0x76>;

  enable-gpios = <&msmgpio 34 0>;

  reset-gpios = <&msmgpio 35 1>;

  pinctrl-names = "default";

  pinctrl-0 = <&camera_rear_default>;

  clocks = <&gcc GCC_CAMSS_MCLK0_CLK>;

  clock-names = "xclk";

  clock-frequency = <23880000>;

  vdddo-supply = <&camera_vdddo_1v8>;

  vdda-supply = <&camera_vdda_2v8>;

  vddd-supply = <&camera_vddd_1v5>;

  port {

  ov5647_ep: endpoint {

  clock-lanes = <1>;

  data-lanes = <0 2>;

  remote-endpoint = <&csiphy0_ep>;

  };

  };

  };

  ...

  }

  按照系统要求增加和调试驱动

  驱动文件放在kernel/drivers/media/i2c,参考ov5640摄像头驱动,增加初始化电压和GPIO1控制的代码,修改寄存器配置初始化参数,寄存器初始值根据datasheet设置.主要修改一下几个结构体:

  reg_value ov5647_global_init_setting ,

  reg_value ov5647_setting_vga,

  reg_value ov5647_setting_sxga,

  reg_value ov5647_setting_720p,

  reg_value ov5647_setting_1080p,

  ov5647_setting_full

  小编以reg_value ov5647_global_init_setting为例

  static struct reg_value ov5647_global_init_setting[] = {

  { 0x0100, 0x00 },

  { 0x0103, 0x01 },

  // {REG_DLY,0x05},

  { 0x3035, 0x11 },

  { 0x3036, 0x69 },

  { 0x303c, 0x11 },

  { 0x3821, 0x07 },

  { 0x3820, 0x41 },

  { 0x370c, 0x0f },

  { 0x3612, 0x59 },

  { 0x3618, 0x00 },

  { 0x5000, 0x06 },

  { 0x5002, 0x40 },

  { 0x5003, 0x08 },

  { 0x5a00, 0x08 },

  { 0x3000, 0xff },

  { 0x3001, 0xff },

  { 0x3002, 0xff },

  { 0x301d, 0xf0 },

  { 0x3a18, 0x00 },

  ...

  { 0x3000, 0x00 },

  { 0x3001, 0x00 },

  { 0x3002, 0x00 },

  { 0x3017, 0xe0 },

  { 0x301c, 0xfc },

  { 0x3636, 0x06 },

  { 0x3016, 0x08 },

  { 0x3827, 0xec },

  { 0x3018, 0x44 },

  { 0x3035, 0x21 },

  { 0x3106, 0xf5 },

  { 0x3034, 0x1a },

  { 0x301c, 0xf8 }

  };

  配置config使得系统编译对应驱动

  打开camera驱动以及挂在的i2c的宏,第一个是驱动相关的。

  CONFIG_VIDEO_OV5647=y

  CONFIG_CRYPTO_CRC32_ARM64=y

  CONFIG_GPIO_PCA953X_IRQ=y

  第二个是平台相关的配置,最后一个是具体硬件设计上GPIO的扩展芯片驱动,通过PCA953X芯片的GPIO扩展来驱动。

more汽车电子市场动态
more技术专栏
more专家答疑
问:配置高通pmd9607的mpp管脚, 设置为模拟输入一直量不到电压,请教。
答:需要注意,MPP管脚并不是所有MPP管脚都可以配置的,请参考spec说明,你需要配置的pin有没有限制。通常模拟输入的话,还要配置ANA_IN_CTL等寄存器,需要外接模拟量,然后读取该pin的值的寄存器中HKADC值。
问:专家请指导: sensor厂家给的sensor相关资料(chromatix + lib)是支持前置摄像头的,“支持”主要是我这边验证过前置已经点亮。 后置摄像也用同sensor, 但用这套相关资料就点不亮了。 kernel层确认已经PROBE, 同时在/dev下有media0 media1,请协助该如何完成后置的点亮. p.s: 1. 该板后置如果使用其他sensor,可以点亮前后置摄像头; 2. 将后置摄像头拆卸, 可点亮前置, 不拆卸后置,同样可以点亮前置; 3. 如果前置后置一样, 前后置都点不亮, 但kernel层确认都probe, dev下有camera0,camera1,camera2; 4. 拆卸前置,仅后置, 依然无法点亮, kernel已经probe,dev下有camera0,camera1 针对前后置同sensor, 在sensor_init.c增加2sensor, 分别命名为: sensor, sensor_rear,同时在sensor_Libs目录下增加sensor,sensor_rear目录,主要是针对lib部分, 同时对lib中camera_id和position做对应修改(前:CAMERA_1,1,后: CAMERA_0,0) 写的太多, 一句话说明下问题: 前后置同sensor如何同时点亮前后置sensor, 是否需要修改lib中的参数,如何修改?还是其他问题?
答:从现象描述看,可以从以下几点排查。 1,sensor的配置,通常后置sensor 4lanes,而前置sensor 2lanes。换不同型号的sensor可以点亮,说明这些配置可能没有修改 导致一些问题。 2,重点看下,“拆卸前置,仅后置, 依然无法点亮,dev下有camera0,camera1,”,对比下前后置不同型号 枚举dev也是这样,看看HAL层dumpimage检查图像是否正常。 3,camera id枚举冲突,无法区分两颗相同的sensor,tuning参数调用是否正确。
问:请教专家,UE 链路层怎么样才能主动和NODE B断开。 设备和基站没有OTA log,也不太清楚是什么原因导致的连接断开。
答:可以通过AT命令CREG可以离线和在线网络。不知道是否是您需要的情况。 http://blog.chinaunix.net/uid-149881-id-2780145.html
问:有没有懂高通平台root 和解网络锁的高手?
答:eng和userdebug版本上通过adb root。你是否需要如下的方法么, https://zhidao.baidu.com/question/557640730.html
Copyright ©2000-2015 ELECTRONIC ENGINEERING & PRODUCT WORLD. All rights reserved.
京ICP备12027778号-2 北京市公安局备案:1101082052