一种基于ARM Linux的视频采集系统的实现
2017-12-27雷晓龙杨飞张晶
雷晓龙,杨飞,张晶
(西安石油大学电子工程学院,西安 710065)
一种基于ARM Linux的视频采集系统的实现
雷晓龙,杨飞,张晶
(西安石油大学电子工程学院,西安 710065)
随着科学技术的快速发展,视频监控系统得到广泛的应用。在ARM11平台下的嵌入式视频采集系统的实现。首先进行软件和硬件开发环境的搭建;其次实现ARM平台与图像采集接口的连接,并编写模数转换芯片SAA7113H驱动程序;然后实现视频的实时采集和显示以及实现网络的实时传输;最后实现ARM Linux平台的视频采集系统。
ARM;Linux;嵌入式;视频监控
0 引言
传统意义上的视频采集系统只用于安防,近几年随着科技的进步,视频采集系统已经覆盖到了人们生活的各个方面[1],例如教育、医疗、国防、生产等。它给我们的生活带来了诸多的便利,相信在未来的人工智能方面会发挥更加重要的作用[2]。相对于以往的视频采集系统,基于Linux平台的视频采集系统更具有灵活、低成本,移植性良好等特性。因此本文提出一种基于ARM Linux平台的视频采集系统,主要通过开发环境的搭建包括Uboot移植、Linux内核移植、SAA7113H驱动的编写、视频的采集显示以及网络传输等几个方面来实现视频的采集及处理。
1 系统开发的总体框图
本文提出的视频采集系统主要由视频采集、实时显示和网络通信三个方面组成。首先进行图像的采集,采集到的图像为模拟信号,因此不能直接显示,必须通过模数转换芯片进行信号的处理,最后要在屏幕显示还需要数据处理。前端输入我们选用普通的CCD摄像机,模拟视频采集模块中的模数转换芯片将模拟复合视频信号转换为数字信号。该数字信号需要用压缩模块中的压缩芯片进行压缩和编码,接下来将得到的数据交给ARM微处理器。
主芯片选用三星的S3C6410,该芯片集成了标准视频编解码器,模数转换芯片选用飞利浦公司的SAA7113H,硬件平台搭建方案如图1所示。
图1 整个视频采集系统的框图
2 视频采集系统软件开发环境搭建
嵌入式系统具有内核小、专用性强、高实时性、需要开发工具和环境等特点[3]。它包含了很多功能模块,例如系统内核、驱动接口、驱动软件、图形界面、浏览器等。目前广泛应用的嵌入式操作系统主要有嵌入式Linux、实时操作系统 VxWorks、WindowsCE等,在手机上广泛应用的有Android、iOS等[4]。本次设计所选用的系统为运行在虚拟机上Linux系统,之所以选择Linux,不仅是因为它资源丰富,最重要一点是因为它是开源的。
为了让PC上编写的程序可以在下位机运行,这就需要搭建交叉开发环境。主机和从机通过UART连接。接下来将从Bootloader的移植、Linux内核的移植、以及根文件系统的创建等方面进行阐述。
A.Bootloader的移植
Bootloader相当于Bios系统,其实就是内核运行之前的一段代码,它的作用无非就是初始化CPU、内存、串口、代码自拷贝,跳转到内存执行[5]。本文中使用的引导加载程序是是通用Bootloader配置而来,简称U-boot。U-boot可以根据自己的需求进行定制。通过UART将Uboot1.3.2下载到开发板RAM中,然后将Bootloader写入开发板的Flash。U-Bootz主要用于加载和引导内核镜像,同时它允许更改存储在Flash中的内核镜像和根文件系统[6]。
B.Linux内核移植
首先从Linux官网下载Linux3.0.1bk tar.bz2源码安装包,接下来对源码进行解压缩;然后在Linux主机上安装交叉编译环境:下载并安装arm-linux-gcc编译器,同时需要修改内核的Makefile:选择架构ARM,并从系统中给出arm-linux-gcc的路径;接下来需要配置内核;最后进行内核的编译。内核编译后,将在arch/arm/boot目录中生成三个内核映像文件“Image”、“zIm⁃age”和“uImage”,Image是映像文件的正常大小,zImage是压缩的内核映像文件。Uboot映像由zImage和Ubootloaderheader文件组成。需要将zImage下载到开发板中,下载工具选用dnw工具。
C.根文件系统的构建
根文件系统主要是为了开发板和Linux主机之间进行交互,用户不用担心底层怎样实现,Linux根文件系统遵循FHS标准(Filesystem Hierarchy Standard,文件系统层次标准)。根文件系统创建需要用到busyb⁃ox。首先创建文件系统rootfs,并把busybox编译生成的bin、usr、sbin三个子目录复制到rootfs目录下,并在该目录下创建 dev、lib、etc、var、temp等子目录,在 etc目录下建立init.d目录。接下来需要准备inittab、fstab、linuxrc、rcS。inittab和fstab文件都放到etc目录下,然后需要在dev目录下执行命令#mknod console c 5 1,创建consle节点。最后将busybox需要的动态链接库:libcrypt.so.1、libc.so.6、ldlinux.so.2拷贝到 lib目录下。这样根文件系统构建即完成。
3 视频采集及实时显示
V4L2是Video For Linux Two的简称,它是Linux下的一种通用视频架构,它具有丰富的函数接口,对于程序员来说,不用关心它具体的底层实现[7],V4L2具体的图像采集流程如图2所示。在Linux系统中,视频设备可看作一个文件,使用open函数打开视频设备设定属性及采集方式;用VIDIOC_QUERYSTD来检测当前视频设备支持的标准;设定视频捕获格式;完成内存分配;获取并记录缓存的物理空间;最后采用mmap函数进行视频采集。
图2 视频采集流程图
3.1 本地LCD实时显示
该部分的功能是利用Linux提供的帧缓冲设备(fr⁃amebuffer),该机制可以让应用程序把采集到的图像在屏幕上显示出来[8]。
帧缓冲(framebuffer)是Linux为显示设备提供的一个接口,由于Linux下一切设备皆文件,因此将其抽象成一种设备文件,用户通过此文件可以对缓冲区直接进行读写。在Linux操作系统中,/dev/fb*为帧缓冲设备所对应的文件,Linux下最多支持32个帧缓冲设备。帧缓冲设备为标准字符设备,主设备号为29,次设备号为0到31[9]。在Linux中打开/dev/fb设备文件,其为显存所对应的设备文件;计算缓冲区大小;用mmap函数将屏幕缓冲区的地址映射到用户空间的虚拟地址上;进行图像显示;其操作流程如图3所示:
图3 LCD显示流程
3.2 视频采集结果分析
将系统的的软件和硬件完成后,需要对整个系统的软硬件进行调试。利用已经建立好的共享文件夹和友善之臂开发板对图像系统进行测试,最后在LCD上采集到的视频如图4所示。实验结果表明,本文所提出的基于ARM Linux的视频采集系统能够较好的采集到实时显示清晰流畅的画面,而且采集到图像画面的稳定性好,系统所实现的效果可以满足生活中对于视频监控的要求,在实际中具有很高的实用性和推广性。
图4 所采集到的图像
4 结语
本文详细论述了基于ARM11架构和Linux操作系统的嵌入式视频采集系统的设计和实现,首先从芯片的选型以及S3C6410开发板的硬件描述以及CCD摄像头的连接方式进行描述,其次构建了Linux交叉开发环境,并在嵌入式平台上完成了U-boot、Linux内核以及根文件系统的移植。,最后整个系统实现了较为清晰的视频采集,并且具有画面具有良好的稳定性。本文没有实现视频的录像,拍照以及实时传输功能,所以在后续的研究中,将针对这些功能进行研究和改进,提高该系统的完整性。
[1]李向东.数字视频监控系统的研究与实现[硕士学位论文].西安:长安大学,2008.
[2]张亚峰.安防监控系统集成软件设计[硕士学位论文].南京:南京理工大学,2005.
[3]徐力,孔岩.视频监控系统的现状和发展趋势.信息技术与信息化,2005,17(4):61-62
[4]骆云志,刘治红.视频监控技术发展综述.兵工自动化,2009,28(1):2-5
[5]Hampapur A,Brown L,Connel J,et al.Smart Video Surveillance:Exploring Theconcept of Multiscale Spatiotemporal Tracking.IEEE Signal Processing Magazine,2005,22(2):38-51
[6]韦东山.嵌入式Linux应用开发完全手册.北京:人民邮电出版社,2009.65
[7]王金龙.嵌入式操作系统开发与应用程序设计.北京:清华大学出版社,2009.78
[8]Daniel P.Bovet,Marco Cesati.深入理解Linux内核.陈莉君,张琼声,张宏伟译.北京:中国电力出版社,2007.156
[9]赵炯.Linux内核完全剖析.北京:机械工业出版社,2010,278
[10]陈立定,杨俊辉,陈伟欣.使用Busybox制作Cramfs根文件系统.计算机技术与发展,2009,19(4):146-148
Implementation of a Video Acquisition System Based on ARM Linux
LEI Xiao-long,YANG Fei,ZHANG Jing
(School of Electronic Engineering,Xi'an Petroleum University,Xi'an 710065)
With the rapid development of science and technology,video surveillance system has been widely used.Introduces the realization of embed⁃ded video capture system under ARM11 platform.First of all,builds the software and hardware development environment.Next,achieves the connection of ARM platform and image acquisition interface,and the preparation of analog-to-digital conversion chip SAA7113H driv⁃er program.Then realizes the real-time video capture and display and real-time transmission of the network.Finally,realizes the video cap⁃ture system of ARM Linux platform.
ARM;Linux;Embedded;Video Surveillance
1007-1423(2017)33-0061-04
10.3969/j.issn.1007-1423.2017.33.015
雷晓龙(1991-),男,陕西渭南人,硕士研究生,学生,研究方向为嵌入式开发
2017-09-28
2017-11-20