APP下载

基于ARM 9的智能家居远程视频监控系统的设计

2011-03-27李宝山程丽娟

电脑与电信 2011年7期
关键词:驱动程序内核以太网

李宝山 程丽娟

(内蒙古科技大学信息工程学院,内蒙古包头014010)

1.引言

为提高家庭的智能化水平,本设计提出采用ARM芯片作为整个远程家居控制系统的控制芯片﹑LINUX作为整个系统的操作系统的设计思想,给出远程家居智能控制系统具体的软硬件解决方案。而嵌入式网络视频监控系统以嵌入式微处理器和嵌入式操作系统[1]为核心,专用性强,软硬件结合紧密,设备构成简单,成本较低,在各个领域得到了广泛的应用。

2.系统的硬件设计

本系统选用韩国三星电子的基于ARM 920T内核的32位嵌入式微处理器S3C2410作为系统的控制核心,该芯片本身集成了包括存储器接口、通信接口(USB,RS232),A/D,JTAG等在内的丰富的硬件资源,可简化外围设备与微处理器的硬件连接程度,提高系的稳定性、可靠性[3]。其硬件结构如图1所示。

图1 硬件结构图

由于S3C2410本身没有集成以太网控制模块,所以需要一个与之相匹配的控制芯片来实现以太网扩展接口。本系统选用CIRRUSLOGIC公司的CS8900A作为系统的以太网控制芯片。CS8900A是一个单芯片全双工的以太网解决方案,所有的数字和模拟电路合成了完整的以太网电路。主要结构包括ISA总线接口、802.3MAC引擎、BUFFER、串行E2PROM接口和带10BASE2T和AUI的模拟前端。CS8900A的10BASE2T接口通过变压器HR601627与RJ45网口连接。

3.系统的软件设计

3.1 嵌入式操作系统的选择及移植

本系统采用Linux作为操作系统[4],并选用Linux2.6内核在嵌入式微处理器S3C2410上移植,具体移植方法如下:

①准备Linux2.6内核移植所必需的文件(内核压缩包linux-2.6.tar.bz2及交叉编译器arm-linux-gcc-3.4.1.tar.bz2),这些文件可到Linux官方网站免费下载。

②利用Linux命令(mkdir,tar,mv及export)安装交叉编译器arm-linux-gcc-3.4.1。

③修改Makefile文件及相关硬件文件。由于内核的编译是根据Makefile文件的指示进行的,Makefile文件来组织内核的各模块之间的关系,记录了各个模块之间的相互联系和依赖关系。所以,开发人员要首先修改Linux2.6根目录下的Makfile文件,修改的主要内容是目标代码的类型和为编译内核指定一个编译器。

④运用Make命令编译内核生成内核镜像文件zImage文件,通过相应的固化软件把这个文件固化在系统相应的存储器中,完成Linux2.6内核在ARM微处理器上的移植。

3.2 应用软件的设计

3.2.1 软件的总体架构

嵌入式远程视频监控系统采用客户端-服务器(Client-Server)模型。在客户端/服务器模型中,客户端向服务器端发送请求信息服务器对客户端的请求信息进行响应,实现远程通讯。远程服务器端与客户端的通信采用TCP协议,TCP协议是面向连接的、提供差错控制、超时重发机制,而视频数据的传输采用UDP协议以提高传输速度和实时性。由于UDP协议没有提供差错控制、超时重发等机制,因此系统使用多媒体数据传输的实时传输协议RTP(Real time Transport Protocol)和实时传输控制协议RTCP(Real time Transport Control Protocol)。RTP协议是在因特网上广泛使用的多媒体数据流的一种传输协议,服务器通过RTP/RTCP协议向客户端发送视频流[2]。系统软件结构图如图2所示。

图2 系统软件结构图

3.2.2 服务器端和客户端软件设计

Linux的网络功能非常强大,支持多种网络协议。本系统使用套接字接口实现客户端与服务器端的通讯。套接字(socket)是由通讯协议、IP地址和端口三部分组成,其中通讯协议有TCP和UDP协议,端口号用来代表通信进程。根据使用协议的不同,有三种套接字:流格式、数据报格式和原始格式。

3.2.3 视频采集模块的设计

在Linux下加载驱动程序可以采用动态和静态两种方式。静态加载就是把驱动程序直接编译到内核里,系统启动后可以直接调用;动态加载利用了可以在系统启动后用insmod命令把驱动程序添加上去,在不需要的时候用rmmod命令来卸载。动态方式与静态方式相比,测试要简单的多。不需要下载整个内核,只需通过NFS加载驱动即可测试。在测试成功后就可以编译进内核。本系统摄像头驱动程序采用了动态加载的方式,在程序启动时再加载。在Linux操作系统中,外部设备被看作设备文件,完成视频设备驱动程序加载后,通过open函数打开设备;视频设备完成初始化后,进入工作状态,开始采集视频帧;系统将采集到的视频数据放在内存缓冲区中,通过Mmap函数实现内存文件与普通文件之间的映射。其主要过程如图3所示。

为了实现实时传输的要求,需要对摄像头采集的数据进行压缩处理。基于MPEG-4的视频压缩编码技术能大幅度降低录像存储容量,获得较高的录像清晰度,特别适用于长时间实时录像的需求同时具备在低带宽上优良的网络传输能力。基于其以上优点,本系统选用MPEG-4视频压缩编码方式。MPEG-4将图像分为三种:I帧、P帧和B帧。编码流程如图4所示。

图3 视频采集流程图

图4 视频解码流程图

为了节约成本,本系统没有用专门的视频编解码硬件,而是采用了现有开源的的MPEG-4视频编码软件FFmpeg对视频图像进行压缩编码。FFmpeg是一个高效编码流的而且具有可移植性的编码软件[5],FFmpeg的开发是基于linux操作系统的,最适合移植到嵌入式系统,是因为它是采用纯C语言编写的,对各种编译器进行了优化,并针对ARM处理器用汇编语言实现了DCT和逆DCT的相互变换。所以本系统中采用了FFmpeg软件。

4.结论

本方案设计采用ARM 9处理器和嵌入式Linux操作系统构建了基于MPEG-4远程视频监控系统,系统采用USB摄像头采集视频,开源软件FFMPEG对视频进行编码,在工业监控、智能家居等领域具有广泛的应用前景。下一阶段我们的重点将主要集中在如何研发出更适合中国国情的智能家居的产品以及如何进一步提高产品的可扩张性。

[1] GORMAN M,SAHLMAN W A.What do venture capitalists do[J].Journal of Business Venturing,1989,4(4):231-248.

[2] 樊振萍,唐继勇.基于RTP协议和MPEG-4的流媒体系统分析与实现[J].西部广播电视,2004.

[3] 赖晓晨,原旭,孙宁.嵌入式系统程序设计[M].北京:清华大学出版社.2001,11:30—31.

[4] 王学龙.嵌入式Linux系统设计与应用[M].北京:清华大学出版社.2001.

[5] 李少春.基于FFmpeg的嵌入式视频监控系统[J].电子技术,2007,3.

猜你喜欢

驱动程序内核以太网
强化『高新』内核 打造农业『硅谷』
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
计算机硬件设备驱动程序分析
谈实时以太网EtherCAT技术在变电站自动化中的应用
微生物内核 生态型农资
一种90W高功率以太网供电系统的设计
浅谈EPON与工业以太网在贵遵高速公路中的应用
基于MPC8280的CPU单元与内部总线驱动程序设计