




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/sundae_meng基于Xscale架构的数字媒体服务器的关键技术实现摘要:本文介绍了数字媒体嵌入式服务器的关键技术实现。本系统是一个以Internet为依托,工作在XScale架构、linux操作系统之上的嵌入式WEB服务器。使用了山东大学嵌入式实验室研发的嵌入式图形中间件,利用嵌入式实时数据库对授权网络用户和手机用户信息进行管理,集实时视频采集、视频转发、截图、控制并以多种途径传送,GIS信息发布等多种功能于一体。服务器采用了多级缓冲机制,高效稳定,支持数十个用户的同时访问,界面友好直观,方便用户操作。本系统较好实现了多媒体WEB服务器的功能,并因为其体积小,便于组装和长时间工作时性能稳定等优点有较好的应用前景。Abstract: This paper introduced implements of key technique in digital media server, which is an embedded Web server supported by Internet and working on XScale architecture and linux operating system uses a new embedded GUI developed by the Embedded Laboratory in Shandong University, and an embedded real-time database to manage the authorized network user and mobile phone user. It integrates multiple functions including: real-time video gathering, video transmitting, picture capturing and sending out by multiple ways, device controlling and GIS information issuing etc. The mechanism of multistage buffering has been adopted in this serve, so it is high-efficient and stable, and can support several dozen users to visit simultaneously. It also has friendly interface which facilitate users to operate. Functions of the multimedia Web server are well realized in this system. This sysytem will have good application prospects because of its advantages, including small volume , convenience for assembling and performance stabilization when working for a long time.关键词:嵌入式,Web服务器,XScale,多媒体,网络摄像头1 系统设计及软硬件架构1.1 设计背景与思路近年来随着科技的进步,数字媒体技术发展已经比较成熟,并被广泛应用于人们生活的方方面面。公司的网络会议,家庭的视频电话,工厂、大中型企业的监控系统,都是数字媒体技术在现实中的应用。本次开发的web服务器主要是针对传统监控系统的一些缺点所做的尝试。以往的监视系统产品,主要设计目标是保护大型企业、学校财产安全,虽然它在很多大型企业、学校等企事业单位被广泛应用,但是其高昂的造价、烦琐的安装过程以及必须有人长时间监控,不能远程控制的缺点使这种监视系统很难走进中小型企业和家庭中去。开发一种小型的,便于组装和使用,无须有人随时维护的,能够在Internet进行交互的监控设备已经成为必然的趋势1。 利用网络摄像头对现场进行图形采集,把开发板设计成一个以采集摄像头发来的http帧并进行解读、重组并发送的服务器。普通用户可以通过客户端浏览器访问服务端提供的网络视频服务,可以发出控制请求信息经过服务器解读再转发给摄像头进行控制。而管理员用户可以直接操作和设置服务器,监控摄像头并从LCD观察运行结果。为了能够对无线手机用户提供服务,服务端需要提供MMS服务,手机用户可以通过向服务端发送请求短消息,服务端可以反馈一祯视频图像使手机用户随时随地可以监控现场的情况。开发板虽然功能强大,但相对PC机资源仍然是有限的,QTE固然功能繁多但它也占用了大量的FLASH空间和内存,严重限制了系统功能方面的发挥,为了利用有限的资源提供更多更复杂的功能,我们决定使用山东大学嵌入式系统结构实验室研发的一种新型的面向工业级嵌入式产品的嵌入式图形中间件EplGUI,它体积小但功能强大,使用的特殊的结构框架可以使中间件本身所消耗的资源相对固定而不随处理数据的增加而增加,采用的增强的消息机制更适合开发有独特风格的嵌入式产品。我们开发了EplGUI在Liod开发板上的驱动使其可以在上面运行,并且利用图形学的算法对界面进行了美化。在一个大的环境下,为了对多个现场进行监控,可能会安装许多的这种服务器,为了方便用户知道服务器的地理位置,服务端需要提供GIS服务,用户可以通过浏览器访问服务端查看电子地图,从而对整个系统的布局有更直观形象的了解。1.2 硬件系统结构整体系统外观如图:图11 数字多媒体嵌入式Web服务器连接图数字多媒体嵌入式Web服务器包括以下几个部分:(1) 视频收集部分:采用了目前较先进的网络摄像头,通过接入Internet与服务器相连,应用层控制直接使用http协议, 很好的兼容了当前的网络系统;使用者通过发送http请求可以完成控制摄像头转动,截图,改变传送图像精度等一系列动作。(2) 路由器,路由转发视频分组发送到服务器。(3) 服务端,功能是辨别用户端类型,并有分类的接受用户端的控制信息并解析,实时接收摄像头采集的视频,并根据用户端类型转发出去。另外,还可以通过自带LCD显示采集视频供用户实时观察。(4) 接入internet的设备如台式机或高级移动设备以请求html格式网页的形式连接到服务器接收图像,并可以控制摄像头。(5)GPRS模块与天线:接收手机发出的控制短信传回服务器,并把经过压缩处理的图像以彩信方式发送到手机。(6) 支持彩信的手机:作为移动控制模块,您可以通过手机随时随地观看视频截图。1.3 服务器软件体系结构服务器的软件系统是位于操作系统之上的,主要面向服务端管理员、手机用户和网络用户三种用户。服务端管理员主要利用服务端对网络用户和手机用户进行管理,包括用户的添加、删除和权限设置,也可以利用Liod板进行视频监控。手机用户可以访问服务端提供的MMS视频服务,利用短消息对摄像头进行控制,这两个功能都是基于GPRS模块的。网络用户可以通过WEB访问服务端的GIS服务和网络视频服务。软件系统框架如图12所示。图12 服务器软件体系结构2视频采集及图片压缩向用户提供的网络视频服务2主要是建立在http服务之上,服务端连接了一个网络摄像头,由网络摄像头完成的工作是采集图像并存入其内部的缓冲器中,通过向该摄像头发送特定的指令来与该摄像头进行通讯,服务端的功能是采集摄像头的数据并对摄像头的方向进行控制,实时采集的图形将保存到服务端的内存中并在每次来到新图像时实时进行刷新。网络摄像头工作大致过程为:在接收请求后将收集到的图像放入缓冲器,并自动根据传输层的UDP协议,将图像分割打包,按照TCP/IP参考模型将内容通过网络传递至服务端。由于整个传输过程采用的是请求模式,所以网络摄像头只有在服务端请求后才会按照上述过程将图像发送出去或转动云台。服务端视频采集程序可以简单分为4步:(1) 通过向摄像头发送请求获取即时会话密码摄像头中预存了一个管理员用户名和密码,为了安全起见,服务端直接将用户名和密码加密后的密文发送给摄像头,摄像头验证通过后会给服务端返回一个会话密码,这个密码是随机的,在每次会话时都会改变,如果密文验证不正确那么或者网络错误那么摄像头会返回错误信息或者超时。(2) 利用即时会话密码向摄像头请求数据传输(3) 摄像头开始向服务端发送数据,而服务端的视频采集过程启动一个线程专门获取图像数据。(4) 一旦线程接收到一帧完整的图形,调用解码模块在屏幕上进行显示。 检测图像帧的方法如下:对于获取的每个数据包,检测其头部2字节是否为“FFD8”,如果是则认为是一帧图像的开始,对于开始包之后的ip包,把它们与起始包连接起来放进缓冲区,如果检测到数据包的尾部为“FFD9”则认为是一帧图像的结束帧,与之前的包连接在一起最后在缓冲区内形成一张完整的图片。每帧图像采用JPEG格式进行封装,采用320X240分辨率/高清晰度时,每帧图像的大小在8K左右,如果监控的图像比较复杂那么可能图像的尺寸也会比较大,如果图片的尺寸比缓冲区大,这时系统将自动根据图片的大小对缓冲区进行调整。线程将调用JPEG解码器在屏幕上进行显示。JPEG(联合摄影专家组)3是到目前为止摄影图像的最好压缩方法,是当前数字化摄影图像的主要存储方式。JPEG几乎与当前使用的任何一种数字图像压缩方法都不同,它可以不必逐位的重建原始图像,它主要是存储颜色变化信息,特别是亮度的变化,因为眼睛对这些变化非常敏感。只要重建后的图像在亮度上有类似的变化,那么对于人的眼睛来说,它看上去将会非常相似于原图。JPEG压缩方法分为几个阶段。首先要把RGB图像转换成“亮度/颜色”的彩色空间,也就是转换成灰度基图像加上两个通道的颜色差别信息。光栅数据可以二次采样,把相邻的象素组合成一个值。之后用DCT离散余弦转换将光栅数据转化成变化率信息。量化过程把DCT编码产生的结果截断到一个较小压缩的值的范围内。最后,量化的结果用Huffman或算术编码来压缩以产生最终的输出。还原压缩是上述步骤的逆过程,也就是解码器所做的工作,即还原量化结果,使用一个逆DCT来重建图像。量化时丢失的低序位还原时应插入0。3 嵌入式WEB服务器服务端内嵌了一个小型的Web服务器4,这样用户不用安装任何额外的客户端程序,直接通过浏览器就可以查看摄像头采集的图像内容。由于服务端直接将图形保存在内存中,并对客户的请求进行了特殊的处理,由原先的文件操作变成了内存操作,因此服务端对用户的响应更加迅速。通常由服务程序开始工作时启动一个ServerSocket监听,一旦客户(程序)向服务器申请建立一个套接字连接后,ServerSocket就会返回一个对应的服务器端套接字,以便进行端到端通信。 此后,就得到了真正的端到端的“套接字套接字”连接,可以用同样的方式对待连接的两端 ,即使用相同socket的方法获得连接的相应信息进行通信。针对本服务器的多媒体功能开发的嵌入式web服务程序主要实现以下几方面的功能:(1) 发送html类型文件将客户请求的html文件发送给客户。(2) 发送JPEG图像文件将客户请求的JPEG图像文件发送给客户。(3) 解析客户请求的http协议头对客户的请求进行解析,包括:空格处理、解析客户请求命令、解析客户请求的资源名、解析客户请求的资源类型。(4)客户连接处理和发送http协议头解析Referrer 和content_length 字段值并调用客户请求解析函数。根据发送文件类型发送相应的HTTP 协议头信息。为了更快的提高对用户的响应速度采用多级缓冲机制5,内存操作的速度比网络传输的速度要快的多,当用户通过http服务请求图片时,往往要对图片的内存缓冲区进行加锁以防止一副正在操作的不完整图片被发往客户端,这样在发送的过程中服务端就不能对图片的缓冲区进行更新,如果其中某个客户的传送过程比较缓慢那么就会影响所有其他客户的图片的更新速度,为解决这个问题,每个处理客户的线程在处理客户的图片请求时都要单独将图片拷贝到自己的私有缓冲区,数据内存拷贝的过程比网络传输的过程要快的多,客户端在通过http服务请求图片时,总能得到最新的数据,具体过程如图31所示。图31 服务端的内嵌服务器多级缓冲机制示意图4 硬件驱动的实现由于Liod开发板可以用于外设连接的串口只有一个,而该串口已经被开发板用于调试,为了使用GPRS模块,我们使用了一条内嵌AU7920芯片的USB转串口线。由于AU7920芯片没有Linux平台下的驱动,因此我们通过在Windows平台下截取AU7920的通讯数据包,分析了AU7920的USB传输协议,编写了其在Linux平台下的驱动。编写Linux下的USB设备驱动需要借助OHCI。OHCI是开放式主机控制器接口标准。OHCI支持USB的4类传输方式8,根据数据传输规定,将中断数据传输和等时数据传输都归为同一类周期性数据传输方式。在HCCA(主机控制器通信域)中定义了4个传输链:控制传输数据链表、批量传输数据链表、完成数据链表、周期性数据链表。在OHCI上,每个ED(端点描述符)对应一个USB设备端点,不同的设备端点拥有不同的ED。在Linux中,同其他的外设一样,上层应用软件对连接在系统的USB设备访问时通过文件系统的形式进行的。每个连接到系统总线上的USB设备可以同时对应一个或者多个驱动程序。即一个USB设备可以在Linux系统上形成一个或者多个设备结点以供应用程序使用。当应用程序与USB设备进行数据传输时,数据在USB驱动程序间的传递。应用程序首先通过文件系统(POSIX)接口来访相应的USB设备类驱动程序和USBD(USB驱动);USB设备类驱动程序则通过USBD提供的相关接口将数据请求包传递给USBD;USBD通过HCD(主机控制器驱动)提供的接口,进一步将数据包传递给HCD;HCD最终将数据发送到USB总线上。Linux定义了通用的数据结构URB用来在USB设备类驱动和USBD,USBD和HCD间进行数据传输。统一的URB(通用请求块)结构为USB主机驱动程序的开发带来了很大方便。统一的USB数据传输块URB包含一次USB数据传输所必需的所有信息,其主要构成有:USB设备信息、数据传输管道、数据传输缓冲区、数据传输缓冲区长度、回调函数、不同类型数据传输必须参数、数据传输过程控制参数等。由于设备驱动程序与USBD,以及USBD与HCD之间的数据传输都是通过数据结构URB来实现的,因而URB中包含了一个USB数据传输在三层驱动程序中的所有必要信息。USBD提供了文件系统接口。这有利于应用程序通过文件系统来访问USBD层,以获得USB驱动程序的管理信息,如USB总线状态、拓扑结构,连接在各个总线上的USB设备状态、属性等。当一个USB设备连接到USB总线上时,USB HUB驱动程序首先通过中断数据传输获得设备连接信息,然后通过调用USB内核模块所提仪的相关函数来完成对USB设备的配置工作。同时USBD不但要为新的USB设备分配在USBD层所需要的资源,同时也需要为USB设备分配在HCD层所需要的资源。接着,USBD通过调用所有USB设备类驱动程序提供的Probe函数来查找适合该USB设备的驱动程序。当一个USB设备USB总线上断开时,USB HUB驱动程序首先通过中断数据传输获得设备断开信息,然店通过调用USB内核模块所提供的相关函数来释放USBD层和HCD层为该设备分配的资源;同时通过调用该设备的相关驱动程序提供的Disconnect函数来通知设备驱动程序该设备已经断开。USB设备类驱动程序通过调用usb_submit_urb函数可以将相应的URB传递给HCD层来进行相应的数据传输。要完成Linux下AU9720 USB转串口的驱动,需要填充一个usb_serial_device_type结构体中的多个接口。在实际的驱动编写中编写中,我们实现了这几个接口。startup, open, close, ioctrl, set_termios, shutdown, write,对应的实现函数分别为:au9720_startup,au9720_open,au9720_close,au9720_ioctl,au9720_set_termios,au9720_shutdown和au9720_write。au9720_startup函数的主要作用是对AU9720的驱动进行初始化。au9720_open函数的作用是初始化AU9720端口的读数据的URB,设置读数据URB的缓冲指针和缓冲区大小,填充URB的回调函数complet域,这样当读操作完成的时候就会自动调用这个回调函数使用户可以知道数据操作的结果。au9720_read_bulk_callback函数为填充complet域的实现函数,在这个函数中将再次填充读数据URB并进行提交,这样当AU9720芯片给主控端发送消息时系统就将再次调用这个函数给用户以通知。au9720_close函数在用户关闭USB转串口文件句柄时调用,其主要作用是如果取消已经提交的写数据URB和读数据URB。au9720_ioctl函数的作用是对AU9720 USB转串口设备进行一些额外的设置,如可以设置串口的数据流控制方式为硬件、软件XON/XOFF或者为无。au9720_set_termios函数的作用为设置USB转串口设备的波特率、数据位、奇偶校验方式和停止位,在获取用户的参数后,需要填充一个控制传输消息,该消息的大小为7字节,格式为:03字节第4字节第5字节第6字节波特率停止位校验位数据位为方便起见,我们定义了如下结构体:struct au9720_controlint baudrate;/波特率unsigned char stopbit;/停止位unsigned char parity;/校验位unsigned char databit;/数据位;。Baudrate即为实际的波特率,stopbit的意义如下:表42 stopbit的意义stopbit含义0停止位11停止位1。52停止位2Parity即代表设置串口的校验位,Parity的含义如下:表43 Parity的含义Parity含义0无校验1奇校验2偶校验Databit代表设置串口的数据位,其含义如下:表44 Databit的含义databit含义5数据位56数据位67数据位78数据位8当填充好这个结构体之后,可以调用u
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年广东省惠州市惠城区中考数学二模试卷(含答案)
- 财务会计入门实操指南
- 高等土力学:本构模型
- 2025年android自学视频!一起看看这些大厂面试真题查漏补缺吧分享一点面试小经验
- 2023-2024学年山西省长治市部分学校高二下学期期末考试数学试题(解析版)
- 2025届河南省许昌、平顶山、汝州名校高三二模语文试题(解析版)
- 2025届福建省高三模拟练习联合检测语文试题(解析版)
- 2024届湖南省益阳市七校高三下学期第二次模拟考试语文试题(解析版)
- 2024-2025学年浙江省湖州市高二上学期期末考试语文试题(解析版)
- 2024-2025学年山西省晋城市部分学校高二下学期开学检测语文试题(解析版)
- 2022年女性精致美学白皮书
- 事业单位招聘考试《工程建设管理专业知识》真题汇总及答案【含解析】
- 文献整理表格
- DBJ∕T 13-261-2017 福建省二次供水不锈钢水池(箱)应用技术规程
- GB∕T 16422.3-2022 塑料 实验室光源暴露试验方法 第3部分:荧光紫外灯
- 中国历史地理复习资料
- 05示例:玉米脱粒机的设计(含全套CAD图纸)
- 冷库项目施工组织设计方案
- 年中总结会策划方案
- (最新)污水处理池施工方案
- 肺脓肿护理查房ppt课件
评论
0/150
提交评论