TM1300嵌入式多媒体网络通信系统的设计与实现

关键词:

TM1300嵌入式多媒体网络通信系统的设计与实现(精选8篇)

篇1:TM1300嵌入式多媒体网络通信系统的设计与实现

酒店信息管理论文:基于GPRS网络和嵌入式系统的酒店信

息管理平台的设计与实现

摘 要:基于GPRS网络的嵌入式系统平台具有低成本、高效率的特性,论文介绍了针对小规模酒店信息管理平台基于GPRS网络和嵌入式系统的软件、硬件的设计和实现。

关键词:GPRS;嵌入式系统;Qt Embedded;TCP/IP;sqlite 1 酒店信息化发展趋势以及本技术的应用场景随着全球经济一体化的深入发展,酒店业的客源结构更加丰富并呈现出多样化趋势,客源市场也变得更加广阔。同时,酒店业也将面临日趋激烈的竞争环境和不断提高的客户期望,这迫使酒店业内人士进一步寻求扩大酒店销售、改进服务质量、降低管理成本和提升客户满意度的新方法,以便增强酒店的核心竞争力。及时地共享客人的信息,给客人提供人性化的服务业已成为酒店管理的目标与方向,而酒店装潢、客房数量、房间设施等质量竞争和价格竞争将退居二线。可以预见的是,未来酒店的竞争将主要在智能化、信息化方面展开。小型旅馆或家庭酒店在智能化、信息化方面仍与星级酒店存在着明显弱势,这是由资金、人力、品牌等多方面的因素导致的。笔者提出的酒店信息管理平台主要针对规模较小的酒店提供信息化服务,解决酒店规模和信息化需求之间的矛盾。本技术基于嵌入式系统实现,利用可视化的操作方式轻松实现,并且通过GPRS网络,将客房信息发布到统一的信息平台以便查询预定。酒店信息管理平台框架设计总体来讲,本系统属于C/S模式,客户端指处理终端,用于处理酒店信息的本地管理,服务器端指Web服务器,用于系统内酒店的客房信息和其他酒店信息的发布,以及客户的远程查询和预定。此外,客户也可以通过电话网络直接与酒店终端联系完成业务流程。主要功能模块本系统基于嵌入式系统方式,所以它的特点是体积小、功耗小、全触摸屏操作、方便安装和移动,同时它涵盖了小型酒店管理的各个方面(见图2),主要功能模块包括:(1)系统设置:设置系统登录密码、屏幕保护、电源管理、系统时间等。(2)客户管理:记录和管理客户信息,包括姓名、性别、电话,以及自定义的客户信息,支持客户信息的快速查询、分组管理,并为其他模块提供客户信息支持。(3)职员管理:管理酒店职员信息,包括姓名、性别、职务、薪金、权限等。(4)短信服务:该模块主要用于客户的个性化服务,如预定确认、订单提醒、生日祝福、优惠信息等。(5)客房预定:支持本地预定和远程预定。本地预定即客户直接与酒店联系产生的订单,远程预定是客户通过网络信息平台产生的订单,通过GPRS同步到本地。(6)数据备份:系统可以根据设置,定期将终端数据备份到U盘等存储设备上,防止设,避免给酒店带来损失。(7)统计分析:对客户订单信息、职员业务信息等进行统计分析,生成业务报表。此外,该模块可以扩展为酒店管理的高级应用,随着客户和订单等信息数据的积累,可以引入数据挖掘技术,对酒店日常经营提供决策支持。(8)信息同步:利用GPRS技术,同步本地终端和Web平台的数据,包括客房情况、客户预定信息、酒店促销信息等,便于客户通过网络平台远程预定客房。通信模块采用展迅SM5100,它是专为数据传输设计的GSM/GPRS无线通信模块,集成了完善的协议栈及应用层软件,具有尺寸小、性能好、开发简便等优点。Intel pxa310通过RS232控制SM5100,完成GPRS网络数据传输和短信、通话等功能。终端采用64M SDRAM和128NAND Flash,用于保存操作图3 终端硬件设计图系统、上层应用、用户数据等,并提供足够的数据存取性能。为了方便用户操作,采用640×480分辨率的大尺寸触摸屏,使得所有操作通过触屏方式完成,同时进一步缩小了终端的物理尺寸。USB接口用于连接U盘等外部存储设备和打印设备,并可用于后期的软件升级等功能。在终端的软件设计方面,采用Linux操作系统控制整个系统的运行。Linux操作系统包含了完整的TCP/IP协议栈、PPP协议栈,所以不需要添加TCP/IP协议硬件转换芯片,有利于减少硬件体积和成本,SM5100作为Modem,用于连接设备和

网络。利用GPRS网络与分组数据网络互联互通的特性,实现了将设备接入最大的PDN网络Internet。设备与SM5100模块之间采用串行接口通讯,在SM5100连接上网络后,设备即可以通过其来实现与Internet上的主机进行数据通讯,SM5100透明收发数据。这种实现方法类似于使用家用PC做代理接入的方式,只是这里采用了无线方式,网关改为SM5100模块。上层应用软件基于Qt Embedded实现可视化界面操作风格,由于pxa310强大的处理能力,保证了界面操作非常流畅的操作速度。此外,我们集成了sqlite数据库,实现客户数据等的灵活存储和查询。结论

本系统将嵌入式操作系统、GRPS技术有机地结合在一起,利用sqlite数据库实现灵活的数据处理,并实现基于Qt Embedded的可视化操作界面,借助于嵌入式硬件平台的强大处理能力和Internet网络,实现了集本地酒店管理和远程客房预定于一身的嵌入式酒店管理平台,针对小规模酒店管理的信息化需求,有效地解决了信息化管理和资金投入的矛盾。

参考文献: [1] 贾鹏.基于嵌入式系统和GPRS网络的灌溉控制器的研究[D].天津:天津大学,2005.李栋梁.基于嵌入式的水库水情监测系统的设计与实现[D].大连:大连理工大学,2006.[3] 饶永华.基于PDA系统的USB接口的研究与开发[D].成都:电子科技大学,2002.[4] 童旺.GPRS数据终端的设计与实现[D].北京:北方工业大学,2007.[5] 申力.基于GPRS的数据传输应用[D].南京:南京理工大学,2004.[6] 刘岚,程莉.嵌入式系统硬件平台的选型研究[J].电子工程技术与标准化,2005(2):51-54.[7] 韩冰,李芬华.GPRS技术在数据与监控系统中的应用[J].电子技术,2003(8):70-80.[8] 何立民.嵌入式系统的定义与发展历史[J].单片机与嵌入式系统应用,2004(1):30-45.[9] 张晶,曾宪运.嵌入式系统概述[J].电测与仪表,2002(4):23-30.[10] 王存键,张建正.嵌入式Linux下Qt/Embedded的应用[J].计算机技术与发展,2006(11):62-66.

篇2:TM1300嵌入式多媒体网络通信系统的设计与实现

摘要:通过在应用软件与板级支持包BSP之间加一层库函数的方法较好地解决了应用程序与板级支持包函数间的通信问题,减少了板级支持包函数的维护复杂度,从而为嵌入式系统板级支持包的实现提供了一个有价值的思路。

