基于ARM9和V4L2接口的嵌入式视频采集系统的制作方法

文档序号:11710202阅读:236来源:国知局
基于ARM9和V4L2接口的嵌入式视频采集系统的制作方法与工艺

本发明属于交通视频采集处理领域,具体来说是一种基于arm9单片机和v4l2接口的嵌入式视频采集系统。



背景技术:

随着社会文明的发展、科学技术的进步,信息日益成为一种比传统能源更为重要的资源,信息将会促进人类社会的进一步发展。日常生活中,人们通过感官从外界感知的各种信息中,约有78%是来自视觉。可见图像在我们的日常生活中扮演着很重要的角色。视觉的感觉是最直接最立体的,而交通视频监控系统作为一种获取图像信息的工具,可以满足交通管理部门对获取图像信息的需求。但目前交通视频采集应用中存在的问题如下:交通视频的采集与传输各自独立,集成度不高。最为典型的就是前端交通监控设备仅负责道路交通车辆的拍摄与取证,由人工定时更换存储交通视频图像的磁盘,因而现有交通数据采集系统急需换代升级,以满足交通大数据的采集、传输与存储的日益增长的迫切需要。从系统的组成上分析,合理的应用就是将前端嵌入式视频采集集成到现有交通监控设备中,由后端服务器系统负责交通视频图像管理或者监控其他设备。基于前端的嵌入式交通视频采集系统是一种由软硬件相组合的产品,通常由操作系统、应用程序、外围硬件设备以及嵌入式微处理器板卡等四个部分组成,尽管外围硬件设备可以依托现有前端交通监控设备进行升级与改造,但由于嵌入式技术的集成度与复杂度较高,其中还涉及交通视频大数据的实时传输,仍然需要借助辅助工具对其进行深入开发,才可以使得系统具备相应功能。



技术实现要素:

本发明提出一种以arm9s3c2440嵌入式微处理器为核心硬件平台的嵌入式交通视频采集系统,针对当前的交通大数据背景下交通监控设备的视频采集需求,通过usb摄像头采集到现场交通视频图像数据,经由集成arm微处理器的专用交通视频采集卡进行实时数据处理,然后基于传输控制协议,通过网络将交通视频图像数据传输到作为浏览器客户端的计算机或移动终端上,最后通过访问浏览器客户端可以实时显示采集到的交通视频图像。

具体来说,本发明采用了以下技术方案:

一种基于arm9和v4l2接口的嵌入式视频采集系统,包括浏览器客户端、集成arm微处理器的专用交通视频采集卡及摄像元件,其特征在于,根据视频采集需求,通过摄像元件采集到现场交通视频图像数据,集成arm微处理器的专用交通视频采集卡读取图像并进行实时数据处理,然后基于传输控制协议通过网络将处理过的交通视频图像数据传输到浏览器客户端,最后通过访问浏览器客户端来实时显示采集到的交通视频图像,其中视频采集卡上建立视频服务器,视频服务器包含应用模块、数据处理模块、驱动模块及摄像头连接模块,摄像头连接模块负责与摄像元件连接,驱动模块包含v4l2驱动并通过v4l2驱动接口调用摄像元件来进行视频采集,数据处理模块通过获取和控制驱动程序得到视频源,然后再将视频频帧进行图像编码,应用模块遵循http协议,将视频图像数据的安卓标准格式发送给web浏览器。

优选地所述摄像元件为usb摄像头。

优选地,通过v4l2驱动接口调用摄像元件采集视频包括:打开摄像头并获取摄像头的参数,然后设置摄像头的参数与图像的属性信息,将分配给摄像头的内存空间释放,从摄像头直接读取并以映射方式存储到内存。

另外优选地,将视频频帧进行图像编码包括:将通过v4l2驱动接口获取的mjpeg格式的图像转换成jpeg格式。进一步,将mjpeg格式的图像转换成jpeg格式包括在mjpeg图像帧开始标志的0xffc0之前插入哈夫曼表,然后进行其它操作。

在另一个优选实施方案中,视频采集卡所采集的交通视频图像数据传输给浏览器客户端包括:在浏览器客户端与视频采集卡之间建立服务器链接,用户通过浏览器客户端给视频采集卡上的视频服务器发送请求,服务器通过监听来自浏览器客户端的请求,并解析浏览器的请求,如果数据请求正确,则服务器响应客户端请求,把通过v4l2驱动接口采集到的视频数据映射到内存中,然后把数据按http协议格式封装视频数据并将响应传送给浏览器,由浏览器显示交通视频。

