基于ARM的视频监控终端

2022-09-10

视频监控系统在工业、军事、民用领域有着广泛的应用, 为这些行业的安全防范和环境监控起到了不可忽视的作用。视频监控系统正逐步由模拟化走向数字化随着半导体技术的飞速发展和多媒体视频编解码技术的日益成熟, 高性能、复杂的视频流压缩算法在嵌入式系统中的应用成为了现实。本文探讨用A R M处理器与软件压缩相结合的办法实现。

1 视频监控系统总体设计

整个视频监控系统采用C/S结构。服务器端主要包括S3C2410平台上运行的采集、压缩、传输程序, 客户端是P C机上运行的接收、解压、回放程序。视频监控终端从现场的摄像头捕获实时的视频信息, 压缩之后通过以太网传输到视频监控服务器上。视频图像采集和打包发送在服务器端完成, 图像的接收解包和回放将在客户端完成。

2 系统的硬件设计

系统采用模块化设计方案, 主要包括以下几个模块:主控制器模块、储存电路模块、外围接口电路模块、电源和复位电路。

3 S3C2410主控器模块

主控器采用S 3 C 2 4 1 0处理器是基于ARM920T处理器核的16/32位微控制器。S 3 C 2 4 1 0提供了丰富的片内资源, 支持L i n u x。它能完成整个系统的调度工作, 在系统上电时配置所有需工作的芯片的功能寄存器, 完成视频流的编码, 并通过以太网控制器控制物理层芯片发送视频码流。

4 系统存储电路模块

主控器还需一些外围存储单元如N a n d Flash, 和SDRAM。Nand Flash中包含Linux的Bootloader、系统内核、文件系统、应用程序以及环境变量和系统配置文件等;S D R A M作为内存单元使用。设计采用了64M的Nand Flash和64M的SDRAM。

5 外围电路模块

本设计用到的外设有U S B接口, 网卡接口, RS232接口和JTAG接口。视频监控终端通过专用的USB集线器与多个USB摄像头相连。在实时监控状态下, S3C2410对采集到的图像进行实时编码压缩, 编码之后的码流直接传输到发送缓冲区中, 等候发送。

本设计采用C S 8 9 0 0 A扩展网络接口。S 3 C 2 4 1 0通过地址、数据、控制线以及片选信号线对CS8900A网络芯片进行控制和通信。CS8900A由S3C2410的n GCS3信号选通, CS8900A的INTRQ0端用来产生中断信号, 与S3C2410的16位数据总线相连, 地址线使用了A[24:0]。

6 系统的软件设计

视频监控终端的软件设计主要完成两方面的工作。

(1) 在硬件上搭建一个软件平台, 搭建嵌入式Linux软件开发平台需要完成UBOOT移植、嵌入式L i n u x操作系统内核移植以及嵌入式L i n u x操作系统的设备驱动程序的开发等工作。

(2) 在软件平台的基础上, 开发系统的应用程序。借助交叉编译工具, 开发视频监控终端上运行的采集、压缩、传输程序。

7 构建基于S3C2410的Linux平台

构建嵌入式L i n u x开发平台需要先构建交叉编译环境。一套完整的交叉编译环境包括主机和目标机。在开发中主机是一台装有Fedore Core 8操作系统的PC机, 目标机是基于S3C2410的视频监控终端。选用的交叉编译器是GCC3.3.4 for ARM版嵌入式L i n u x内核源代码包版本号为2.62 8。编译内核之前首先要配置内核, 裁减掉冗余的功能模块。具体步骤如下。

(1) 通过命令make menuconfig, 对内核进行配置, 选择Y A F F S文件系统, 支持N F S启动, 启用U S B设备支持模块, 包括USB设备文件支持模块、USB主控制器驱动模块等。此外, U S B摄像头属于视频设备, 还需要启用Video4Linux模块。

(2) 用make dep命令生成内核程序间依赖关系。

(3) make z Image命令生成内核映像文件。

(4) make modules和make modules_install命令生成系统可加载模块。

这样就生成了z I m a g e内核映像文件, 把它下载到目标平台的F l a s h中。

本设计采用U S B外置摄像头, 在内核配置时要求以模块形式加载。首先要完成驱动程序, 驱动中需要提供基本的I/O操作接口函数open、read、write、close的实现, 对中断的处理实现, 内存映射功能以及对I/O通道的控制接口函数ioctl等, 并把他们定义在struct file_operations中。接着把USB驱动程序编译成可以动态加载的模块。

8 视频监控终端软件的设计

视频监控终端软件按功能分为三部分:视频采集、压缩、传输。这个软件的开发都是基于先前配置好的嵌入式内核。

(1) 视频采集部分。

使用Video4Linux接口函数访问USB摄像头设备, 捕获实时的视频流。首先完成数据结构的定义, 如设备基本信息, 图像属性等;采集模块一方面通过U S B集线器采集U S B摄像头中的图像, 另一方面启动多个采集线程, 分别在不同的端口上监听。

(2) 视频数据的压缩部分。

在视频监控系统中, 为了保证传输质量和传输实时性, 需要在传输之前进行编码压缩以减少数据量, 本文采用M P E G-4编码标准进行数据压缩。使用开源的xvidcore软件作为视频压缩的核心算法, 将它在P C机上进行交叉编译, 生成的文件拷贝到目标系统下。

(3) 视频数据传输部分。

传输模块在压缩之后将视频流传送到远程的P C机客户上, 传输是基于T C P/I P协议。视频传输采用了标准的R T P传输协议。在L i n u x平台上使用一些开放源代码的R T P库进行实时流媒体编程。定义一种较为简单的握手协议:P C机端的采集程序不停地发请求数据包到采集终端, 采集终端把已经捕获的图像打包返回给主机。每个RTP信息包被封装在UDP消息段中, 然后再封装在I P数据包中发送出去。接收方自动组装接收到的数据帧, 还原成视频数据。

9 结语

本文介绍了一种基于A R M的视频监控系统的设计方案, 采用软压缩算法。本系统和市场上其它视频监控系统相比, 开发周期短, 价格低廉, 适用于对视频图像要求不太高的场合。

摘要:本文描述了如何使用ARM和嵌入式linux制作一个视频监控终端的架构以及如何如何完成的流程。

关键词:ARM,嵌入式系统,嵌入式linux

参考文献

[1] 杜春雷.ARM体系结构与编程, 清华大学出版社, 2003.

[2] 杨水清, 等.ARM嵌入式Linux系统开发技术详解[M].电子工业出版社, 2008.

[3] Corbet, J.等, 著.魏永明, 耿岳, 钟书毅.等[译].LINUX设备驱动程序[M].中国电力出版社, 2006.

[4] Chris Negus.Linux Bible.Wiley Publishing, Inc, 2005edition.

[5] Karim Yaghmour.Building Embedded Linux Systems, O’Reilly, 2003.

上一篇:大学课堂教学任务的思考和构建下一篇:浅析唐代仕女画中的社会生活