[基于S3C2440网络视频传感器软硬件平台的设计与实现] 无线传感器网络总结

  摘要:提出了一种基于嵌入式linux和H.264的网络视频传感器节点软硬件平台的设计方案。该方案构建了以ARM9处理器S3C2440A为核心、运行Linux操作系统的嵌入式软硬件平台,通过 USB驱动和video4linux实现使用USB摄像头采集视频图像数据。同时针对视频图像数据量过大的问题,采用了H.264编码器实现对视频图像数据的压缩,为数据的远程传输带来便利。
  关键词:SC2440 H.264 视频图像 压缩
  中图分类号:TN919.91 文献标识码:A 文章编号:1007-9416(2012)10-0055-02
  1、引言
  随着网络测控技术在工业领域和生产生活中的不断发展,人们对通过网络测控系统采集视频图像数据的需求越来越迫切。但是由于视频图像数据量大,直接传输势必会增大网络传输的负担,增加网络阻塞的隐患;特别是在具有不确定性时延的网络中,实时采集将很难实现。因此,对视频图像数据,在存储和传输前进行压缩处理,就成了一个极其有意义的工作和解决方案。因此本文采用基于S3C2440A及H.264的网络视频传感器软硬件平台的设计方案,具有一定的通用性。
  2、传感器硬件平台设计
  视频传感器节点在网络测控系统中承担着图像数据采集和压缩算法实现两大任务,因此这要求传感器的硬件平台要有具有强劲的计算能力和良好的网络性能。在综合考虑了常用的51单片机和32位ARM控制器芯片后,本文采用了三星公司的S3C2440,外围设备主要有RAM、Nor FLASH、Nand Flash以及网络接口芯片等。控制器的硬件平台结构如图1所示:
  2.1 S3C2440处理器
  三星公司的32位RISC微控制器S3C2440AL-40采用了16/32位ARM920T的RISC微处理器核心[1]。
  ARM920T具备AMBA BUS,MMU和Harvard高速缓冲架构,使得数据处理能力更加强劲。同时S3C2440上系统资源和外围接口非常丰富,如包括USBhost控制器、SDIO控制器、外部存储器控制器、电源管理控制器、MMU内存管理单元、3通道UART、4通道DMA、8路10位ADC和多个GPIO。
  2.2 外围电路设计
  控制器外围电路主要由电源模块、存储器电路模块、JATG调试电路以及通信模块的等构成[2]。存储器电路模块采用一片SST39VF1601(2MB)芯片作为Nor Flash,用于存放bootloader程序,采用一片K9F1208芯片(64Mbyte)作为Nand Flash,用于存放操作系统以及文件系统,另外采用采用两片HY57V561620FTP SDRAM芯片作为系统的内存。其中通信部分采用HR911103A网络变压器和DM9000网卡芯片,实现了以太网接口的设计;同时设计了USBhost接口电路,为近一步实现wLan通信提供接口。另外设计了SD卡接口电路,以实现数据海量存储。
  3、视频传感器平台软件平台设计
  3.1 软件平台整体结构
  该传感器节点软件体系结构如图2所示,系统的软件部分最底层为bootloader,主要是进行处理器初始化和系统引导;第二层为linux kernel,主要是管理系统的软硬件资源以及上层应用和操作底层驱动接口,如配置了包含了USB驱动和video4linux,以实现图像数据的采集;第三层为文件系统层;第四层为应用程序层主要包含控制算法,H.264压缩算法,boa web server实现系统的B/S访问控制。
  bootLoader 是操作系统kernel在运行之前运行的一段小程序,主要是实现硬件设备初始化、内存映射的图建立等工作,以便为最终调用kernel准备好正确的环境。通常,bootLoader严重地依赖于硬件而实现。本论文中,在linux下建立arm-linux-gcc-4.3.2交叉编译环境,将修改好的bootloader进行编译,再使用H-JTAG 烧写到Nand Flash中。该平台的linux内核采用了liunx-2.6.32,在使用make menuconfig对内核进行配置时,主要包括配置CPU选项、网卡、对yaffs文件系统的支持等选项,特别是USB设备驱动和V4L USB devices驱动的配置,以实现USB摄像头对图像和视频的采集。在移植好linux内核后,使用mkyaffsimage完成affs文件系统映像的制作,再使用H-JTAG将生成的映像文件烧写到Nand Flash运行。
  在网络化测控系统中,web 服务器作为数据载体,将本地的信息和数据通过Internet传递给远端请求的客户,以实现远程数据交互,这对远程网络测控意义重大,因此web server的移植成为一项必不可少的工作。由于Boa源代码开放、可靠性好的特点,本文采用boa进行web server的构建,版本号boa-0.94.13.tar.gz。在移植之前,需要关注Makefile与boa.conf两个文件,将Makefile文件中针对X86平台的选项改为ARM相关的选项,CC=arm-linux-gcc,CPP=arm-linux-gcc-E;同时要对Boa.conf文件中的Port、User、DocumentRoot等参数进行设置[3]。
  3.2 H.264移植与构建
  H.264是ISO和ITU共同提出的继MPEG4之后的新一代数字视频压缩格式,该算法的编解码流程主要包括:帧间和帧内预测(Estimation)、变换(Transform)和反变换、量化(Quantization)和反量化、环路滤波(Loop Filter)、熵编码(Entropy Coding)等5个主要部分。作为MPEG-4标准的第10部分,H.264即保留了以往压缩技术的优点,又在低码率、容错能力、图像质量、网络适应能力等方面有更强的优势[4,5]。   具有很高的数据压缩比率,是H.264最大的优势。对于同等质量的图像,H.264的压缩比是MPEG-2的2倍以上,是MPEG-4的1.5~2倍。因此H.264在图像数据压缩方面被普遍认为是最有影响力的行业标准。H.264的源码可以在官网上下载得到。
  H.264编码器的移植过程,即使用交叉编译工具链arm-linux-gcc对源码进行编译,最终得到适合特定处理器平台的二进制代码的过程。编译之前,需要配置源码根目录下configure脚本,主要是设置目标系统类型、制定编译工具链、编译选项、编码器和库文件的安装路径等选项,该文件被makefile文件所包含。同时,根目录下的Makefile文件也需要根据需要修改,如修改Name=h264,BINDIR=../bin,CC=/usr/local/arm/2.95.3/bin/arm-linux-gcc等选项,待修改完成之后之后,进入h264-lib/build/ linux目录,执行make命令,生成可执行文件,并拷贝至开发板。创建设备结点,mknod /dev/video0 c810,至此H.264编码器移植完成。最后编写服务器端应用程序,编译之后拷贝到开发板,运行server_arm程序。在PC机端,运行之前编制好的LinuxClient客户端程序,对视频图像进行采集。图3为,系统移植调试成功后,通过摄像头采集到的视频图像数据[6,7]。
  4、结语
  本文论述了基于S3C2440微控制器和H.264标准的网络视频传感器平台的设计与实现方法,构建了系统的软硬件平台,同时对H.264编码器的移植进行了详细论述。目前,对视频图像数据采集和压缩是网络测控系统持续研究的热点。测试结果证明,该方案是可行的,可满足普通实时性的视频图像采集需要,应用前景广阔。
  参考文献
  [1]Samsung Co.Ltd. S3C2440X DATASHEET [DB/OL].[2011-04-05].http://datasheets.chipdb.org/Samsung/S3C2440X.pdf
  [2]周立功,王祖麟,陈计明等.ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版社,2008.
  [3]杜宝祯等.基于linux和S3C2440的GPC控制器的设计与实现[J].单片机与嵌入式系统应用,2009,(11).
  [4]史凯等.基于linux系统的H.264视频监控系统的实现[J].山西电子技术,2008,(2).
  [5]何勋等.基于S3C2440的H.264软编解码器实现[J].嵌入式技术,2009,(10).
  [6]邵华等.基于嵌入式系统的高分辨率图像处理系统[J].软件导刊,2012,(1).
  [7]周立功,陈计明等.ARM嵌入式Linux系统构建与驱动开发范例[M].北京:北京航空航天大学出版社,2006-01.

推荐访问:软硬件 传感器 网络视频 设计