进一步,服务器监听接收浏览器客户端的请求包括:首先为服务器打开socket端口;设置socket端口的参数,为防止socket端口冲突,忽略socket已经使用;配置服务器地址,设置地址类型、服务端口、地址,并且通过相应函数将其绑定;服务器通过调用相关函数监听客户端的socket端口;接收并创建子线程做相应处理。

更进一步,解析浏览器的请求包括:通过接受浏览器发送过来的数据流,由读取函数逐行读取数据,对数据的解析按照http中的格式解析进行,判断请求类型是否为stream视频流类型。

再进一步,响应客户端请求包括:在解析到浏览器的请求数据类型是视频流类型后,在缓冲区首先设置http响应头,当读取到全局标志pglobal->stop为1时,则说明视频采集的一帧数据结束,然后将获取视频数据也存在缓冲区中,接着设置好http响应帧为未设置的数据,封装好后发送给浏览器。

本发明公开了一个基于arm9单片机和v4l2接口的嵌入式交通视频采集系统。针对目前交通视频大数据的实时数据采集与传输所面临的集成度不高、数据传输效率低的突出问题,使用嵌入式arm9处理器和现有交通监控摄像头来构建硬件系统。通过搭建交叉编译环境、nfs服务器、移植内核、制作根文件系统等来搭建嵌入式软件开发环境。交通视频服务器由视频图像的采集与传输组成。交通视频图像采集是通过编写视频采集驱动调用v4l2接口来实现的,中间涉及哈夫曼编码以及jpeg图像压缩。通过配置arm9的通信网络,使得交通视频服务器能够在专用局域网内以及互联网上均可以正常工作。该系统在终端计算机浏览器和手机浏览器上均都可以访问,并且能够观测到较为流畅的实时交通视频监控。系统总体上采用b/s架构进行设计,由于采用模块化的设计方法,使得系统的部署与执行更加简洁、高效,且具备较高的扩展性和易用性的特点。针对目前交通视频的采集与传输各自独立,将视频图像的采集和数据的传输功能集成到一个体积非常小的板卡设备里,并且采用jpeg图片压缩技术,使得视频图像的传输效率大为提高,增强了系统的稳定性与实时性。该发明主要解决了目前交通视频采集应用中存在的两个主要问题:1)交通视频的采集与传输各自独立,系统集成度不高的问题;2)交通视频图像的数据采集分散,实时连通后端服务器性能不足的问题。

附图说明

图1为本发明开发的交通视频采集系统的软件架构图;

图2是本发明系统中专用交通视频采集卡复位系统电路图;

图3是专用交通视频采集卡网络接口电路图;

图4是专用交通视频采集卡usb接口电路的一个实施例;

图5是专用交通视频采集卡usb接口电路的另一个实施例;

图6是根文件系统基本目录的构建;

图7为烧写u-boot时的dnw与bios界面;

图8为烧写内核界面;

图9为烧写根文件系统界面;

图10为com口配置示意图;

图11为端口配置图;

图12为网络配置图;

图13为命令输入图。

具体实施方式

在当前的交通大数据背景下,交通信息采集与处理系统的开发离不开计算机网络的发展,当前嵌入式交通信息处理设备对各种网络协议如http协议和tcp/ip协议的支持也越来越普及。很多嵌入式交通信息处理设备都可以通过无线或有线链接网络,目前的嵌入式交通信息处理设备对于多媒体的支持也是越来越普及。随着当今智慧城市与交通大数据的发展,以及手持交通检测设备支持wifi上网的产品越来越多,交通管理部门对一种结合嵌入式图像处理与网络设备的产品的需求也日益增加,最终基于这些前端设备采集到实时的交通视频图像大数据,并经过网络将交通视频图像信息传输到后端进行管理与监控的需求也日益迫切。基于arm嵌入式交通视频采集与处理具有稳定性高、实时性强、访问方式多等优点。另外,由于可以和手持设备相结合,从而可以在交通大数据处理领域得到很大的发展。目前arm处理器主要包括以下几个系列的处理器产品:arm7系列、arm9系列、arm9e系列、arml0系列。arm7和arm9是目前arm处理器中使用较广泛的,并且是技术成熟的两大系列arm处理器芯片。对比来说,arm9系列微处理器主要应用于无线设备、安防系统、打印机、车载电子设备、机顶盒和数字摄像机等。本发明设计的交通视频采集卡所用处理器便是以arm9单片机为核心处理器。所用arm9s3c2440微处理器的内核arm920t芯片具有低功耗、高性能、体积小和接口丰富等优点。

