首页 > 范文大全 > 正文

一种基于嵌入式Linux的视频采集系统

开篇:润墨网以专业的文秘视角,为您筛选了一篇一种基于嵌入式Linux的视频采集系统范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:介绍了以S3C2440A为处理器,Micro2440开发板为硬件平台,开发基于嵌入式Linux2.6.32.2操作系统的视频采集系统。该系统以USB摄像头为视频获取工具,通过V4L2 编程接口实现摄像头捕获视频数据。实际运行表明,该视频采集系统画面显示稳定流畅、实时性好。

关键词:嵌入式Linux; S3C2440; framebuff ;视频采集

中图分类号:TP391 文献标识码:A 文章编号:2095-2163(2013)04-

A?Video?Capturing?System?based?on?Embedded?Linux

ZHAO Yani1, ZENG Haixing2 , QIAO LiPing3

(1 Tibet Nationality College, Xian yang Shanxi 712082, China;

Zhi Meida Technology Co. Ltd, Shen zhen, 518000, China)

Abstracts:?A?video?capturing?system?based?on?embedded?Linux?2.6.32.2?is?implemented?on?Micro

2440?development?board?with?the?processor?S3C2440A?.?This?system?uses?USB?camera?to?capture

?video?and?obtains?the?video?data?through?V4L2?interface.?The?experiment?results?show?that?the ?system?can?capture?the?video?efficiently?and?stably,?The?captured?video?can?be?displayed?fluently?in?real-time.?

Keywords:?Embedded?Linux; S3C2440A; Framebuff; Video?collection

0引言

随着信息技术的高速发展,实时高品质的图像、视频信息已成为现时应用的迫切需求。质量优异的视频采集系统在安防监控、工农业生产等各个领域内应用越来越普及与广泛。基于嵌入式Linux的视频采集在应用方面的起步并不久,但因其独有的高品质、高智能化和高值性价比等特点而具备显著优势。嵌入式Linux支持TCP/IP协议,可以更好的利用网络技术建立Client/Server工作模型来实现远程视频监控[1,2]。嵌入式技术必将在信息采集应用领域中发挥越来越重要的作用。本文所设计的视频采集系统选择三星公司推出的S3C2440A作为处理器,终端操作平台为嵌入式 Linux 操作系统和 yaffs2文件系统,文章详细叙述了视频采集实现的各个具体步骤,主要内容包括交叉编译环境搭建;基于 framebuff技术调用Video4Linux的API接口,完成实时的图像采集等。

1 视频采集系统总体硬件组成

视频采集系统从功能上分为三个模块:信号采集、处理和显示。其中,信号采集部分采集原始视频数据,信号处理部分则完成对信号的加工,加工后送入显示部分,将采集到的信号在终端显示出来。系统总体硬件组成图[3]如图1所示。

综合本设计需要的视频采集和处理的需求,选择三星公司的S3C2440A为处理器。开发板选择广州友善之臂计算机科技有限公司的Micro2440。其3个串接口波特率高达 115 200bps,提供了2个LCD接口,配置一个7寸的真彩屏显示模块,DM9000 网卡芯片,可以自适应 10/100M 网络。图像采集芯片利用了中星微公司的 ZC301 视频处理芯片。

301系列高清芯片拥有先进的影像控制技术,能实时传递真实画面,图像平滑、视觉舒适。ZC301芯片可以输出RGB和YUV两种图像格式,提供USB1.1/2.0 接口,其USB带宽占用低、不影响同时接入多个USB设备,通过该设备可直接将视频图像传递给处理器,方便快捷,对 Linux 环境有很好的支持。

2 嵌入式Linux视频采集系统开发板软件环境的搭建

主要介绍如何搭建开发板平台,包括u-boot的修改和移植,内核的编译和移植,以及根文件系统的制作和挂载等。

2.1开发宿主机环境的搭建

常用的个人计算机一般都采用windows操作系统,如果因开发将系统变换成Linux操作系统,会给其他工作带来很大的不便,因此可以在windows环境下搭建虚拟的Linux操作系统。本开发选择的虚拟软件为Oracle公司的VM VirtualBox,操作系统为Ubuntu,版本是untu11.04。

为了各个平台之间能够方便地传输文件,还需要搭建一个共享的Samba服务,在搭建Ubuntu的环境以后,需要在其上安装交叉编译工具链,可选用开发板适合的符合EABI标准的交叉编译器[4]ARM-Linux GCC 4.4.3。

2.2 u-boot的修改及烧写

U-boot主要是在开发板上电后初始化硬件,为内核的加载完成相应准备工作。在此选用u-boot-1.2.0的版本源码,给内核初始化传递必要的信息,包括板卡信息;DM9000的网卡支持;nandflash的支持和扇区修改;主频和软硬浮点的修改;最后选用arm-linux-gcc-3.4.1交叉编译器编译生成uboot.bin文件。

u-boot的烧写台式机用H-Flash,笔记本要用j-link调试版。文中选用了台式机,即H-Flash。打开H-flash 选择programing里面reset and check。修改型号:Flash Selection 选择 S29AL016MB,Programing Type 选择 Plain binary Format ,即运用二进制,因为已经编译得到的是二进制文件。Dst Addr 起始地址选择0。然后src File 中加载路径,可以将uboot.bin进行复制存储在d盘下,完成加载即可。结果图2所示:

2.3 内核的裁剪

在内核源码中修改相应的配置,裁剪编译生成所需要的内核。

