打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

【目标】
在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;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

第二步,增加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   = 1module_count= 6module1_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     = 1csi_cnt     = 1fps         = 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

4、编译打包烧录

cd lichee./build.sh -p sun7i_dragonboard./build.sh pack
  • 1
  • 2
  • 3

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

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
无线网卡驱动RT73的移植 (转)
ROS学习(三)调用笔记本和usb外接摄像头
【Linxu应用】 USB Camera摄像头( UVC 与 gspca)
ubuntu12.04+fuerte 下跑通lsd
[z]关于android中的ramdisk.img及uImage无法包含驱动模块(*.ko)的问...
笑遍世界 ? 分析Linux kernel在“make install”时的“ERROR: modinfo: could not find module power
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服