本发明开发出了一种基于arm9单片机和v4l2接口的嵌入式交通视频采集系统,设计的嵌入式交通视频采集系统主要具备交通视频图像采集的功能、视频图像的传输功能、视频图像信息显示这三大功能。在硬件的设计上,在现有前端交通监控设备或手持式移动设备上嵌入专用的交通视频采集卡,通过网络连通后端系统并实时传输交通视频图像数据。在软件的设计架构上主要通过设计与执行相应嵌入式系统程序来实现交通视频的采集、传输与监控功能。基于arm9单片机和v4l2接口的嵌入式交通视频采集系统有如下四个特点:

(1)可控范围较广:其监控设备可直接接到网络,并且不受线缆长短的限制,通过全球统一的网络协议在互联网上进行有效传输,同时,在移动终端与后端服务器上都能正常地访问本系统。

(2)系统具有较强的扩展性:除可扩展交通监控设备外,还可以扩展web上的各种功能,例如交通视频截屏、实时存储等功能。

(3)该系统实时性、稳定性高:本质上,基于arm9单片机的交通视频监控是以计算机技术为核心、采取linux多任务特性的操作系统,将视频图像的采集功能和处理数据的功能都集成到一个体积非常小的设备里面。采用jpeg图片压缩,使得交通视频图像的传输效率大幅提高,从而有效增加系统整体的稳定性与实时性。

(4)实用性强:体现在系统部署简单,系统一旦经过部署完成后,广大交通管理部门的非计算机专用人员均可以方便操作使用。

本发明提出的以arm9s3c2440嵌入式微处理器为核心硬件平台的嵌入式交通视频采集系统,针对当前的交通大数据背景下交通监控设备的视频采集需求,通过usb摄像头采集到现场交通视频图像数据,经由集成arm微处理器的专用交通视频采集卡进行实时数据处理,然后基于传输控制协议,通过网络将交通视频图像数据传输到作为浏览器客户端的计算机或移动终端上,最后通过访问浏览器客户端可以实时显示采集到的交通视频图像。本发明的设计主要涉及如下内容:(1)连接交通视频采集系统的硬件平台;(2)交叉编译环境构建,通过nfs服务器、移植内核、制作根文件系统等来搭建嵌入式软件开发环境;(3)基于v4l2接口的视频图像采集驱动,以及图像的压缩与编码技术;(4)基于传输控制协议tcp流程,以及http协议传输交通视频图像;(5)后端web页面的开发,实时显示交通视频数据。

下面对本发明的设计进行进一步的说明。

1.linux系统中的数据传输技术与v4l2接口设置

video4linux2(以下简称v4l2)是linux系统中用以开发与访问监控系统的内核驱动接口,并且为上层应用访问交通视频设备提供统一的接口。内核中的子系统都有抽象底层硬件的差异,为应用层提供可以提取出公共代码的可靠接口,接口可以避免代码冗长、降低开发周期、并且提高软件可靠性。通过回调函数以设置usb摄像头的帧频和视频图像的参数等信息。以下内容主要描述通过usb摄像头如何调用v4l2接口来进行视频图像采集。

1.1v4l2接口的使用说明

首先需要将摄像头中的数据获取出来,封装结构体来描述摄像头的具体的信息,采集视频图像的大小,采集视频图像的格式等信息。

1.2v4l2接口的初始化

(1)打开摄像头;(2)获取摄像头的参数;(3)设置摄像头的参数与图像的属性信息;(4)将分配给usb摄像头的内存空间释放,关闭摄像头设备。

1.3通过v4l2接口读取图像数据

从usb摄像头上获取数据是实现交通视频监控的重要前提。linux系统所支持的直接读取和内存映射方式可以方便快捷的进行数据的传输并提高效率。

2交通视频图像传输技术