关键词:PSOS;BSP;库函数

板级支持包BSP属于嵌入式系统的一部分,它相当于一个板级驱动程序,实际上也是用来描述运行于嵌入式微处理器上的软件与外围芯片之间接口的一个软件层。

本文针对基于PSOS嵌入式操作系统的PHILIPS TM1300多媒体应用系统PCI卡,提出了一种BSP 的函数组织方法。TM1300的核心是32位处理器,能够进行32位的线性寻址,寻址能力可达到4GB。TM1300核心处理器采用的是VLIW ?超长指令字?结构,可以在每一时钟周期内同时进行5个操作,每秒可完成70亿次指令运算。TM1300支持16kB的数据高速缓存和32kB的指令高速缓存,而且数据高速缓存是双端口的,允许同时双向接入。方便的PCI接口允许其在主机(PC)视频卡上显示图像。从TM1300来看,只有DSPCPU和ICP单元可以对PCI接口进行操作,而从PCI来看,SDRAM和绝大部分处于MMIO空间的寄存器都能够被外部PCI初始化器件所访问。图像协处理器ICP则可给活动视频提供一个用于显示支持的交迭窗口仲裁号码。TM1300使用IIC串行总线来配置其外围器件,并可以在主从两种模式下工作。此外,它还拥有一个实时多任务单(或多)处理器操作系统内核,并采用基于优先级的任务调度方式,此外,它还支持可抢占的、以及基于时间片的调度策略。

1 PSOS在系统中的地位

1.1 DEVICE LIBRARY

将PSOS的模块化技术与板级支持包BSP相结合可使BSP把上层模块及应用软件与底层硬件分开,从而保证开发不受处理器及外围硬件更新的影响,而只需对BSP 中的设备驱动程序做简单的改动即可使其适合于更新或全新的硬件。这在很大程度上减少了开发该系统多个版本的工作量。另外,由于BSP把PSOS的内核与目标机硬件隔离开来,从而使操作系统内核完全与设备无关,保证了内核的稳定性,同时提高了应用系统的可靠性。

对于视频接口中的A/D部分,SAA7114的位置可以由SAA7113来代替,这一硬件上的改动将只体现在板级支持包的变化上,而其上层应用软件不受影响。