下载内核并将内核解压到根文件系统文件夹下面,添加arm的支持,进入顶层的Makefile,搜索ARCH,修改代码如下:ARCH?= arm,CROSS_COMPILE?= arm-linux-。其次,设Nand Flas引导,打开配置菜单进行配置,板卡选择S3C2440 Machines ,拷贝默认的配置文件。设备驱动方面添加nandflash支持、串口支持、网卡DM9000支持。文件系统支持方面增加网络文件系统支持、增加Jffs2文件系统的支持、虚拟文件系统的支持等,保存配置退出。修改晶振频率和nandflash分区信息,并且使用arm-linux gcc 4.4.3编译器编译,同时在arch/arm/boot文件夹下生成一个uImage内核映像文件就是所需的内核。

2.4根文件系统的制作

根文件系统主要制作步骤如下:

(1)选用开源版本busybox-1.13,配置裁剪生成需要的linux系统基本工具集,拷贝放入根文件系统/bin下面。

(2)创建/dev目录,添加两个初始设备节点,使用mknod命令,mknod -m 660 console c 5 1和mknod -m 660 null c 1 3。

(3)在/lib下面添加交叉编译器的相关库文件。

(4)在/etc下面新建inittab文件初始化文件系统的配置,在/etc/init.d/rcS中挂载所有目录/bin/mount -a,并新建fstab文件,再写入:none /proc defaults 0 0 //' ,即实现了proc文件系统挂载到文件目录下面。

(5)新建mnt、tmp、proc三个文件夹。

(6)制作jffs2文件系统映像,将mkfs.jffs2拷贝到fs下面并且执行:./mkfs.jffs2 -d fs -o rootfs.img -e 0x20000 --Pad=0x1e00000 -s 0x800 -n -l -U,参数则给定了块大小和页大小,不加校验,小段模式,权限设置为root,最后生成的rootfs.img就是可以使用的内核镜像了。

最后,使用tftp简单文件传输的协议,通过网线接口,将内核和文件系统烧写到开发板。最后结果如图3所示。

3 Video4Linux视频采集

本设计通过调用Video4Linux提供的API来实现图像的采集,主要流程如图4所示。在V4L2中,视频设备可看作一个文件,使用open函数以非阻塞模式打开视频设备,设定属性及采集方式;用VIDIOC_QUERYSTD来检测当前视频设备支持的标准(在亚洲,一般使用PAL(720X576)制式的摄像头);设定视频捕获格式;完成内存分配;获取并记录缓存的物理空间;最后采用mmap函数进行视频采集。

3.1 帧缓冲设备驱动的加载与卸载[5]

(1)Linux内核提供了register_framebuffer()和unregister_framebuffer()函数分别注册和卸载帧缓冲设备,这两个函数都接受FBI指针为参数,对于register_framebuffer()函数而言,如果注册的帧缓冲设备超过了FB_MAX,则函数返回-ENXIO,注册成功返回0。

(2)在帧缓冲设备驱动模块函数加载中,应完成如下四个工作:

① 申请FBI结构体和内存空间,初始化FBI结构体中固定和可变屏幕参数,即填充FBI中的fb_var_screeninfo var 和struct fb_fix_screeninfo fix成员。

② 根据具体屏幕的特点,完成LCD控制器硬件的初始化。

③ 申请帧缓冲设备的显示缓冲区间。

④ 注册帧缓冲设备。

3.2视频采集系统设计测试与结果分析

搭建NFS(网络文件系统),在ubuntu的主机下将NFS根文件系统共享,将开发板与主机设置成同一IP段,接着使用mount命令将根文件系统挂载到开发板。在当前目录下产生snap.jpg,如此图像采集即已经实现。再选用友善之臂基于QT4库的图像系统做进一步的测试,运行测试应用程序./arm_uvccapture, 最后串口输出结果和LCD采集到的视频结果如图5、图6所示。实验结果表明,本课题的视频采集系统能够较好地实时显示清晰流畅的视频图像,稳定性强,其实现效果也完全可以满足当前的视频监控要求。

4 结束语

嵌入式 Linux 操作系统内核裁剪性好,整个系统需要高效设计,灵活配置,才能实现更高的性能。本设计采用中星微 301 摄像头为输入设备,S3C2440 作为处理器设计了基于嵌入式 Li nux 操作系统的视频采集系统。系统运行稳定,显示画面清晰流畅,该系统可在视频监控和可视性电话等领域应用。但视频采集系统的研究仍有未尽之处,整个视频采集系统只是试验阶段,调试运行均在实验室较为理想的环境下运行的,并未投入生产实践中;整个程序设计也只是初步阶段,需要逐步优化改进。此后的研究中应进一步考虑对已获视频数据的存储及远程传输等问题。

参考文献

[1]赵昌永,王勇,陈抗生,等.一种基于嵌入式linux视频采集系统[J].2005,26(8):537-540.

[2] 王恒,王中训,杜思良,等.基于ARM9的USB摄像头图像采集压缩及无线传输[J].电视技术,2011, 35(3):29-31.

[3] 徐富新,罗 明,陈 芳,等. 基于LabVIEW的远程测控系统视频采集的设计与实现[J]. 计算机工程与科学, 2009,35(5):24-27.

[4] HE.Hongjiang,ZHANG Yamin. Research on automobile driving state real-timemonitoring system based on ARM[C]// Proceedings - 2009 International Conference on Computer Engineering and Technology.2009:361-364.

[5] 宋宝华. Linux设备驱动开发详解[M].北京:人民邮电出版社,2010:441-478.

基金项目:“青年学人培育计划”资助项目(13myQP10)。

作者简介:赵亚妮(1976- ),女,陕西礼泉人,研究生,讲师,主要研究方向:智能控制、电子技术应用等;

曾海星(1990- ),男,湖南长沙人,工程师,主要研究方向:嵌入式系统设计及底层驱动开发