目前,绝大部分的交通监控摄像头都是以mjpeg/yuv的格式来输出视频。利用v4l2接口直接采集到的数据帧为mjpeg的格式。但是最终给网络浏览器发送的是jpeg格式的图像,所以需要把mjpeg的格式转换成jpeg的格式。本系统采用的设计方法相对简单,需要在mjpeg图像帧开始标志的0xffc0之前插入哈夫曼表,从而进行后续流程操作。通过视频采集卡获取交通视频数据,建立服务器链接使用户通过浏览器给专用视频采集卡上的视频服务器发送请求,服务器通过监听来自浏览器的请求,并解析浏览器的请求,从而做出相应处理。如果数据请求正确,服务器通过把视频驱动采集的视频数据映射到内存中,然后把数据按照http协议格式封装视频数据并将响应传送给浏览器,由浏览器负责将交通视频及时显示,以达到在后端进行实时交通监控的目的。下面进一步详细说明具体的传输流程如下。

2.1接收客户端请求

(1)先为服务器打开socket端口;

(2)设置socket端口的参数,为防止socket端口冲突,忽略socket已经使用;

(3)配置服务器地址,设置地址类型、服务端口、地址,并且通过相应函数将其绑定;

(4)服务器通过调用相关函数监听客户端的socket端口;

(5)接收并创建子线程做相应处理。

2.2解析请求

通过接受浏览器发送过来的数据流,由读取函数逐行读取数据,对数据的解析按照http中的格式解析进行,判断请求类型是否为stream视频流类型。

2.3响应客户端请求

在解析到浏览器的请求数据类型是视频流类型后,在缓冲区中首先设置http响应头。当读取到全局标志pglobal->stop为1时,则说明视频采集的一帧数据结束,然后将获取视频数据也存在缓冲区中,接着设置好http响应帧为未设置的数据,封装好后发送给浏览器。

3交通视频采集系统的架构设计

通过构建视频服务器与web浏览器来完成对交通视频的监控。如图1所示,服务器端分为应用层、数据处理层、驱动层、硬件层,具体组成如下:

1)应用层:遵循http协议,将视频图像数据的安卓标准格式发送给web浏览器;

2)数据处理层:通过获取和控制驱动程序得到视频源,然后再将视频帧进行图像编码;

3)驱动层:编写v4l2驱动通过调用usb摄像头来进行视频采集;

4)硬件层:负责与usb摄像头连接。

本发明设计的交通视频采集卡采用arm9s3c2440为微处理器,同时集成稳定的cpu内核电源芯片、实时时钟芯片、复位芯片等来确保linux系统运行时的高稳定性。其内核为arm920t芯片,最高时钟频率为533mhz,采用298引脚的bga封装。专用交通视频采集卡采用专业的复位芯片来实现cpu所需要的低电平复位,具体复位电路见图2所示。

3.1网络接口

交通视频采集卡采用dm9000的网卡芯片,如图3所示,它可以通过外接的网络接口来自适应10/100m网络。

3.2usb接口

交通视频采集卡由两种usb接口组成,如图4和图5所示,其中一种是usbhost接口电路,它可以用来连接各种外设比如u盘等,另外一种是usbslave接口电路。

下面进一步通过具体实施例来对本发明的方案进行展示。

1嵌入式系统开发环境的搭建

1.1安装交叉编译器

嵌入式系统在一个交叉编译环境上来进行软件编译。执行时在嵌入式平台,而编译时便是在宿主机。在宿主机上使用交叉编译器来编译源文件,然后通过串口或网络将其下载,最后执行该软件。以下详细描述如何安装交叉编译器的过程:

1)首先下载arm-linux-gcc-4.3.2.tar到指定目录下;2)然后打开终端运行#tar-zxvfarm-linux-gcc-4.3.2.tar,将其解压;3)修改环境变量,即将path添加到交叉编译器的路径下;4)立即让新的环境变量开始生效;5)检查是否已经将路径添加到path下面。

1.2nfs服务端的建立

networkfilesystem实现不同操作系统和不同的机器之间的资源共享,是类unix系统之间实现文件共享的一种方式。在信息或者文件的传输过程中,依赖于rpc(remoteprocedurecall)协议。

1.3内核移植

