新闻中心

EEPW首页>嵌入式系统>设计应用> 基于嵌入式Linux的3G无线视频终端的设计与实现

基于嵌入式Linux的3G无线视频终端的设计与实现

作者: 时间:2011-08-01 来源:网络 收藏

i.jpg
压缩模块为例,其软件流程如图6所示。

本文引用地址://m.amcfsurvey.com/article/150415.htm

k.jpg


2.3 网络转发模块
在完成对采集图像的压缩或者接收完服务器后,需要将数据通过网进行转发,完成网络数据转发通常采取的办法是利用提供的socket API进行,socket给用户提供了统一的编程接口,网络传输协议通常有TCP和UDP两种,对于TCP每次要通过3次握手建立连接,在等待乱序及重传丢失数据时会产生较大延时,而UDP又缺乏流量控制,所以都不太适用于实时数据传输,在这种情况下运行于UDP之上的RTP则具有很大的优势,目前对于有实时要求的数据传输RTP是最好的协议,故在本系统中使用了RTP协议作为数据传输协议,流程如图7所示。

l.jpg


2.4模块驱动及联网
模块与ARM是通过USB相连的。到3G网络的连接是通过PPP协议的,PPP协议是一种点对点串行通信协议,为在点对点连接上传输多协议数据包提供了一个标准方法。由于目前市场上的3G模块基本上都是提供Windows CE操作系统下的驱动程序,但对于下面的目前还没有驱动支持,所以为本系统开发了3G模块的驱动程序。要完成3G模块的拨号上网功能,需要3个层面的支持:1)是内核层面;2)驱动层面;3)应用程序层面的支持。内核层面主要是通过对内核的重新配置来完成,由于3G模块与ARM通过USB线连接,而上层的PPP通信采用的是串行协议,所以要在内核中加入USB转串口的支持,通过makemenuconfig命令进入内核配置界面,依次选择Device Drivers->USB support->USB Serial Converter Support选择USB Generic Serial Driver按两次空格键使项目前加[*]将其编译入内核,其中加*为编译成内核模块,加M为编译为模块。由于采用的是PPP协议,故要在内核中加入PPP的支持。进入内核配置界面以后,依次选择DeviceDrivers->Network device support->PPP(point-to-point)protocol support选中,将PPP编译入内核,同时选择PPP展开项,将其全部编译入内核,保存退出。对于驱动层面,3G模块的驱动开发主要是通过修改两个文件generic.c以及usb-serial.c,其中generic.c为USB通用程序,usb-serial.c为USB转串口程序。通过在其中加入一些网络层的hook函数来达到对上层协议的支持。将修改过后的文件复制到/linux2.6.29/drivers/usb/serial,重新编译内核,生成zImage镜像,然后下载到板子上。完成3G模块驱动的以及内核对PPP协议的支持,对于拨号上网应用程序的支持,主要是通过PPP提供的两个工具pppd和chat来的,其中PPP提供了一种点对串行线路上传输数据流的方法,chat主要用于拨号并等待提示。可从网上下载PPP源码,在本系统中采用的版本为PPP-2.4.0,下载后要解压并且根据目标板的类型来进行交叉编译得到拨号程序。

3 结束语
本文在一块ARM开发板上了多种功能,包括数据,通过外接视频服务器实现了现有视频服务器的3G功能扩展,通过采用了Netfilter与socket结合的方法,将数据包获取功能从用户态载入内核态,避免了数据的内存拷贝,提高了处理效率,同时引入内核缓冲机制。解决了3G拨号延时而造成的视频服务器丢包问题,配合Netfilter用户工具iptables的使用,可以在本系统上实现NAT,包过滤防火墙等功能。方便对流经系统数据包的管理。
针对目前市场上的3G模块大多只提供Windows CE下驱动这一问题,开发了3G模块驱动,使得现有3G模块可使用与Linux系统下,用户可直接在此基础上通过socket进行编程,而无需考虑底层的硬件通信问题。在软件设计上充分发挥开源软件的优势,采用Xvideore进行视频编码,以及PPP源码编译拨号软件等,缩短了系统开发周期,系统在软件的整体设计上提出了一套相对通用的软件架构,可方便实现功能的扩展及升级。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