A20 linux(dragonboard)同时使用Parallel CSI Camera及UVC

原创 2015年11月19日 12:10:43

【目标】
在A20上同时对parallel同时使用parallel csi摄像头及usb摄像头进行preview。
【选型】
硬件选用主控为A20的CubieBoard2开发板。
软件SDK选用全志A20 Kitkat SDK中的lichee包。
【过程】
1、在linux-3.4的menuconfig中将uvc驱动选项打开,USB_VIDEO_CLAS设置成m,USB_VIDEO_CLASS_INPUT_EVDEV设置成y。
Device Drivers —>
<*> Multimedia support —>
[*] Video capture adapters —>
[*] V4L USB devices —>
USB Video Class (UVC)
[*] UVC input events device support
这里写图片描述

2、在dragonboard中加入usb camera的testcase。全志dragonboard环境使用的是linux+DirectFb,可以参考既有的csi camera testcase代码进行添加。大致分为两步:
第一步,在df_view.c的csi camera test代码后加入启动usb camera test的代码

x2 = 0;
height2 = layer_config.height>>1;
y2 = layer_config.height>>1;
if(mic_activated)
{
    width2  = (layer_config.width >> 1)-(layer_config.width>>MIC_POWER_BAR_WITH_SHIFT);
}
else
{
    width2 = (layer_config.width >> 1);
}
if (usb_camera_test_init(x2,y2,width2,height2))
{
    return -1;
}

第二步,增加usbcameratest.c,usbcameratest.c包含了usb camera的初始化、打开、设置参数等核心方法,上文中的usb_camera_test_init函数实现也在这个源码文件里面。可根据以下流程编写usbcameratest.c,
这里写图片描述
这里,有几点需要注意,一是usb camera的数据格式是YUYV,所以在set format的时候,pixel format要设置成YUYV;二是usb camera的图像大小是640x480。

3、从CubieBoard2原理图可知,上面只能使用csi1接parallel csi camera,所以test_config.fex需要作以下修改

[camera]
activated   = 1
module_count= 6
module1_path= "/system/vendor/modules/videobuf-core.ko"
module2_path= "/system/vendor/modules/videobuf-dma-contig.ko"
module3_path= "/system/vendor/modules/camera.ko"
module4_path= "/system/vendor/modules/gc0308.ko"
module5_path= "/system/vendor/modules/sunxi_csi1.ko"
module6_path= "/system/vendor/modules/uvcvideo.ko"
dev_cnt     = 1
csi_cnt     = 1
fps         = 30

4、编译打包烧录

cd lichee
./build.sh -p sun7i_dragonboard
./build.sh pack

【结果】
下图LCD右上角为parallel csi camera preview,左下角为usb camera preview,两个摄像头均已打开并持续采集数据绘制以屏幕上。
这里写图片描述

【遗留问题及解决方案】
由于usb camera的数据格式是YUYV,LCD中usb camera preview区域的格式是YUV420,所以无法正确显示来自于usb camera的画面数据。解决此问题可考虑数据格式转换,将YUYV转成YUV420再绘制以屏幕上,实现转换可使用A20 G2D,效率更高。

版权声明:本文为博主原创文章,未经博主允许不得转载。

尝试制作在A20上(CB2)自己的Linux系统

Linux编译参考文档 http://my.oschina.net/u/1982421/blog/304633 Uboot学习参考资料 http://blog.csdn.net/andy_wsj/ar...

全志A20编译&调试笔记

以前工作笔记,当时记录在word里面,最近整理上传分享。砖头轻拍

A20+Android EETI电阻屏调试记录

硬件平台:sen_A20 系统版本:Android 4.2.2 内核版本:linux3.3 固件版本:v1.2 电阻屏:17寸 EETI eGTouch (USB) ...

A20网络机顶盒移植4.5内核+U-Boot+rootfs

A20网络机顶盒移植4.5内核+U-Boot+rootfs

编译mini2440的crosstool-NG和全志A20的Linux BSP(Buildroot)的心得

前言之前花了两个月时间用crosstool-NG编译出了mini2440的交叉编译工具链,后来又花了一个月时间编译全志A20的Linux BSP(使用Buildroot)。中间出了很多错误,也解决了很...

全志A20 GPIO 总结文档

个人编写的GPIO驱动以及相应的GPIO测试文档
  • chwenj
  • chwenj
  • 2014年12月27日 08:44
  • 6397

全志A20 wifi驱动移植

最近调试了rt5572模块的wifi驱动,sta功能是好的,ap和wifi direct功能没有调试出来,调试流程和教训总结如下: 1、这两款都是usb接口的,首先确保电源是好的,android系统...

全志平台linux启动流程分析

一、BROM阶段        机器上电之后会执行固化在BROM里面的一段引导程序,这个程序会依次遍历所有支持的启动介质,直到找到第一个支持的。目前支持的启动介质是sd/mmc卡、nand和spin...

A20 最小系统改造 为ubuntu-core-14.04-core-armhf.tar.gz

http://cdimage.ubuntu.com/ubuntu-core/releases/14.04/release/ubuntu-core-14.04-core-armhf.tar.gz ...

A20开发之内核编译

今天,花了一天的时间去摸索Cubieboard2的内核编译,总算是编译成功了。         首先,环境要求:        1.主机操作系统:请务必使用 Ubuntu12.04 ...
  • fxjqzs
  • fxjqzs
  • 2015年08月05日 21:36
  • 847
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:A20 linux(dragonboard)同时使用Parallel CSI Camera及UVC
举报原因:
原因补充:

(最多只允许输入30个字)