A20 linux(dragonboard)同时使用Parallel CSI Camera及UVC
2015-11-19 12:10
826 查看
【目标】
在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的代码
第二步,增加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需要作以下修改
4、编译打包烧录
【结果】
下图LCD右上角为parallel csi camera preview,左下角为usb camera preview,两个摄像头均已打开并持续采集数据绘制以屏幕上。
【遗留问题及解决方案】
由于usb camera的数据格式是YUYV,LCD中usb camera preview区域的格式是YUV420,所以无法正确显示来自于usb camera的画面数据。解决此问题可考虑数据格式转换,将YUYV转成YUV420再绘制以屏幕上,实现转换可使用A20 G2D,效率更高。
在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,效率更高。
相关文章推荐
- redhat6.5 配置使用centos的yum源
- Linux下的sed命令使用详解
- Linux系统下如何挂载FAT32的U盘
- 关于Linux的缓存内存 Cache Memory详解
- SAP router installation for Linux
- 解决Linux下3T硬盘分区只有2T(2199G)可用
- 安装SAP Solution Manager 7.1 on Suse Linux 2
- django restfull centos6.5 x86_64 python2.7
- 虚拟机中的Linux系统如何和windows共享文件夹
- CentOS的MySQL报错:Can't connect to MySQL server
- 【linux】关于中文输入法设置
- 操作系统Unix、Windows、Mac OS、Linux的故事
- linux usb枚举过程分析之守护进程及其唤醒【转】
- 如何让linux 复制拷贝命令 不询问覆盖、自动覆盖 问题
- linux下安装jdk
- 串口工具的使用
- Linux下使用QQ:Chrome扩展程序ARC Welder
- CentOS 7 环境下使用postgres源码编译安装PG
- linux 下远程连接windows
- Linux c 源码(StrDelAllSpace:去除字符串所有空格)(strpack)