随着计算机技术和网络技术的发展,在单片机领域也发生着日新月异的改变,如高速信号处理器、SoC片上系统等新技术、新应用如雨后春笋般蓬勃发展起来。在现实生活中经常会遇到这样一些问题:比如如何对机房的温湿度进行远程监控;如何一手掌握家里的安全状况,这都需要应用一种耗电量小、24小时不间断工作,体积小的远程视频监控系统。
针对网络视频监控设备的实际应用需求,结合图像采集压缩编码、嵌入式系统和网络技术等几方面的新技术,设计了一套嵌入式网络视频监控系统,用以实现视频数据的采集、压缩与网络传输。该系统基于S3C2410的ARM920T芯片和嵌入式Linux操作系统,采用USB摄像头捕捉视频,经MPG440芯片压缩编码,系统直接与网络相连,用户使用标准的网络浏览器和流媒体播放程序即可查看远程视频影像。
1 系统总体设计
系统总体设计包括硬件设计和软件设计2部分。硬件设计模块主要包括微控制器模块、压缩编码模块、网络接口模块3部分。微控制器模块主要由主控芯片、 DATAFLASH和SDRAM组成。其中,主控芯片是整个控制系统的核心,它负责整个系统的调度工作。DATAFLASH中固化了嵌入式Linux内核及其文件系统、应用软件和系统配置文件。SDRAM作为内存供系统运行使用。压缩编码模块由视频数据采集芯片、MPEG-4压缩编码芯片、SDRAM组成,负责将视频流转化为MPEG
软件设计部分主要包括嵌入式Linux移植、视频采集与MPEG-4压缩编码模块、JRTPLIB网络传输模块和MPEG-4解码程序4部分。嵌入式 Lin-ux系统存放到由S
2 硬件系统设计
系统的硬件平台采用Samsung公司的处理器S
3 软件系统设计
Linux具有内核小,效率高,源代码开放,内核直接提供网络支持等优点。但嵌入式系统的硬件资源毕竟有限,因此不能直接把Linux作为操作系统,要针对具体的应用通过配置内核、裁减shell和嵌入式C库对系统进行定制,使整个系统能够存放到容量较小的FLASH中。Linux的动态模块加载,使 Linux的裁减极为方便,高度模块化的部件使添加非常容易。嵌入式Linux系统主要由4个部分组成:引导内核启动的文件(bootloader)、Linux内核文件(kernel)、虚拟磁盘文件(ramdisk)、用户空间文件(user)。它们分别被放在 DATAFLASH内的4个分区模块中。根据不同模块的具体功能采用不同的文件系统,如:bootloader,kernel,ramdisk等,移植完成后不需要动态改变,使用较节省空间的ROM-FS只读文件系统;user模块内放置一些可以动态更新的配置文件等,需要进行较多的读写操作,所以使用支持动态擦写保存的JFFS2文件系统。基于Linux的上述优点,实现的平台使用操作系统μclinux。通常嵌入式系统软件的开发采用交叉编译调试方式。宿主机通常为Intel处理器,而目标板如图1所示为S
Linux移植技术已经成熟,在此不做详细阐述,主要介绍USB摄像头驱动、基于V
3.1 USB摄像头驱动
搭建好嵌入式Linux的开发环境后,第一步工作就是USB摄像头的安装与驱动。
在Linux下,设备驱动程序可以看成是Linux内核与外部设备之间的接口。设备驱动程序向应用程序屏蔽了硬件实现的细节,使得应用程序可以像操作普通文件一样来操作外部设备,可以使用并操作文件中相同的、标准的系统调用接口函数来完成对硬件设备的打开、关闭、读/写和I/O控制操作,而驱动程序的主要任务也就是要实现这些系统的调用函数。
Video4Linux(V
确定USB摄像头被正常驱动后,下一步就是使用Video4Linux提供的API函数集来编写视频采集程序。
3.2 基于V
在Linux下,所有外设都被看成是一种特殊的文件,称为设备文件。系统调用的是内核与应用程序之间的接口,而设备驱动程序则是内核与外设之间的接口。他完成设备的初始化和释放,对设备文件的各种操作和中断处理等功能,为应用程序屏蔽了外设硬件的细节,使应用程序可以像普通文件一样对外设进行操作。 Linux下的视频采集过程如图2所示。
Linux系统中的视频子系统Video4Linux为视频应用程序提供了一套统一的API,视频应用程序通过标准的系统调用即可操作各种不同的视频捕获设备。Video4Linux向虚拟文件系统注册视频设备文件,应用程序通过操作视频设备文件实现对视频设备的访问。