文档章节

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

ka布
 ka布
发布于 2016/10/31 16:05
字数 530
阅读 225
收藏 0

钉钉、微博极速扩容黑科技,点击观看阿里云弹性计算年度发布会!>>>

【目标】
在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,效率更高。

ka布
粉丝 0
博文 20
码字总数 6282
作品 0
东莞
技术主管
私信 提问
加载中
请先登录后再评论。
7、基于嵌入式Linux的视频采集系统---UVC驱动模型介绍

UVC 即 usb video class。USB协议中,除了通用的软硬件电气接口规范等,还包含了各种各样的Class协议,用来为不同的功能定义各自的标准接口和具体的总线上的数据交互格式和内容。这些Class协...

osc_sraynp8f
2018/04/01
22
0
UVC和V4L2的关系(转载)

UVC是一种usb视频设备驱动。用来支持usb视频设备,凡是usb接口的摄像头都能够支持 V4L2是Linux下的视频采集框架。用来统一接口,向应用层提供API UVC: USB video class(又称为USB video d...

osc_c0qub4nv
2019/03/30
38
0
12、UVC&V4L2的关系

UVC是一种usb视频设备驱动。用来支持usb视频设备,凡是usb接口的摄像头都能够支持 V4L2是Linux下的视频采集框架。用来统一接口,向应用层提供API UVC: USB video class(又称为USB video d...

osc_sraynp8f
2018/04/01
11
0
ROS学习笔记七:在ROS中使用USB摄像头

下面是一些USB摄像头的驱动(大多数摄像头都支持uvc标准): <br /> 1 使用软件库里的uvc-camera功能包 1.1 检查摄像头 ------------------------------------- 显示如下: Bus 002 Device 0...

osc_1dcw7r5z
2019/04/03
13
0
全志A33编译脚本分析

0x00 环境说明: 分析所使用的SDK为锐尔威视的开发板的资料中的Linux-SDK 0x01 脚本分析: 顶层目录下的build.sh: buildroot/scripts/mkcommon.sh $@ 本质上是调用的 buildroot/scripts/mk...

osc_jwwyedri
2019/06/22
3
0

没有更多内容

加载失败,请刷新页面

加载更多

还在用Swagger(丝袜哥)生成接口文档?我推荐你试试它.....

JApiDocs是一个无需额外注解、开箱即用的SpringBoot接口文档生成工具。 编写和维护API文档这个事情,对于后端程序员来说,是一件恼人但又不得不做的事情,我们都不喜欢写文档,但除非项目前后...

路人甲Java
07/09
7
0
智能仓储的独角兽逻辑

智能仓储的主要应用市场在哪里?客户的付费意愿和付费能力如何? 1、仓储设备具备标准化和通用化特点 由于电商和新零售的快速发展,轻工业品零售仓库的需求量大幅增加。而中国又是全球轻工业...

logiter
2019/08/23
14
0
可是小腿哪能扭过大腿

父亲是一个特别勤苦的人,他从不睡懒觉,每天天麻麻亮,或是下地干活,或是在家搞副业,或是拿着铁锨、粪筐,到路边,到村子周围,到牲畜常出入的地方,去拾粪蛋子,为庄稼积攒肥料,父亲不仅...

瑾123
41分钟前
16
0
一个volatile跟面试官扯了半个小时

《安琪拉与面试官二三事》系列文章,本文是此系列第三篇 一个HashMap能跟面试官扯上半个小时 一个synchronized跟面试官扯了半个小时 欢迎关注Wx公众号:【安琪拉的博客】—揭秘Java后端技术,...

osc_6ls9vwji
42分钟前
0
0
内网渗透靶机-VulnStack 2

WEB服务器:windows2008系统 外网网卡IP:192.168.1.152 内网网卡IP:10.10.10.80 域成员:windows server 2003系统 网卡IP:10.10.10.200 域控服务器:windows server 2008系统 网卡IP:192...

dnsil
07/10
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部