BSP包括一个或多个例程,可用来定义特定电路板上的外围芯片,以提供针对这些芯片的基本操作功能,并完成对外围芯片的`初始化及各寄存器的设置等工作,图1所示是其系统结构。图中,BSP一方面用于完成外围芯片的初始化;另一方面,在需要时改变各芯片的内部设置,从而使硬件按用户的要求工作于不同的状态。而应用程序、I/O管理器及操作系统内核则通过BSP来对PCI卡硬件进行操作。

1.2 PSOS BSP

必须清楚:PSOS BSP 与TriMedia DEVICE LI-BRARY BSP是不同的。PSOS BSP包括了设备驱动?drv_conf.c只包含这些驱动的开关控制?的PSOS 启动码、 PSOS 配置码和访问硬件库(例如:在系统定时及安装中断句柄时所需的库)。它们是PSOS的一部分,而不是应用程序的一部分。PSOS BSP应当适合PSOS操作系统的配置(在sys_conf.h中配置)。由于要把这些特定应用程序的配置参数编译到PSOS 内核中,所以,每次应用中都应该重新编译。而不可能用库来实现。(本网网收集整理)

2 BSP的编写及实现

一般情况下,BSP对板卡中每个芯片的操作都通过多个函数来完成。如果应用程序对板卡的操作都直接通过调用BSP中的函数来完成,那将很不利于源程序的调试。更重要的是,应用程序的可移植性会降低,如果硬件作了修改,应用程序可能也得做一定的变动,这样就不能达到有效使用BSP的目的。所以,本文提出把能完成某个特定功能的函数封装在一个库文件中,并放在应用程序与BSP之间。这样,应用程序通过调用少量的库函数就可控制硬件以实现不同的功能。当底层硬件变动时,只需修改底层实际执行的函数及相应的库函数,而应用程序基本不必修改,从而缩短了开发周期。

另外,BSP中有对各个外围芯片操作的多个函数。因此,针对一个可升级的系统,如何高效地管理这些函数就显得尤为重要。在SDE2.2开发环境中,它采用一个称为注册表的模块来管理这些函数。该模块的内部结构对开发人员是透明的,它的功能就是将BSP 中的函数进行注册,当其他程序需要调用这些函数时,可通过检索注册表来完成。

2.1 编写BSP函数

对每个芯片来说,都应当有初始化函数,且都有为实现不同功能而对各寄存器设置的函数及读取各状态寄存器内容的函数等。在初始化函数中,要完成对各个配置寄存器的初始化设置以使其能在缺省状态工作。根据应用程序对硬件的不同要求,配置函数应能完成各种功能,如工作方式的调整、中断设置、寄存器设置等。而状态读取函数可以获取各个芯片当前的状态并返回给应用程序。由于在这些底层函数中要用到大量的位运算,所以建议在头文件中多使用宏定义以增加程序的可阅读性。为了利用上述思想,这里所有的函数名都使用函数指针变量来表示。

2.2 每个芯片定义一个结

构体

在该结构体中,一般首先定义对该芯片操作的各函数的函数指针,再定义对应的结构体变量,然后将各函数添加到该结构体变量中。这样,关于每个芯片的函数都包含在各自的结构体中,便于程序的阅读、调试及维护。

编译连接产生myboard_bsp.o文件时,可用此文件替换开发系统中Trimedia安装目录下tmconfig?无扩展名?文件中对BSP的指定,也可以在编译应用程序时特别指定。

为了保持BSP对用户应用程序的透明性,设计时应定义相应的库函数。如打开SAA7113芯片的函数SAA7113.OPEN??,关闭该芯片的函数SAA7113.CLOSE??等。一般情况下,用户应用程序通过调用库函数来实现对该芯片的操作而不关心底层如何工作。因而需要在库函数中定义一个同样类型的结构体变量指针。在库函数中,应在注册表中检索前面对应的结构体重对应函数指针,并将该地址赋值给库函数中定义的该结构体的函数指针变量,这样,就可通过调用相应的BSP函数和进行必要的中断操作来完成其功能。

在应用程序执行过程中,如果需要对硬件进行操作,只需调用相应的库函数即可,库函数通过BSP函数指针实现对底层函数的调用。如果有必要,底层函数执行完后可返回硬件当前的状态。这样的结构不仅可减少应用程序代码,也可使应用程序的结构更加清晰。同时还可使整个操作流程层次分明,对BSP的维护也更加方便。当系统升级时,如果需要更改硬件的部分芯片,只需修改底层函数和所更改部分的函数即可。库函数也只需很少的更改,而应用程序不用更改或只需很少量的更改,这在很大程度上提高了应用程序的可移植性。

3 BSP结构在TM1300系统中的实现

对于本图像处理系统所能实现的功能,此处不再赘述,在该系统中,用本文所描述的方法能够很好地解决应用程序对底层硬件的操作。比如对其中的视频解码器,如果应用程序需要接收视频信号,只需调用视频解码器打开库函数,这样,该库函数即可通过注册表调用相应的底层函数来完成打开视频解码器等一系列对视频解码器的初始化工作。当视频解码器升级为同系列的其它芯片时,底层函数一般只需少量修改,而应用程序则基本不必修改即可正常工作。

4 结束语

篇3:TM1300嵌入式多媒体网络通信系统的设计与实现

随着高清数字播放技术的日益成熟以及计算机网络的日益普及,广告运营商希望按照广告商的要求,通过网络将定制的高清数字广告内容发送到终端,并且通过网络来管理各个播放任务和播放终端。针对这一项目需求,我们实现了一套完整的网络广告高清播放管理系统。按功能划分可分为三个模块:广告投放管理模块、终端代理模块、终端播放模块。前两个模块都只是软件部分,终端播放模块包括软件和硬件两个部分。本文主要介绍终端代理模块与终端播放模块,并着重介绍两个模块的设计与实现。播放终端的硬件是基于ARM9嵌入式CPU和Sigma Designs公司的EM8620系列的音视频解码芯片。

1系统简介与硬件结构介绍

1.1系统简介

图1所示的是整个播放管理系统的结构示意图,服务器中运行的是广告投放管理模块,服务器与代理服务器之间主要通过访问共同的数据库进行通信,一个服务器可以管理多个代理服务器,一个代理服务器也可以通过网络管理多个播放终端。代理服务器中运行终端代理模块,主要功能是将服务器发出的各种控制命令转发给其所管理的所有播放终端,起到实际上的与播放终端进行通信的服务器的作用。代理服务器主要起到分组管理的功能。

图1中的机顶盒就是实际的播放终端,它由两部分构成。一个是软件部分——终端播放模块,另一个是硬件部分。播放终端直接控制多媒体终端的各种播放功能,响应代理服务器发出的控制命令,并将播放终端的日志统计信息发送给代理服务器。

1.2硬件结构介绍

播放终端中的硬件部分采用的是EM8620系列的硬件平台,它是Sigma Designs公司专门针对数字视频通信设计的最新一款多格式解码芯片、内嵌166MHz的32位RSIC ARM9处理器,具有丰富的音视频接口,此外还包括PCI总线控制器和IDE总线接口,通过二者能够实现网络接入、USB外设和IDE外设(如硬盘、光驱)访问等功能。本系统中利用了该芯片可以外接大容量IDE硬盘的功能,外接了一个IDE硬盘用来存放大容量的高清播放视频。同时利用其主板上的网络接口联入网络中。

2软件结构设计

首先介绍一下整体的软件设计思路和功能说明。为了突出重点的介绍,这里对整个系统进行了一些简化,主要考虑终端代理模块和终端控制模块。代理服务器先从数据库中读取到相关的播放计划表。然后按照一定的传输格式通过TCP/IP协议发送给它所管辖的各个播放终端,各个播放终端收到播放列表后,首先查看要播放的文件是否已经存在于播放终端的硬盘中,若没有就通过FTP从代理服务器中下载相应的视频文件。然后终端控制模块按照播放列表中的播放时间,到时自动开始播放。播放时代理服务器可以通过TCP/IP协议向播放终端发出停止、播放、插入图片、插入滚动文字、获取终端播放状态等控制命令,播放终端除了可以响应代理服务器发出的各个控制命令之外,还可以在指定时间,将本终端的播放日志发送给代理服务器,以作统计分析之用。下面分别详细介绍一下终端代理模块和终端播放模块的软件设计。

2.1终端代理模块

代理模块由代理服务器与防火墙组成。代理服务器有固定的IP地址,并且通过公共网络与总服务器有畅通的网络连接。公共网络不能访问以太网中的各个机顶盒,因此机顶盒的IP地址可以固定为本地IP地址(可重用IP地址)。

代理模块的具体功能:

· 监听服务器的命令,并将其传递给播放终端。

· 将服务器传递来的配置信息与各个终端的播放计划表存储于XML文件中。

· 监听播放终端返回的状态信息,并将其反馈给服务器。

· 终端启动时,设置时间和播放计划表,并处理其播放日志,然后发送给服务器。

下面介绍一下软件设计中所用到的几个主要类功能说明:

ServerCommandListener: 负责监听服务器发送来的控制命令,然后通过Controller调用其它类的方法来完成相应的操作。

StateReporter: 负责向服务器数据库中写入状态查询的结果。

VideoFileReceiver: 负责从服务器端下载视频文件,并将它们保存到代理服务器的硬盘中。以线程形式执行。

Controller: 代理级的总控制模块,负责统一各个模块之间的功能调用接口,并协调它们的工作次序。

XMLHandler: 用于在代理服务器中存储和查询各个播放终端的信息:IP地址、当前状态、视频文件列表。

StateViewer: 用于在代理服务器端直接查看终端状态和进行控制。

BoxResponseListener: 用于监听播放终端发送的状态查询结果以及其它请求。

TFTPServer: 在视频文件下载到代理服务器后,代理服务器的TFTP服务器打开,以供播放终端下载。

CommandHandler: 用于向播放终端传送控制命令。由于有多个播放终端,所以要以线程形式执行。

图2所示的是代理服务器向播放终端发送控制命令的流程图。图3所示的是将指定的视频文件传输到指定IP地址的终端上的流程图。

图4 所示的是插播功能的流程图。

2.2终端播放模块

终端播放模块的主要功能就是响应代理服务器的各个控制命令,终端播放模块和代理模块之间是通过Socket进行通信的。HDPlayer指的是播放终端。播放终端的开发环境比较特殊,是基于μCLinux的嵌入式linux系统,又要和EM8620芯片打交道,所以在这部分里主要介绍一下在此开发环境下进行开发的特殊性。

(1) μCLinux

首先介绍一下μCLinux,μCLinux是开放源码的嵌入式Linux的一个典范之作。在Linux内核版本还是2.0时(1998年), μCLinux就产生了。到现在为止, μCLinux已经可以支持2.0.x, 2.4.x, 和2.6.x等版本的内核。 μCLinux设计的目标平台是那些不具有内存管理单元MMU(Memory Management UNIT)的微处理芯片。为了达到嵌入式系统的需求,μCLinux还改写和裁剪了大量Linux内核代码以缩小内核体积。因此μCLinux的内核远远小于标准Linux的内核,同时仍然保持了Linux操作系统几乎所有的优秀特性,包括稳定、强大的网络功能、出色的文件系统支持。一个功能完整的μCLinux,也就是包括了任务管理、设备驱动程序、网络功能等特性的内核,最低硬件需求是200KB的 RAM,1MB的ROM(作为μCLinux 的影像装载的启动磁盘),这可以很好地满足大多数嵌入式环境的要求。而μCLinux最成功之处还在于它不需要微处理器MMU的支持,这使得μCLinux在低硬件成本的嵌入式市场上大受欢迎。由于缺少了MMU的支持, μCLinux有如下缺陷:

· μCLinux中无法实现fork(),而只能使用vfork()。但这并不意味着μCLinux不具有多任务功能,而是父进程在调用vfork()之后,必须在子进程调用exec()或者exit()之前阻塞。

· μCLinux中没有自动扩展的栈。用户必须通过使用mmap()来分配内存空间。用户可以在程序的编译过程中指定栈的大小。

· 不具有内存保护机制,任何程序都有可能导致内核崩溃,这就要求开发人员要格外小心,自己控制好内存的使用。

对于以上的问题,在实际开发中要格外的多加小心。

μCLinux包括TCP/IP等多种网络协议,能够支持当前各种基于IP的业务,同时它还具有良好的开放性,任何新协议都可以很方便地加入到内核中,具备了持续升级的可扩展能力。传统Linux最大的缺点之一是,系统非正常关闭后,经常会产生硬盘碎片,使操作系统无法正常引导启动,此处,将μCLinux编译后烧写到Flash上采用Flash内核启动方式,避免了上述缺点。

(2) 终端播放模块的设计思路

首先将em8620的sdk编译出来,为播放模块提供控制视频解码芯片的能力。然后设计一个主网络监听服务程序,用以监听来自代理服务器的控制命令,然后根据每个控制命令所要达到的功能,编写一个或多个程序或脚本程序来实现相应的功能,这些辅助程序由主网络监听服务程序统一调用。其中一个主要的功能程序就是播放子程序,它要通过调用em8620的相关api来完成控制播放的功能。终端中的定时功能是由μCLinux中的cron系统服务所提供的。除此之外,实际的开发当中还遇到了很多的其他问题,比如嵌入式系统主板上没有电池,关机后不能记录系统时间。我们的解决方法是让播放终端每次开机后马上向代理服务器发送一个获取当前系统时间命令,代理服务器接收到这个命令后就将自己的系统时间发送给播放终端,这样播放终端就可以与代理服务器的时间同步了,进而可以利用cron系统服务的定时启动应用程序的功能来按照播放列表中的时间计划按时播放广告视频。

图5是 终端播放模块的流程图。图中只列出了三个主要的辅助子程序。

3结论

随着高清播放技术的成熟,各种嵌入式机顶盒的广泛应用,各种相应的应用需求随之而来,在广告业中的需求反应尤其迅速。以前的室外广告视频的播放内容大都是人工将播放内容带到实际的播放地点的。本文介绍了一个基于嵌入式高清视频解码芯片而开发的网络控制播放终端系统,给出了一种行之有效的基于网络的分组分发、管理、控制模式,较好地完成了系统的需求。在实际的使用测试中,效果良好,系统整体运行稳定。

参考文献

[1]Sigma Designs公司.EM8620L Datasheet.

[2]Sigma Designs公司.EM8620L Development Kit Documentations.

[3]Kurt Wall.GNU/LINUX编程指南.第二版.张辉,译.北京:清华大学出版社,2002.

篇4:TM1300嵌入式多媒体网络通信系统的设计与实现

【关键词】嵌入式系统;无线通信;存储芯片

1.嵌入式系统的相关问题

1.1嵌入式系统的定义

对于嵌入式系统最普遍认同的定义是:将应用作为中心,计算机技术为基础,软硬件可裁减,适应应用系统对功能、成本、可靠性、体积、功耗严格要求的专用计算机系统。嵌入式系统的操作系统实用性强、体积小、功能强、可定制、管理系统软件。近年来,嵌入式系统完成了从单一的非实时控制系统向多元的实时控制系统的转化,加之性能的不断完善,使它的运用范围更加广阔,例如,网络设备、信息电器、移动计算机设备、工控、医疗仪器等等。随着高新技术的不断发展和网络的普及,嵌入式系统必将朝着系统化和网络化的方向进一步发展。

1.2嵌入式系统设计所面临的挑战

通常情况下,简单的嵌入式系统并不需要用到嵌入式操作系统,例如单片控制等等。但是由于嵌入式系统复杂性的不断增加,操作系统必然会越来越重要,所以就需要对复杂的嵌入式软件系统实行更合理的控制。而对嵌入式实时操作系统有四个方面的要求,分别是实时性、系统可剪裁、轻量型网络支持、功能可扩展。嵌入式系统工业是专用计算机工业,将一切变得更为简单、方便、适用就是其需要达到的目的。本文主要研究的是嵌入式系统在无线通信技术中的应用。

2.本文研究目的

以目前的应用环境来看,有效利用无线通信技术来实现数据的无缝传输具有十分重要的意义,因为利用现有网络来实现大容量的数据通信环境的市场空间较大,需求量还很大,不仅在城市的无线通讯中应用广泛,尤其是在车载系统的无线通讯中嵌入式系统的运用已经得到人们的共识。虽然运用比较广泛,但在实际的操作中,还存在着数据大、传播速度慢、传播过程不稳定等问题,导致现有通讯方式的数据传输还存在着一定的阻碍。

随着高新技术的迅猛发展,交通越来越便捷,城市环境也日益复杂,城市中有的地方信号虽强,但是还存在干扰十分严重的问题。为了让车载系统中的无障碍数据通讯得到进一步的完善,本文对此提出了一种嵌入式无线数据通信系统的设计方案。

3.系统设计方案

因为嵌入式系统具有内核小、系统精简、专用性强的特点,所以通常需要专门的开发工具和运行环境。系统总体可以分为三个部分,分别是车载系统、嵌入式部分、后台部分。车载系统主要起到接收车内信息的作用,一般是通过发送天线的方式放出。嵌入式部分主要包括ARM芯片、接收天线、GPRS/CDMA模块、FLASH存储芯片。这个部分是系统实现的核心部分,比较关键,加之车载系统的环境相对复杂,所以车载信息是以地面设备的方式发送出来。后台部分则是包括后台服务器和Internet接入模块两个方面。

实施过程:将车载系统部分置于车上,道路和城市的关键节点处则需要置入嵌入式系统的硬件,这样一来就可以通过稳压电路而让整个网路的关键节点都能获取信息。后台部分需要置入在城市的监控中心,方便获取整个路网信息,通过充分利用Internet和GPRS网络的功能,让3G和4G实现无缝升级。

4.系统硬件与软件部分设计

4.1系统硬件

ARM芯片中ARM7内核、ARM9内核等为主流,其中由于ARM7内核拥有价格低廉、性价比高的优势而长期占据着垄断的地位。Flash存储芯片则具有低功耗、高密度、非易失性、可重复编程等方面的缺点,NOR Flash尺寸是NAND Flash尺寸的八倍,相对而言NAND Flash更适合于大容量数据存储的嵌入式系统。

根据上面所考虑的因素,本设计最终选用的是嵌入式系统是ARM7架构、LPC2220FBD芯片和16MNAND Flash存储器芯片K9F2808U0C存储介质为核心的架构。

GSM设备采用内置SIM300的工业级GPRS Modem。该产品内置有TCP/IP协议,对用户来说IP数据包的传输是透明的,对接口的设计进行了简化。而通信接口采用的是标准化的RS232接口,可以通过运用AT命令的方式来发起语音呼叫或是发送短信等功能。

4.2系统软件

可以说要保证嵌入式系统功能的实现,最关键的一点在于系统软件的实现。关于降低系统功耗这一点,嵌入式系统可以通过采用自动进入睡眠状态的方式来实现。而针对传输速度上的瓶颈问题,系统则是采用了分类法的方式进行解决。让所有的信息根据序号分配,通过实时、固定信息、可滞后信息的三种标准来讲信息划分为三个等级,其中值得注意的是传感、GPS的实时数据等相关的发送等级必须置于最高的位置,而图像和GIS等相关信息则在发送等级中置于较低的位置,接着在位置信息和车辆信息都完成传输工作后,最后再发送一些相对来说并不十分需要的信息。

取指令、译码、执行是ARM7的指令执行为的三个阶段。通常正常操作情况下,在执行一条指令的时候,后续的一个指令进行译码,而第三条指令则从存储器重选取指令。

流程分别是总初始化、端口的连接中断子程序、图片数据写入RAM、RAM写入FLASH、发送准备是让232收到connect_OK、232发送数据、清空FLASH。当这一系列的在读流程完成以后,LPC2220将K9F2808C中的数据分别送入SIM模块的RS232串口,这样就能实现数据的发送。

5.总结与展望

本文提出了是一种嵌入式的无线数据通信系统的设计方案,该方案具有数据稳定、传输量大等方面的优势,对实现车载系统的无线数据通讯起到了可实施性的作用。而设计中采用了两个串口的通讯方式,一个串口与GPRS模块进行通讯,另一个则是与无线接收模塊进行通讯,之后再将数据存于NAND FLASH中。因为采用这种方式使得其拥有数据存储时间长的优势,而且在实际的使用过程中数据的传输速度也得到了验证,这种数据通信方案还可以适用于城市道路系统的信息采集与传输等方面。

嵌入式系统的应用可以从军用和民用两方面来看,就军用嵌入式系统而言,其在实时性、小型化与规模化上发展到了一个崭新的阶段;而就民用方面来说,嵌入式系统的运用相当广泛,几乎遍布与现代生活的每一个方面,而嵌入式系统的产品主要集中在通信产品、信息家电、工业控制器、掌上电脑等领域。在不久的将来基于嵌入式的无线通信技术的市场也会变得越来越广阔。

【参考文献】

[1]王田苗.嵌入式系统设计与实例开发[M].清华人学出版社,2003.

[2]靳攀,张臻,吕斌斌.基于GPRS和嵌入式Linux的无线数据通信系统设计[M].子技术,2007,34(11):3-105.

篇5:TM1300嵌入式多媒体网络通信系统的设计与实现

基于FPGA的嵌入式系统FLASH接口设计与实现

介绍了嵌入式系统中FPGA与FLASH接口的设计过程.利用Verilog HDL语言设计有限状态机完成对FLASH的编程操作,并在Modelsim中对设计结果进行仿真.实验证明该方法简单可靠.

作 者:邓建平张辉 刘建平DENG Jian-ping ZHANG Hui LIU Jian-ping 作者单位:国防科技大学机电工程与自动化学院机器人实验室,长沙,410073刊 名:电光与控制 ISTIC PKU英文刊名:ELECTRONICS OPTICS & CONTROL年,卷(期):13(5)分类号:V271.4 TP334关键词:FPGA FLASH 有限状态机 接口设计

篇6:TM1300嵌入式多媒体网络通信系统的设计与实现

2.1 系统组织与结构

图2描述一个以PIII CPU为核心的高性能嵌入式计算机系统。它包括16路差分输入A/D、4路RS-232/422串口和双8139以太网控制器,以及与机箱相应的抗恶劣环境电源。该系统的所有模块均为标准的3U尺寸,机箱为加固的4槽3U机箱。

由于嵌入式PC模块提供的PCI总线不能提供足够的负责能力,因此主机模块必须为其增加一个PCI-PCI的桥接芯片――Intel S21152BB。该芯片提供的PCI总线可支持四个PCI设备。而总线上的设备对于Compact PCI总线来说必须且只能是唯一的负载。如果要增加负载,则必须有一个桥接芯片扩展总线的负载能力。如图2中的双网模块。由于该模块中的两个以太网控制器RTL8193D均为PCI总线的负载,首先通过PCI-PCI桥接芯片――Intel S21152BB将总线扩展,再完成两个以太网卡的功能。

另外,作为Compact PCI总线系统,所有模块包括系统底板(Backplane)均按照Compact PCI规范PCIMG2.0 R2.1设计,包括终端匹配电阻的设计(如图2)、底板时钟和中断设计以及其他电气性能的设计。

2.2 扩展模块的.设计与实现

本系统中,除主机模块外还有三个扩展模块,它们分别完成系统对模拟信号的采样及处理(AD模块)、系统与其他设备的通信(4串口模块)以及系统与Internet的连接(双网模块)。

本系统中除了上文指出的双网模块需要PCI-PCI的桥接芯片外,AD模块和串口模块与CPCI总线连接同样需要桥接芯片AMCC S5920的支持(如图2所示)。AMCC S5920是单一芯片的多功能设备,它为设计者提供了一条灵活而简便的通往PCI总线的道路。通过使用S5920,模块设计者无须考虑PCI总线的各种电气性能和时序的特殊要求,只需根据S5920转换后的类似ISA的TTL电平的ADD-ON总线进行设计即可。作为PCI上的目标设备,S5920可提供132Mbps的数据传输率,兼容33MHz的PCI总线和高达40MHz的ADD-ON总线,由它转换出的ADD-ON总线可支持8、16和32位的数据宽度。

(1)AD模块

支持16路模拟差分输入,信号的采样及AD转换由AD976完成,采样结果由单片机89C52平滑处理后通过光电隔离器件发送到CPLD,

再由CPLD存放于静态RAM中供上位机读取。

该模块占用32字节8位宽I/O空间,用于存储16路16位精度的AD采样结果。

(2)串口模块

通过CD1865支持4路RS-232/422串口,占用512字节8位宽I/O空间、1路中断。

图2 基于786CORE的嵌入式计算机系统

2.3 软件设计

本系统采用VxWorks嵌入式操作系统。它是目前所有独立于处理器的实时系统中最具特色的操作系统之一。VxWorks的微内核Wind是一个具有较高性能的、标准的嵌入式实时操作系统内核。其主要特点包括:快速多任务切换、抢占式任务调度、任务间通信手段多样化等。该内核具有任务切换时间短、中断延迟小、网络流量大等特点,与其他嵌入式实时操作系统相比具有一定的优势。

所有模块的驱动程序均在VxWorks下开发,开发环境为Tornado II。它是嵌入式实时领域里最新一代的开发调试环境,是实现嵌入式实时应用程序的完整的软件开发平台。本系统各个模块的驱动程序均用C语言编写,并在Tornado II下编译成“.O”文件用以提供给用户作为二次开发的中间件。

操作系统及应用程序均存放于主机模块的192MB电子盘上,使得软件的运行速度大大提高,也使系统可以工作在温度和稳定性条件都非常恶劣的环境里。

2.4 该系统的特点及技术指标

(1)高性能PIII700MHz CPU核心,128MBSDRAM,192MB电子盘;

(2)支持多种操作系统:DOS、VxWorks、Windows X、Linux等;

(3)串口模块:4路全双工异步串口,传输速率可达115.2kbps,通过软件设置可选择不同的串口通信方式,RS-232(V.28)或RS-422(V.11,X.21);

(4)AD模块:16路模拟差分输入,支持AD数据智能调理,AD转换时间最短可达5μs/Sample,有效输入信号范围:-15V~+15V,模拟采样部分与CPCI总线数字部分光电隔离;

(5)双网卡:10Mbps/100Mbps自适应以太网,支持自动故障诊断、切换和恢复;

(6)先天加固抗震设计;

(7)热传导散热设计;

(8)电磁兼容性设计;

(9)3U标准尺寸。

篇7:TM1300嵌入式多媒体网络通信系统的设计与实现

发 布 时 间 : 2008-11-19 来 源 : 中电网 作 者 : 张永强,赵永勇,李崇德 浏 览 :

984

多媒体通信技术的发展为信息的获取和传输提供了丰富的手段,视频采集是其中不可缺少的重要组成部分,该系统基于S3C2410的ARM9芯片和嵌入式Linux操作系统,采用USB摄像头捕捉视频,经MPEG-4算法压缩编码,系统直接与网络相连,用户使用标准的网络浏览器和流媒体播放程序即可查看远程视频影像。硬件系统

系统硬件平台选用基于ARM9架构嵌入式芯片S3C2410,稳定工作在202MHz主频,板载64MB SDRAM 64MB FLASH,主板资源包括:主USB口、从USB口、10M/100M以太网口,触摸屏、彩色LCD、键盘、8个用户自定义LED数码管,A/D,RTC电路,2个串口、1个JTAG通用接口,音频模块,支持MPEG4,MP3编解码,3个168PIN的扩展插座,32位的数据总线,保留充分扩展空间。

其中标配模块包括:IC卡+PS2模块、IDE硬盘+CF卡模块、PCMCIA+SD/MMC模块。另外可选配模块有:GPS模块,GPRS模块,FPGA模块,CAN+AD+DA模块、红外模块、蓝牙模块、摄像头模块。软件系统

2.1 内核配置与USB摄像头驱动

假定已经搭建好嵌入式Linux的开发环境,下面第一步工作就是USB摄像头的安装与驱动。首先检查Linux Kernel中是否已经添加了USB模块的支持,并且加入Video4Linux支持。

Multimedia devices→Video For Linux

Video For Linux→[*]V4L information in proc filesystem

在主菜单的USB Support下还有各种摄像头的驱动,选中将要使用的摄像头芯片类型。

<>USB IBM(Xirlink)C-it Camera support<*>USB OV511 Camera support<>USB Philips Cameras <>USB SE401 Camera support<>USB STV680(Pencam)Camera support<>USB 3com HomeConnect(akavicam)support 在USB摄像头选购时,优先考虑Linux内核公开支持的摄像头芯片,不然要额外编写相应的USB摄像头驱动程序,然后进行编译、安装。在此选用网眼公司的V3000产品,他采用了OV511的芯片。

确定USB摄像头被正常驱动后,下一步就是使用Video4Linux提供的API函数集来编写视频采集程序。

2.2 基于V4L设计的视频采集模块

在Linux下,所有外设都被看成是一种特殊的文件,称为设备文件。系统调用是内核和应用程序之间的接口,而设备驱动程序则是内核和外设之间的接口。他完成设备的初始化和释放、对设备文件的各种操作和中断处理等功能,为应用程序屏蔽了外设硬件的细节,使得应用程序可以像普通文件一样对外设进行操作。

Linux系统中的视频子系统Video4Linux为视频应用程序提供了一套统一的API,视频应用程序通过标准的系统调用即可操作各种不同的视频捕获设备。Video4Linux向虚拟文件系统注册视频设备文件,应用程序通过操作视频设备文件实现对视频设备的访问。

Linux下与Video4Linux相关设备及用途如表1所示。

这里主要针对设备文件/dev/video进行视频捕捉方面的程序设计。

Linux下视频采集流程如图2所示。

其中用到的主要函数有:

Camera_open():用来开启视频设备文件,使用前需要首先声明一个video_device类型的设备文件。

Camera_get_capability():通过调用ioctl()函数取得设备文件的相关信息,并存放到video_capability结构里。

Camera_get_picture():通过调用ioctl()函数取得图像的相关信息,并且存放到video_picture结构里。

Camera_close():用来关闭设备文件。Camera_grab_image():用来抓取图像,采用mmap方式,直接将设备文件/dev/video0映射到内存,加速文件I/O操作,还可以使多个线程共享数据。

剩下的还有设备初始化、参数设备等相关函数,不再详述。

2.3 视频压缩编码模块

获取图像数据后,可以直接输出到FrameBuffer进行显示,由于本系统要将采集到的视频影响通过网络传输出去,所以在传输之前要对原始的图像数据进行压缩编码,在此选用MPEG-4视频编解码方案。和其他标准相比,MPEG-4压缩比更高,节省存储空间,图像质量更好,特别适合在低带宽条件下传输视频,并能保持图像的质量。

MPEG-4中基于对象的视频编码过程可以分为3步进行:

(1)从原始视频流中分割视频对象。

(2)对视频对象进行编码,对不同视频对象的运动信息、形状信息、纹理信息分配不同的码字。对输入的任意形状的VOP序列,用基于块的混合编码技术编码,处理顺序是先IVOP后PVOP,BVOP。在对VOP的形状信息编码后,取得任意形状VOP的采样,每个VOP划分为不相交的宏块,每个宏块含有4个8×8象素块进行运动补偿以及纹理编码,已编码的VOP帧保存在帧存中,在当前VOP帧和已编码VOP帧之间的计算运动矢量;对将编码的块和宏块,计算他们的运动补偿预测误差;运动补偿预测后的IVOP及误差用8×8块DCT变换,并进行DCT系数的量化,然后是游程编码和熵编码。

(3)对各个视频对象的码流进行复合,每个视频对象的形状、运动纹理信息复合成VOL比特流,各视频对象视频流复合成统一的码流输出。对视频流进行压缩编码以后,接下来就要实现网络传输部分的功能。

2.4 JRTPLIB网络传输模块

流媒体指的是在网络中使用流技术传输的连续时基媒体,RTP是目前解决流媒体实时传输问题的好办法,JRTPLIB是一个面向对象的RTP库,他完全遵循RFC1889设计,下面讲述如何在Linux平台上运用RTP协议进行实时流媒体编程。

2.4.1 初始化 在使用JRTPLIB进行实时流媒体数据传输之前,首先应该生成RTPSession类的一个实例来表示此次RTP会话,然后调用Create()方法来对其进行初始化操作。RTPSession类的Create()方法只有一个参数,用来指明此次RTP会话所采用的端口号。

2.4.2 数据发送

当RTP会话成功建立起来之后,接下来就可以开始进行流媒体数据的实时传输了。首先需要设置好数据发送的目标地址,RTP协议允许同一会话存在多个目标地址,这可以通过调用RTPSession类的AddDestination()、DeleteDestination()和ClearDestinations()方法来完成。目标地址全部指定之后,接着就可以调用RTPSession类的SendPacket()方法,向所有的目标地址发送流媒体数据。

2.4.3 数据接收

对于流媒体数据的接收端,首先需要调用PollData()方法来接收发送过来的RTP或者RTCP数据报。由于同一个RTP会话中允许有多个参与者(源),因此既可以通过调用GotoFirstSource()和GotoNextSource()方法来遍历所有的源,也可以通过调用GotoFisstSourceWithDat()和GotoNextSourceWithData()方法来遍历那些携带有数据的源。在从RTP会话中检测出有效的数据源之后,接下去就可以调用RTPSession类的GetNextPacket()方法从中抽取RTP数据报,当接收到的RTP数据报处理完之后,要及时释放。

JRTPLIB为RTP数据报定义了3种接收模块,通过调用RTPSession类的SetReceiveMode()方法可以设置下列这些接收模式:

RECEIVEMODE_ALL:缺省的接收模式,所有到达的RTP数据报都将被接受;RECEIVEMODE_IGNORESOME:除了某些特定的发送者之外,所有到达的RTP数据报都将被接受,而被拒绝的发送者列表可以通过调用AddToIgnoreList(),DeleteFromIgnoreList()和ClearIgnoreList()方法来进行设置;RECEIVEMODE_ACCEPTSOME:除了某些特定的发送者之外,所有到达的RTP数据报都将被拒绝,而被接受的发送者列表可以通过调用AddToAcceptList(),DeleteFromAcceptList和ClearAcceptList()方法来进行设置。

2.4.4 控制信息 JRTPLIB是一个高度封装后的RTP库,只要PollData()或者SendPacket()方法被成功调用,JRTPLIB就能够自动对达到的RTCP数据报进行处理,并且还会需在要的时候发送RTCP数据报,从而能够确保整个RTP会话过程的正确性。

在本系统中,使用RTPSession JRTPLIB类库提供的方法来实现底层的RTP/RTCP操作,并且把他封装在CrtpTransmitter类中,该类从Media Sink类继承而来,接收到相应的媒体帧数据,使用RTPSession类库的操作把数据发送到网络上。结语

篇8:TM1300嵌入式多媒体网络通信系统的设计与实现

1 方案设计

该方案以实时抓拍高清晰图片为主要手段,辅以现场环境数据采集,将远程无人值守或观测人员无法到达的现场情况以高清晰图文信息、准确的现场状态数据的方式实时传送至监控中心并呈现给监测人员,从而实现了实时图片状态信息数据的采集、通信、分析、处理和应用的一体化,为系统监控人员实时观测、分析及处理现场状况提供了快速的、便捷的、高效率的、全新的解决方案。

该方案可应用于各种不同需求的场合。对于仅对高清图文信息有特别需求的用户,可以携带移动终端进行随时随地的图文信息实时采集,即时传送;又可以通过固定前端定时自动拍摄、发送现场图片;还可以远程操控固定前端拍照,实时获取前方高清晰图片。

对于既需要获取现场图片又要求得到现场环境监测数据的用户,在以上述方式获取高清现场图片的同时,还可以通过终端带扩张的485通信接口实时采集多路现场监测数据。

2 系统构成与基本原理

该系统采用USB摄像头采集现场图像数据,然后将采集到的图象通过USB接口传输到基于ARM架构的32位嵌入式处理器,在SDRAM中以MPEG4的方式进行图像压缩处理,然后,按照UDP包的格式打包,通过RJ45接口或GPRS/CDMA模块向监控中心发送,同时监控中心也可以通过网络控制视频采集设备的工作。该系统为实现远程实时监控系统,对监控数据的管理以及视频网络传输等提供了解决方案,系统构成框架图如图1所示。

1)嵌入式处理器:嵌入式处理器是整个系统的控制管理中心,系统选用S3C2410作为嵌入式处理器,S3C2410是基于ARM920T内核,主频200M。

2)存储器设计:采用1片64M Nand flash作为启动ROM和系统程序保存ROM;采用1片16M×32bit共64M SDRAM用于设置程序堆栈和存放各种数据变量等。

3)USB芯片:采用Cypress公司的SL811HS芯片作为USB接口芯片,1个USB host,1个USB device。

4)USB摄像头:采用OmniVision公司的OV511,Linux内核支持该摄像头芯片,USB接口支持1.1/2.0。

5)LCD:本文选用SL3204 LCD显示屏,其是一个32x4的LCD驱动器,可软件程控使其适用于多样化的LCD应用线路。

6)GPRS模块:选用西门子MC55嵌入式GPRS模块,该模块内置TCP/IP协议,支持双频GSM宽带900MHz/1800MHz,可通过SMS短消息服务或GPRS来发送或接收资料。

7)以太网芯片:选用RealTek的RTL8019AS芯片,采用QFP-100封装,是一种全双工即插即用的以太网控制器,它在一块芯片上集成了RTL8019内核和一个16KB的SDRAM存储器。

8)CDMA模块:采用华为CDMA模块EM200,是新一代CDMA模块,CM320的替代产品,主芯片采用高通的6020芯片,内嵌TCP/IP协议。

3 软件设计

3.1 视频采集

1)USB摄像头驱动

视频采集是系统的基本功能,在本系统中,采用USB摄像头采集视频数据,在Linux中USB摄像头被作为一种字符设备来处理,用/dev/video0来表示,在Linux内核中包含了Ov5ll摄像头驱动程序,在搭建开发环境过程中,在编译操作系统内核时,需要加载OV5ll摄像头驱动。加载驱动的方法有两种:动态加载与静态加载,本文用静态加载方法,具体步骤如下:

(1)进行内核裁减,在ARM Linux的kernel目录下make menuconfig。

(2)加载video4linux模块,选择Multimedia device下的Video for linux,为视频采集设备提供编程接口。

(3)加载ov5ll接口芯片的USB数字摄像头驱动,在usb support录下选择support for USB和USBcamera ov511 suppor

(4)Make dep为编译生成相关的依赖文件,make zlmage最终的编译命令。

2)V4L编程

v4L(video for Linux)是Linux中关于视频设备的内核驱动程序,v4L处于应用程序和视频设备驱动之间,它屏蔽了视频设备驱动程序的差异,向应用程序提供了统一的编程接口。Linux下用V4L视频程序设计时常用的数据结构有:

(1)Video_capability:视频设备基本信息数据结构,包括设备名称、设备类型、设备数目、信号源信息、最大分辨率、最小分辨率、信道数等;

(2)Video_picture:图象属性数据结构,包括如亮度、灰度、对比度、深度等;

(3)Video_channel:信号源属性数据结构,包括信号源编号、名字、制式、调谐器个数等;

(4)Video_Window:采集窗口数据结构,包括窗口的位置、大小等;

(5)Video_mbuf:映射帧信息数据结构,包括帧数、帧大小、每帧基址偏移等。

(6)Video_mmap:用于内存映射;

(7)Video_buffer:最底层对缓冲器的描述。

3)图像采集程序开发

v4L下图象采集程序的流程:首先打开USB摄像头,读取摄像头的设备信息,更改设备当前的设置(如图像格式),接着,开始进行图像采集,最后将采集到的图像通过LCD显示。

(1)使用fd=open(“/dev/v4l/video0”,O_RDWR)函数打开USB摄像头设备,其中,/dev/v4l/video0是打开的设备名,O_RDWR是打开方式(读写方式)。

(2)使用ioctl(fd,VIDIOCGCAP,video_cability*)函数获取video设备源的信息,其中,fd是打开的文件描述符,VIDIOCGCAP是控制读写设备通道以获取摄像头信息,video_cability是函数成功后从内核空间拷贝到用户程序空间的摄像头信息,

(3)使用ioctl(fd,VIDIOCGPICT,video_picture*)函数获取缓冲区中图像的信息,其中,fd打开的文件描述符,VIDIOCGPICT是操作命令,video_picture是函数成功后返回的图像信息。

(4)使用ioctl(fd,VIDIOCSPCT,video_picture*)函数设置缓冲区中图像的格式,其中,fd是打开的文件描述符,VIDIOCSPCT是控制读写设备通道以设置图像信息,video_picture是要设置的图像格式信息。

(5)使用ioctl(fd,VIDIOCGPICT,video_mbuf*)函数获得摄像头存储缓冲区帧信息,之后修改viode_mmap中的设置重新设置图像帧的垂直及水平分辨率、彩色显示格式,接着把摄像头对应的设备文件映射到内存区。

(6)连续采集数据

(7)LCD显示。用fb=open(”/dev/fb/0”,O_RDWR)直接将图像数据写入FrameBuffer中。

3.2 视频压缩

在网络视频传输系统中,大量的视频需要通过网络进行传输,这就要求在数据传输之前进行编码压缩以减少数据量。新一代基于对象的编码标准MPEG-4以高压缩率、高质量、低传输率成为目前网络多媒体传输的主要格式和标准,针对MPEG一4的编解码器有很多,主要有XVID,Divx等,本设计中采用开源的XVID软件作为MPEG-4视频压缩的核心算法,版本为xvidcorel.1.2。将XVID应用程序移植到ARM平台的步骤如下:

(1)执行#tar-zxvf xvidcore-1.1.2-beta2.tar.gz解压xvidcorel.1.2软件的源代码,并删除优化代码。

(2)执行配置命令/configtire-disable-assembly-host-arm-Iinux生成makefile文件;

(3)通过#make,#make install命令编译程序源代码;

(4)将库文件libxvidcore.so.*拷贝到交叉编译器工作目录的lib子目录下,将libxvidcore.so.*等文件拷贝到目标系统的/usr/lib目录下。

(5)在程序中设置相应的参数,调用Xvid编码器提供的接口函数:xvid_global(),xvid encore(),FrameCodeP(),FrameCodeI()等编写应用程序,然后通过交叉编译,最后将生成的可行文件拷贝至目标板ARM调试执行。

3.3 视频传输模块

Socket是一种网络接口,可以被看成是网络通信的一个端点,采用“打开一读一写-关闭”的方式。Linux支持多种套接字,Socke提供下列三种类型套接字:流式套接字(SOCK--STREAM),数据报式套接字(SOCK--DGRAM),原始式套接字(SOCK--RAW),本系统中采用的是流式套接字,主要使用以下几个函数:

1)服务进程和客户进程在通信前必须创建各自的套接字,然后才能用相应的套接字进行发送、接收操作,实现数据的传输。socket()函数创建套接字其原型如下:SOCKET socket(int af,int type,int protocol);

2)当调用socket()函数创建了一个套接字后,服务器必须把套接字与自己的地址(包括IP地址与端口号)显式地建立联系,以便客户端向该IP地址和端口号的服务进程请求服务,这个过程是通过调用绑定函数bind()来实现的。bind()函数原型如下:int bind(SOCKET s,const struct sockaddr FAR*name,int namelen);

3)服务器设置监听工作方式后,通过调用accept()函数使套接字等待接受客户连接,accept()函数的原型为:SOCKET accep(SOCKET s,struct sockaddr*addr,int*addrlen);

4)客户通过connect()函数可以和服务器建立一个端到端的连接。connect()函数原型为:int connect(SOCKET s,const struc sockaddr FAR*name,int namelen);

5)将服务器上的套接字设置为监听方式工作,使用API函数listen():int listen(SOCKET s,int backlog);

6)对于面向连接的应用程序来说,一旦客户机与服务器实现连接,则可以进行数据传输。send()、recv()函数是在已建连接上进行数据收发的函数。send()函数的原型为:int send(SOCKET s,const char FAR*buf,int len,int flags);recv()函数的原型为:in recv(SOCKET s,char FAR*buf,int len,int flags);

7)一旦网络通信任务完成,就必须释放套接字占用的所有资源。通常调用closesocket()函数即可以达到目的。closesocket()函数的原型为:int closesocket(SOCKET s);

8)网络套接字应用程序结束前,要使用下面这个函数释放winsock DLL:int WSACleanup(void);

9)当Winsock函数调用发生错误时,可以通过如下函数获得错误代码:

int WSAGetLastError(void);

在服务器端的主程序中,首先通过套接口的Socket()函数创建Socket描述符,通过bind()函数将该描述符与本地地址绑定,再通过listen()函数实现监听,accept()函数实现主程序阻塞,一直等到有客户端发出连接请求,通过三次握手建立双方的连接。

在客户端程序中,通过建立一个MPEGDownLoad类来与服务器建立连接,下载图像信息,在该类中定义一个socket类型变量通过new Socket(host,port)为其赋值,然后通过Socket.getlnputstream()和Socket.getoutputstream()得到输入输出流,调用各自的read()方法和println()方法来实现数据的接收和发送。

4 优势与技术突破

与传统的视频采集方案相较,该方案采用高性能的ARM嵌入式微处理器S3C2410,结合大容量的FLASH芯片存储,运行Linux嵌入式操作系统,便于系统移植以及系统应用升级,整个系统具有通用性、安装方便、稳定、可靠、成本低等优点,特别适合实时性要求不很强的工业控制、远程监控系统等诸多领域,具有很好的应用前景。

嵌入式操作系统在系统中有着至关重要的作用,该方案采用Linux操作系统,Linux源代码开放、系统管理性能好、系统稳定性好。采用Linux操作系统,提高了数据传输速度,降低了系统的建造费用。

参考文献

[1]熊茂华,谢建华,熊昕.嵌入式Linux C语言应用程序设计与实践[M].北京:清华大学出版社,2010.

[2]俞辉.ARM嵌入式Linux系统设计与开发[M].北京:机械工业出版社,2010.

[3]贺丹丹,张帆,刘峰.嵌入式Linux系统开发教程[M].北京:清华大学出版社,2010.

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:66553826@qq.com

上一篇:嵌入式系统设计实习报告 安卓音乐播放器设计报告 下一篇:黄河数据中心海量数据存储方案应用研究