一种基于嵌入式Linux的视频监控系统与方法
【技术领域】
[0001]本发明涉及监控技术领域,尤其涉及一种基于嵌入式Linux的视频监控系统与方法。
【背景技术】
[0002]在基于嵌入式Linux视频监控系统的研究中,国内目前还是处于起步阶段,相对于于国外还是落后一大截,国外由于基础理论以及相关配套技术的成熟,己经有比较成熟的产品面世。由于国外大的生产商例如索尼、三星等有非常强的研发实力,而且起步较早,这嵌入式视频监控领域深耕之久,所以国外产品无论是从性能还是工艺设计方面还是普遍比较好于国内,但是因为国外厂家掌握核心技术,其产品价格也很昂贵,普遍比国内同类产品高出一大截,大部分国内用户都无法接受他们的价格。
[0003]国内同类产品与国外产品采用小波压缩方式不同之处在于都采用硬件压缩方式,使用专门的视频压缩芯片,可想而知这样在性能上会有大幅度提升,但是由于采用硬压缩技术随着而来的诸如产品更新就不是很容易了。
[0004]最开始的模拟视频监控,模拟视频监控功能简单,可靠性差,易受干扰,系统寿命短等。
【发明内容】
[0005]针对现有技术中存在的缺陷或不足,本发明所要解决的技术问题是:提供一种基于嵌入式Linux的视频监控系统与方法,其成本低、具备视频编码处理、网络通信、多功能控制等功能,直接支持网络视频传输和网络管理,使得监控范围达到前所未有的高度,提高视频图像处理的效率。
[0006]为了实现上述目的,本发明采取的技术方案为提供一种基于嵌入式Linux的视频监控系统与方法,包括以下步骤:
A.搭建嵌入式系统开发环境,分别搭建宿主机和vkboard开发板的环境,完成宿主机服务配置包括配置NFS服务器和TFTP方式启动Linux内核,建立宿主机和vkboard开发板之间的通信,即进行交叉编译环境的搭建;
B.在vkboard开发板进行嵌入式Linux系统的移植,包括:启动引导程序U_boot的移植,Linux内核在vkboard开发板上的移植;
C.制作用于EMMC启动的根文件系统。
[0007]作为本发明的进一步改进,所述步骤A中TFTP方式启动Linux内核包括:宿主机采用ubuntul2.04版本的操作系统,在宿主机ubuntu系统建立一个TFTP服务器,将编译好的ulmage放入ubuntu系统中,vkboard开发板启动之后,自动通过网络获取ulmage文件,从而启动系统。
[0008]作为本发明的进一步改进,所述U-boot移植包括:第一阶段首先硬件设备初始化,包括系统复位、设置CPU工作模式、屏蔽所有中断、对内存控制器和串口进行初始化、设置时钟频率、关闭CPU指令和数据Cache等;对代码进行重新定位整理,开辟一定的随机存取空间为第二阶段的bootloader加载做准备,然后将第二阶段的代码加载到RAM空间;设置跳转到第二阶段代码入口的堆栈;
第二阶段进行bootloader加载,首先初始化硬件设备,然后对系统内存映射;加载内核和根文件系统,设置内核的启动参数;最后启动内核。
[0009]作为本发明的进一步改进,所述vkboard开发板上移植U_boot的步骤:
1)首先解压uboot源代码:
2)在当前目录将生成的u-boot-linaro-stale文件夹,进入到这个目录,执行编译过程;
3)在make编译之前,配置一下平台:
4)对U-boot进行编译:
5)编译完成后,将u-boot-linaro-stale文件夹下的ML0文件和u-boot.1mg文件传输到SD卡根文件系统中,启动系统。
[0010]作为本发明的进一步改进,所述步骤B中Linux内核移植,所述Linux内核分为三层:最底层的设备驱动程序、中间层、上层的系统调用接口,所述系统调用接口将Linux内核中各个模块进行封装并为上层提供访问底层的统一的接口函数;Linux内核移植的步骤如下:
1)、下载vkboard的内核版本;
2)、进入到/kernel_omap4目录下;
3)、修改Makefile,在内核目录下指定交叉编译器并做修改,并且在系统环境变量PATH中添加内核的绝对路径;
4)、从config.kern中引入可选的配置文件;
5)、生成可移植的内核文件;
6)、将ulmage传输到开发板;
7)、Reboot,即可启动写入系统。
[0011]作为本发明的进一步改进,所述Linux内核的框架包括进程管理、内存管理、虚拟文件系统、网络接口层、进程间通信,各部分相互协作完成整个内核的功能。
[0012]作为本发明的进一步改进,所述步骤C中制作用于EMMC启动的根文件系统,在平台相关目录加入emmc设备,使得内核可以识别emmc设备;emmc上把根文件系统制作包括以下步骤:从SD卡启动后,命令fdisk -1,就可以识别出mmcblk0(SD卡)、mmcblkl (emmc).对mmcblkl进行分区格式化,先用dd命令之前生成的ML0、U_boot、ulmage拷贝到emmc中,但要跳过emmc开始的512个字节,然后在这段空间后对emmc分区为mmcblklpl,然后格式化为ext4 ;最后把sd卡的mmcblk0p2 (rootfs文件系统)挂载/tmp/sdrootfs目录下,把emmc设备mmcblklpl也挂载出来/tmp/mmcrootfs,然后执行一下复制命令,最后制作一个emmc镜像文件。
[0013]一种基于嵌入式Linux的视频监控方法的系统,包括:
实时视频采集模块:利用V4L2驱动框架采集原始视频数据,并将数据信息通过有效的方式传递给实时视频编码模块;
编码模块:按用户指定的编码格式,对采集到的原始视频数据进行编码,本文中使用Η.264编码,并将编码后的数据写进帧缓存管理模块;
嵌入式视频服务器模块:从帧缓存管理模块读取帧数据,并将其通过流式技术以RTP包的形式传送到客户端,客户端播放器进行解码播放;嵌入式视频服务器模块包括RTP数据包封装模块、数据包压缩编码模块、数据包传输模块;
视频传输模块:利用流媒体传输技术,实现采集到的视频图像信息能够实时、高清晰、快速的传输;
上述四个功能模块在编码阶段全部以一个或多个线程的形式实现,操作系统需要同时调度多个线程的执行,同时各个功能模块间经常需要进行通信,因此需要利用嵌入式Linux操作系统提供的进程间通信机制来进行进程管理调度。
[0014]作为本发明的进一步改进,实时视频采集模块的工作流程如下:
1)打开指定的采集设备;
2)判断设备能否支持视频采集功能;
3)设置视频采集格式;
4)分配存放数据的内存;
5)将缓存的信息通过内存映射方式到用户的空间;
6)开始采集视频;
7)取出已经采集的缓存帧数据;
8)将mmap映射处理过的的缓存数据入队入列,实现循环采集;
9)停止视频的采集;
10)关闭视频设备。
[0015]作为本发明的进一步改进,基于H.264对采集到的视频图像进行编码编码模块:直接从10控制命令中实现H.264编码,H.264编码的过程如下:
1)打开硬件编码驱动设备,使用open函数实现,同时可以判断是否已经打开成功;如果不能成功打开,就退出;
2)获取编码器输入缓冲区的地址;
3)同样返回输出缓冲区地址指针;
4)V4L2编程,读取摄像头采集的数据并且直接传入到MFC输入缓冲,对其进行H.264编码,编码后的数据放入到输出缓冲区中。。
[0016]本发明的有益效果是:本发明其成本低、具备视频编码处理、网络通信、多功能控制等功能,直接支持网络视频传输和网络管理,使得监控范围达到前所未有的高度,提高视频图像处理的效率。
【附图说明】
[0017]图1是本发明的U-boot移植流程图;
图2是本发明的Linux内核结构图;
图3是本发明的视频监控系统内部模块之间的交互示意