S3C2410用于嵌入式视频监控系统

时间:2011-09-04

   系统硬件结构

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

  图1 系统结构图

  USB摄像头驱动

  图像采集模块的硬件资源选用当前市面上应该了USB接口的中星摄像头。该款摄像头造价低廉,成像效果好,用于本系统中体现了较高的性价比。系统在进行视频采集前,首先要检测设定视频源。系统启动后系统会自动检测摄像头是否连接好,对于具体设备的驱动编写主要也是设备层驱动的编写。Linux系统中USB结构如图2所示:

  在Linux内核中,设备驱动程序是一个个独立的“黑盒子”,使某个特定硬件响应一个定义良好的内部编程接口,这些接口完全隐藏了设备的工作细节。用户的操作通过一组标准化的调用执行,设备驱动负责将这些调用映射到作用于实际硬件设备特有的操作上。

  在Linux系统中,设备驱动程序编译好后,有两种实现方法:一种是修改系统内核源码,把驱动静态编译进内核,使其成为内核的一部分;另一种则是编译成可以动态加载的模块,由管理员动态的加载。如果把驱动程序译进内核,那么内核的大小会增加,内核的源文件也需要改变,并不能动态地释放,不利于系统的调试,所以在本系统中,为方便调试,把摄像头驱动程序编译成动态加载的模块。如图

   

  USB摄像头驱动成功后,需要编写视频采集的程序,这就需要了解Linux内核中关于视频设备的部分代码Video For Linux(简称V4L)。它为应用程序提供了一系列的接口函数,通过这些函数,可以执行打开、读写、关闭等基本的操作。设备驱动提供了read、write、open、dose等函数的具体实现,在内核中这些函数都可以调用。

  GPRS无线数据传输

  GPRS模块是具有登陆GPRS网络功能的芯片,只要外接SIM卡,通过串行协议与ARM处理器通信,将视频图像采集模块得到的JPEG数据以资料包的形式,先通过PPP和运营商的Internet接入服务器连接,然后把资料包发送到Internet上。

  GPRS无线数据传输模块软件结构设计总体可分为三个部分: 参数配置部分, 处理器将接收视频图像采集模块从串口输入的数据,同时对远程监控中心主机IP地址,串口通信参数等加以配置;连接远程监控中心主机, 在这一部分,系统将发起一个TCP或UDP连接;数据传输,首先处理器将判断接收的数据为远程配置数据,视频图像数据还是报警信号,如果是报警数据,则立刻停止视频图像数据的传输,将报警数据迅速发送出去。如果是JPEG图像数据,则GPRS模块将接收到的所有数据都发送出去。

  系统软件设计

  嵌入式Linux植

  本本文提出了一种基于嵌入式Linux系统的居民用电管理解决方案。整个居民用电管理系统从结构上看分为4层:第1层为主站,负责远程抄表和控制,为供电部门和小区物业提供数据访问服务;第2层为管理终端,完成数据的远程接收和转发,并对其下的管理终端进行管理;第3层为抄表终端,用于采集现场的电表数据,通过ZigBee协议发送到管理终端;第4层为电表。管理终端操作系统选用嵌入式Linux,同时搭配单片机实现与采集终端之间的无线通信。

  主站和管理终端之间的报文传输遵循《电力负荷管理系统数据传输规约》。根据该规约,主站会向管理终端下达一些参数设置的命令,管理终端在接到命令后应记录下该参数,并根据的参数来执行任务;在终端掉电重启后,参数设置依然有效。传统的参数配置基本采用两类方法:配置文件法(如。ini文件)和数据库法。由于本系统需要管理的参数条目不多,使用数据库占用的空间太大;。ini文件虽轻巧但上下文相关,不易维护和管理。XML文件则能克服以上缺点。XML(eXtensible Markup Language)是由万维网协会(W3C)设计,特别为Web应用服务的SGML的一个重要分支。

  它具有简单、开放、高效且可扩充、国际化的特性。XML语言具有很多的特性:

  ①具有严格、良好的层次结构,实现了数据内容和表现形式的分离,使得配置文件结构清晰,可读性强;

  ②具有跨平台、自解释等诸多优点;

  ③现在各种经过测试的、性能优越的XML解释器非常多,避免了自己开发XML解释器,从而可以大大提高软件的生产率和健壮性。

  除了内核的移植,还需要在开发板上移植启动代码,即BootLoader,初始化硬件系统并加载移植的Linux内核,此外文件系统也不可缺少。在BootLoader,Linux内核和文件系统成功移植后,便可以在目标系统上进行程序开发了。不过针对本系统的具体要求,还需要在开发板中添加USB摄像头的驱动,这样以后,便将开发板带入到一个适合本系统应用程序的运行环境。

  2.2视频图像的编解,

    JPEG标准中定义了三种编码系统:①基于DCT的有损编码基本系统,可以用于绝大多数的压缩应用场合;②用于高压缩比、高或渐进重建应用的扩展编码系统;③用于无失真应用场合的无损系统。常用的是基于DCT变换的顺序模式,称为基本系统。

  解压过程与压缩编码过程正好是一个相反的过程,从压缩过程中可以知道,图像数据经过DCT变换再量化之后用huffman熵编码进一步压缩而得到了压缩数据。所以要对图像进行解码首先需要进行huffman解码,接着需要将墒解码的数据根据具体的量化表进行还原再进行IDCT变化可以得到原来的图像数据。

  MJPEG(Motion JPEG,动态JPEG),是动态使用JPEG算法对视频信号进行压缩,其图像视频流的基本单元就是一帧一帧的JPEG图片。它的主要特点是基本不考虑视频流中不同帧之间的变化,只单独对某一帧进行压缩。MJPEG的优点是画质比较好,能产生高质量、全屏、全运动的视频、每帧可以任意存取,可以动态调整帧率、分辨率,而且其编码相对比较容易实现。

  本系统分为两个大的部分,目标机服务器软件与宿主机客户端软件。目标机服务器是采集和视频发送程序,两个线程分别完成采集和视频发送的功能;客户端软件主要用于接受TCP服务器的视频数据,并解码显示。系统工作原理如图4所示:

  小结:

  本文作者创新点是:结构简单,功能完善,视频的采集、压缩以及传输都集成在一个嵌入式模块中。嵌入式系统软件是基于嵌入式Linux操作系统的,开发资源丰富,有助于建立功能强大、结果复杂的大系统。在软件设计时充分采用了分层体系思想,使得系统具有很好的逻辑性,方便以后的维护和移植。由于系统采用面向对象的模块化设计,扩展灵活,易于实现系统的模块化管理,也能降低系统集成的困难和成本。


  
上一篇:Cyclops机器人让你的视觉豁然开朗
下一篇:用微控制器驱动显示器

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料