移动端

基于S3C2410嵌入式视频监控系统的研究

2011年02月16日 10:50$artinfo.Reprint点击量:2855

  1系统硬件结构
  
  本系统采用模块化的结构设计思想,将设备分为主控模块和各个功能模块。主控模块和各功能模块之间有统一的或者特定的接口形式,用户可根据不同的需要选用不同的功能模块,各种类型的数据可以同时传输而不相互干扰,同时也可根据市场的需求继续扩展其它功能模块。远程无线视频监控系统是由以下几个模块组成:嵌入式ARM2410核心控制模块、自动报警模块一面使嵌入式模块上的蜂鸣器发出警报声,同时发送报警信号通过GPRS网络及时的传回远端的监控管理中心,以便管理人员及时发现并处理火情、传感器数据处理模块、USB摄像头视频图像采集处理模块、GPRS无线数据传输模块、远程监控软件模块。

  
图1系统结构图
  
  1.1USB摄像头驱动
  
  USB核心在系统中起着重要的作用,它提供了一些的API供设备驱动层操作,而对主控制器的操作则由系统完成了,USB核心层对主控制器层的数据结构和操作进行了封装。在编写USB驱动时,只需要和USB核心层进行交互。对于具体设备的驱动编写主要也是设备层驱动的编写。Linux系统中USB结构如图2所示:
  

  在Linux内核中,设备驱动程序是一个个独立的“黑盒子”,使某个特定硬件响应一个定义良好的内部编程接口,这些接口*隐藏了设备的工作细节。用户的操作通过一组标准化的调用执行,设备驱动负责将这些调用映射到作用于实际硬件设备*的操作上。
  
  在Linux系统中,设备驱动程序编译好后,有两种实现方法:一种是修改系统内核源码,把驱动静态编译进内核,使其成为内核的一部分;另一种则是编译成可以动态加载的模块,由管理员动态的加载。如果把驱动程序译进内核,那么内核的大小会增加,内核的源文件也需要改变,并不能动态地释放,不利于系统的调试,所以在本系统中,为方便调试,把摄像头驱动程序编译成动态加载的模块。
  
  1.2视频采集
  
  视频采集程序的流程如图3所示:

  
图3视频采集流程图
  
  USB摄像头驱动成功后,需要编写视频采集的程序,这就需要了解Linux内核中关于视频设备的部分代码VideoForLinux(简称V4L)。它为应用程序提供了一系列的接口函数,通过这些函数,可以执行打开、读写、关闭等基本的操作。设备驱动提供了read、write、open、dose等函数的具体实现,在内核中这些函数都可以调用。
  
  1.3GPRS无线数据传输
  
  GPRS模块是具有登陆GPRS网络功能的芯片,只要外接SIM卡,通过串行协议与ARM处理器通信,将视频图像采集模块得到的JPEG数据以资料包的形式,先通过PPP和运营商的Internet接入服务器连接,然后把资料包发送到Internet上。
  
  GPRS无线数据传输模块软件结构设计总体可分为三个部分:参数配置部分,处理器将接收视频图像采集模块从串口输入的数据,同时对远程监控中心主机IP地址,串口通信参数等加以配置;连接远程监控中心主机,在这一部分,系统将发起一个TCP或UDP连接;数据传输,首先处理器将判断接收的数据为远程配置数据,视频图像数据还是报警信号,如果是报警数据,则立刻停止视频图像数据的传输,将报警数据迅速发送出去。如果是JPEG图像数据,则GPRS模块将接收到的所有数据都发送出去。
  
  2系统软件设计
  
  2.1嵌入式Linux移植
  
  本系统中,宿主机选择LINUX操作系统,并建立好交叉编译环境。目标机选定嵌入式LINUX作为操作系统,而目标系统的LINUX内核需要结合自己的硬件电路对内核代码进行移植修改才能够运行。本系统硬件系统为基于ARM9的S3C2410开发板,在内核的arch目录下有一个为”arm”的文件夹,正是存放的与ARM体系结构相关的代码。
  
  编译内核需要创建内核依赖关系、创建内核镜像文件和创建内核模块。首先执行makedep命令,读取配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编译而那些不需要;接着需要makeclean完成删除前面步骤留下的文件,以避免出现一些错误;然后便可以生成所需要的内核文件了,用makezImage来实现得到可移植的内核。
  
  除了内核的移植,还需要在开发板上移植启动代码,即BootLoader,初始化硬件系统并加载移植的Linux内核,此外文件系统也*。在BootLoader,Linux内核和文件系统成功移植后,便可以在目标系统上进行程序开发了。不过针对本系统的具体要求,还需要在开发板中添加USB摄像头的驱动,这样以后,便将开发板带入到一个适合本系统应用程序的运行环境。
  
  2.2视频图像的编解码
  
  JPEG标准中定义了三种编码系统:①基于DCT的有损编码基本系统,可以用于绝大多数的压缩应用场合;②用于高压缩比、高精度或渐进重建应用的扩展编码系统;③用于无失真应用场合的无损系统。zui常用的是基于DCT变换的顺序模式,称为基本系统。
  
  解压过程与压缩编码过程正好是一个相反的过程,从压缩过程中可以知道,图像数据经过DCT变换再量化之后用huffman熵编码进一步压缩而得到了压缩数据。所以要对图像进行解码首先需要进行huffman解码,接着需要将墒解码的数据根据具体的量化表进行还原再进行IDCT变化可以得到原来的图像数据。
  
  MJPEG(MotionJPEG,动态JPEG),是动态使用JPEG算法对视频信号进行压缩,其图像视频流的基本单元就是一帧一帧的JPEG图片。它的主要特点是基本不考虑视频流中不同帧之间的变化,只单独对某一帧进行压缩。MJPEG的优点是画质比较好,能产生高质量、全屏、全运动的视频、每帧可以任意存取,可以动态调整帧率、分辨率,而且其编码相对比较容易实现。
  
  本系统分为两个大的部分,目标机服务器软件与宿主机客户端软件。目标机服务器是采集和视频发送程序,两个线程分别完成采集和视频发送的功能;客户端软件主要用于接受TCP服务器的视频数据,并解码显示。系统工作原理如图4所示:
  
  3小结:
  
  本文作者创新点是:结构简单,功能完善,视频的采集、压缩以及传输都集成在一个嵌入式模块中。嵌入式系统软件是基于嵌入式Linux操作系统的,开发资源丰富,有助于建立功能强大、结果复杂的大系统。在软件设计时充分采用了分层体系思想,使得系统具有很好的逻辑性,方便以后的维护和移植。由于系统采用面向对象的模块化设计,扩展灵活,易于实现系统的模块化管理,也能降低系统集成的困难和成本。


        (文章来源:微计算机信息)
版权与免责声明: 凡本网注明“来源:智慧城市网”的所有作品,均为浙江兴旺宝明通网络有限公司-智慧城市网合法拥有版权或有权使用的作品,未经本网授权不得转载、摘编或利用其它方式使用上述作品。已经本网授权使用作品的,应在授权范围内使用,并注明“来源:智慧城市网www.afzhan.com”。违反上述声明者,本网将追究其相关法律责任。

本网转载并注明自其它来源(非智慧城市网www.afzhan.com)的作品,目的在于传递更多信息,并不代表本网赞同其观点或和对其真实性负责,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品第一来源,并自负版权等法律责任。

编辑精选

更多

本站精选

更多

专题推荐

更多

名企推荐

更多

浙公网安备 33010602000006号