首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
嵌入式技术
» 基于嵌入式Linux的3G无线视频终端的设计与实现
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
基于嵌入式Linux的3G无线视频终端的设计与实现
发短消息
加为好友
samwalton
当前离线
UID
872238
帖子
6518
精华
0
积分
3259
阅读权限
90
在线时间
309 小时
注册时间
2012-3-1
最后登录
2014-7-5
论坛元老
UID
872238
1
#
打印
字体大小:
t
T
samwalton
发表于 2013-9-7 15:39
|
只看该作者
基于嵌入式Linux的3G无线视频终端的设计与实现
视频监控
,
网络技术
,
3G网络
,
管理工具
,
服务器
随着网络技术和嵌入式技术的迅猛发展,通过网络来实现视频监控已经得到了广泛的应用,3G网络以其高带宽使得传输流畅的视频信息成为可能,本文在采用3G技术的基础上设计了一款基于嵌入式Linux的无线终端,在数据处理部分采用了Linux的Netfilter架构,通过挂载钩子函数来实现数据包在内核态的获取及高效转发,并且通过在Linux内核开辟一片缓冲区,解决了视频服务器与3G模块拨号延时而造成的速率不匹配的问题,减少了数据丢包。配合Netfilter用户态管理工具iptables的使用,可实现包过滤防火墙,及NAT等功能,从而便于本系统对流经其数据包的管理。
另一方面对嵌入式Linux的视频采集程序的设计进行了详细的介绍,并将其实际应用到了本系统的数据采集模块中去,完成了数据的采集工作,同时针对目前市场上对与3G模块通常只提供Windows CE下的驱动这一情况,开发了嵌入式Linux系统下的3G模块驱动程序,在软件设计上充分发挥了开源软件的优势,采用高效的Xvidcore编解码库,来完成视频的编码,以及使用PPP源码来编译拨号上网工具,成本低廉并且缩短了系统的开发周期,使得本系统具有较强的工程实用价值。
1 系统硬件结构
硬件上采用“ARM 3G模块”系统架构。ARM与3G模块采用分离模块的设计方法,通过USB线相连,较整体设计而言具有更好的灵活性,使得一些现有的以ARM为主处理器的系统能够很好地扩展3G功能,便于产品的过渡。本系统的核心处理器是S3C2440A,S3C2440A是一款由SamSu-ng半导体公司推出的基于arm920T内核的16/32位RISC微处理器。内部带有全性能的MMU(内存处理单元),主频为400MHz最大可达到533MHz,提供了一个数字摄像头接口(Camera Interface)。具有高性能、低功耗、接口丰富和体积小等优良特性。而3G模块核心部件采用的是MC8630模块,该模块具有语音、短信和高速数据业务等功能,可以广泛应用于高速数据传输、安防、无线媒体、直放站监控、铁路终端和车载监控等领域。
系统硬件结构如图1所示。
2 系统软件设计
系统主要由视频采集模块、数据处理模块、网络转发模块组成。
2.1 视频采集模块设计
根据项目的实际需要,在本系统中视频数据来源主要有两个方面:
1)系统与可提供主动上传功能的视频服务器通过RJ45网线直接相接主要用于完成多路视频图像采集。视频服务器的主要功能是将摄像头采集的数据完成编码压缩,并且将压缩的数据以IP包的形式发送给接收端,由于该类视频服务器通常是在局域网内使用,目前还很少有对于3G网络的支持,随着3G技术在国内发展的不断深入,将在很大程度上取代有线网络。所以本系统可作为现有视频服务器的3G功能扩展。针对在外接视频服务器时只需对收到的数据包进行转发而无需对IP数据本身做分析处理的问题,并且在系统启动到3G模块拨号成功获得IP地址之间会有一定的延迟,在本系统中提出了采用Linux的Netfilter架构的方法以及缓冲机制,通过在数据流经TCP/IP协议栈时挂载钩子函数,实现IP数据在内核态的获取,并且通过在内核开辟一块足够大的环形缓冲区来存储数据。由于系统需要频繁对缓冲区进行读写,为避免产生内存碎片,在本系统中采用了环形队列的数据结构。在3G模块获得IP地址后,再通过驱动读取缓冲区中的数据,由3G网络完成转发,从而降低丢包率并且提高数据包的转发效率。因为传统的方法是采用socket API来进行网络编程,其对数据的访问通常发生在用户态,对于Linux操作系统来说,用户进程的优先级和所占用的CPU时间要远远小于内核线程,同时内核进程拥有较高的执行优先度,故在网络布局允许获得IP数据包的条件下,将用户态的数据包获取功能载入内核态,可进一步提高系统的处理能力,增加系统的有效带宽,本方法还可用于其他对IP数据本身进行处理并且对处理效率有苛刻要求的系统中,例如:本方法在本实验室与某航空院合作开发的IP-TS协议转换器上也得到了成功的应用,具有一定的通用性。Netfilter是Linux 2.6.x系列内核提供的一套数据包过滤框架,基于该框架的软件能够实现如数据包过滤、网络地址转换(NAT)等功能。要使用Netfilter,在内核编译时设置“Network Packet Fihering”选项。Netfilter提供了一个抽象、通用化的框架,作为中间件,为每种网络协议(IPv4、IPv6等)定义一套钩子函数。对于Ipv4协议定义了5个钩子函数,这些钩子函数在数据报流过协议栈的5个关键点被调用,Netfilter可以在通过TCP/IP协议栈的路径中的几个定义良好的点上捕获数据包,IPv4中的一个数据包通过netfilter系统的过程如图2所示。
NF_IP_PRE_ROUTING
在对数据包进行初始正确性检查(校验和等)后,截获该数据包。
NF_IP_LOCAL_IN
如果数据包将要到达本地主机,则捕获该数据包。
NF_IP_FORWARD
如果数据包将要到达某些其他主机,则捕获该数据包。
NF_IP_LOCAL_OUT
在本地捕获其目的地是外部的已创建的数据包。
NF_IP_POST_ROUTING
这是最后的钩子,在此之后将传输数据包。
内核netfilter结构在/usr/src/inelude/linux/netfilter.h中定义,类似如下:
参数是:
list
Netfilter本身是一个钩子链;它指向netfilter钩子的头部,通常设置为{NULL,NULL}。
hook
该函数在数据包碰到钩子点时被调用。该函数与前面描述的函数相同,它必须返回NF_ACCEPT、NF_DROP或NF_QUEUE。如果返回NF_ACCEPT,则下一个钩子将被附加到将要调用的点。如果返回NF_DROP,则数据包被丢弃。如果返回NF_QUEUE,则对数据包进行排队。sK_buff指针被传递到该函数中,并用数据包信息如IP报头、TCP报头等进行填充,可以使用sk_buff结构指针来操作或删除数据包(要删除数据包,只需将skb指针设置为空即可)。
pf
协议簇;例如,适用于IPv4的PF_INET。
hooknum
钩子的挂载点,由于本系统不需要在本地对数据包进行任何处理,因此选择的挂在点为NF_IP_PRE_ROUTING,在对数据包进行正确性校验后就调用钩子函数处理数据包。Priority表明钩子的优先级,在本系统中采用高优先级处理NF_IP_PRI_FIRST。
内核数据处理的关键是钩子函数的编写,此函数规定了数据包在到达时需要进行的处理过程。
钩子函数框架如下:
设定好特定的钩子函数之后,调用函数
int nf_register_hook(struct nf_hook_ops*req);
将钩子函数注册至内核。一旦该结构注册到内核中,Linux将调用这里定义的函数来处理数据包。
使用函数
void nf_unregister_hook(struct nf_hook_ops*req);
可以将已经注册入内核的钩子函数取消,此时,接收到数据包将按照内核的默认规则来进行处理。流程如图3所示。
2)直接采用CMOS摄像头作为视频采集装置该视频采集模块在硬件上S3C2440带有CMOS摄像头接口,在开发板上通过称为CAMERA的接口引出,并且带有camera控制器,在本系统中使用了OmniVision公司的OV9650摄像头。S3C2440支持ITU-R BT601/656格式的数字图像输入,支持2个通道的DMA,Preview通道和Codec通道,参见图4。
Preview通道可以将YCbCr4:2:2格式的图像转换为RGB(16bit或24bit)格式的数据,并存放于为PreviewDMA分配的内存中,最大分辨率为640×480。主要用于本地液晶屏显示,Codec通道可以输出YCbCr4:2:0或YCbCr4:2:2格式到为Codec DMA分配的内存中。最大分辨率为4 096x4 096,主要用于图像的编解码处理。在本系统中使用的是Codec通道。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议