(1)下载内核源码;(2)解压内核源码;(3)修改交叉编译变量;(4)拷贝一份mach-smdk2440.c源文件,将其重命名为mach-min40.c;(5)修改内核的时钟频率;(6)将mach-mini2440.c中smdk2440全部替换成mini2440,同时注释掉smdk_machine_init()函数;(7)修改nand的分区信息;(8)修改机器码;(9)配置内核。

1.4根文件系统的制作

1.4.1构建基本的目录

构建根文件系统的基本目录root、etc、usr、dev、mnt、var等,如图6所示。

1.4.2busybox构建可执行程序包

(1)下载源码包busybox-1.13.3.tar.gz;(2)解压后进入目录,运行命令makemenuconfig;(3)修改makefile。

1.4.3修改与添加系统初始化脚本

目前已经构建好一个根文件系统所需要的目录结构,通过busybox也包含了linux系统下的常用命令。接下来是配置一些重要的系统文件。主要有以下几个操作:(1)为系统进程配置文件;(2)开始启动加载项的文件;(3)挂载文件系统;(4)修改用户的环境配置的文件;(5)拷贝主机密码到/etc文件下;(6)新建主机的文件名,使之内容为“mini2440”。

1.4.4nfs文件系统测试

利用u-boot来引导内核的启动,进入终端则证明已经启动成功。已经制作好的根文件系统,只存在于主机上,仅可以通过nfs挂载。

2登陆系统

上述基于arm9单片机和v4l2接口的嵌入式交通视频采集系统已经基本描述完成。现在检测系统运行的实际情况,将系统进行部署与测试。部署分为实物连接和软件部署。先把本系统所涉及到的硬件设备正确的连接,然后在arm9上部署linux系统,接着把交通视频服务器放到linux上运行。通过协调软硬件,最终在终端电脑和手机上都能够实时采集和监控交通视频。系统涉及到的硬件设备:专用交通视频采集卡、网线、usb转串口(作为调试接口)、鼠标。

3软件部署

先安装usb转串口驱动,使pc超级终端能够与arm系统进行通讯,用来调试系统;然后安装usb下载驱动,下载u-boot、内核、根文件系统到专用交通视频采集卡。之后搭建虚拟机linux的nfs,使虚拟机linux与armlinux系统文件共享。

3.1烧写u-boot

将专用交通视频采集卡开关设置为norflash启动。连接好连接线,打开超级终端并打开电源,烧写u-boot。串口显示如图7所示:选择功能号[f]格式化nandflash,然后选择功能号[v]。打开dnw保证usb连接正常ok,然后点击usbport/transmit/restore,之后选择编译的u-boot.bin。

3.2烧写内核

在串口中输入选择功能号[k],开始下载linux内核image。打开dnw,保证usb连接正常ok,然后点击usbport/transmit/restore,最后选择编译的image,下载和烧写过程结束。如图8所示:image下载完毕后,bios会自动将image烧写到nandflash分区中。

3.3烧写根文件系统

(1)在串口中输入选择功能号[k],开始下载根文件系统;(2)打开dnw,确认usb连接正常ok,如图9所示:点击usbport/transmit/restore,选择之前的根文件系统。

3.4下载应用程序

armlinux将/mt目录挂载到虚拟机linux/share目录下,通过把mjpg.tar.gz解压,运行视频服务器脚本文件。

4系统运行

4.1串口连接

usb串口线连接专用交通视频采集卡与pc。确保已经安装完usb转串口的驱动。驱动如果安装完成,在我的电脑->管理->设备管理->端口能够看到新出现的comn。打开超级终端,按照如图10所示配置并选择相应的com口连接专用交通视频采集卡。如图11所示启动专用交通视频采集卡即可看到armlinux启动信息。

4.2网络配置

用网线把arm与终端pc连接。如图12所示,配置好终端电脑的本地连接的ip为10.0.0.117,虚拟机linuxip为10.0.0.118,在超级终端上输入ping10.0.0.117看是否网络通,在超级终端上输入ping10.0.0.118看是否网络通。必须以上网络都通才可以运行后续系统。

4.3命令输入

如图13所示,在超级终端上输入命令:cdhx./start_uvc.sh,输完上述命令后,即可在通过本软件系统在交通监控网络上实时采集、管理和浏览交通视频。

上面结合附图和具体实施例对本发明的实施方式作了详细的说明,但是本发明不限于上述实施方式,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1