引言
随着公路交通的不断发展,长途客运车也随之不断增长,方便人们出行的同时,交通事故不断发生,盗窃、抢劫也时有发生。
为了能使汽车安全的行驶,乘客放心的乘坐,开发研究一套良好的长途客运车无线视频监控系统就显得尤其的重要。
近年来传统的模拟视频监控技术正在逐步向数字化、网络化、智能化发展,将监控技术与网络技术,特别是无线网络技术完美结合,是数字监控领域的新方向。本文介绍的长途客运车无线视频监控系统是整合嵌入式技术、CDMA无线网络通讯技术、MPEG-4数字视频压缩技术和GPS定位技术为一体的视频终端。
系统简介
整个无线视频监控系统由车载终端(包括TMS320DM270 CPU模块、视频输入模块、CDMA模块、GPS模块等)、通信网络和监控中心组成,其系统结构如图1所示。
车载终端被放置在长途客车内,用来采集车内图像并利用MPEG-4技术对图像进行压缩,使图像分辨率达到CIF格式,帧率在1-8帧/秒可调。同时GPS模块实时接收全球定位卫星发射的信号,得到当前车辆位置和速度。最后CPU将压缩后的视频流与GPS数据通过CDMA无线通信网络和Internet网络发送到监控中心,从而在监控中心可以看到车内情形,以及在电子地图上显示客车的方位与速度。
车载终端硬件设计
车载终端的设计是根据系统的总体要求,将硬件电路划分为独立的硬件功能模块(TMS320DM270 CPU模块、视频输入模块、CDMA模块、GPS模块等),并给出各个硬件模块的功能定义以及他们之间的关系。车载终端的结构框图如图2所示。
TMS320DM270 CPU模块
TMS320DM270是TI公司推出的一款双核多媒体处理器。它内部集成了两个处理器:ARM7TDMI RISC处理器;TMS320C5409 DSP,并带有两个协处理器――图像加速(iMX)和可变步长编解码器(VLCD)。
DM270还集成了SDRAM控制器、CCD可编程控制器、预览引擎(Preview engine)、专用的硬件3A模块可以消除主处理器的某些任务负担,如:白平衡、自动曝光和自动调焦。除此之外,还有USB、UART、SPI、外围存储接口等功能。
视频输入模块
视频输入模块主要由镜头模块和模拟前端电路组成。模拟前端的作用是将图像传感器输出的模拟信号钳位放大,并完成A/D转换,这里采用的是TVP5150。TVP5150是TI的一款高质量数字视频解码器,可以很方便将模拟视频信号转换成数字视频信号。TVP5150由一组内部寄存器初始化并控制,因此在系统复位上电时DM270要通过I2C对TVP5150进行初始化。
CDMA模块和网络模块
作为监控调度系统,首先要考虑监控覆盖范围、实时性、车辆容量、刷新速率等要求,选择合适的无线数据链路。由于长途客车的行驶范围比较大,所以本系统选择无线网络覆盖范围较大的CDMA网络。
CDMA是码分多址的英文缩写(Code Division MulTIple Access),它是在数字技术的分支――扩频通信技术上发展起来的一种移动通信技术。本系统采用Q2358C RJ45接口模块作为CDMA接入设备,它内嵌TCP/IP协议栈,支持高达153.6Kb/s的数据吞吐率,适合窄带宽视频传输,有相当高的稳定性。由于系统采用了先进的MPEG-4编码技术,所以完全可以适应CDMA的传输速率。
网络模块也是本系统中一个重要的组成环节,采用的是AX88796网卡芯片。它负责将CPU处理后的数据(MPEG-4视频数据、GPS数据)通过RJ45接口发送给CDMA模块,CDMA模块再根据目的地址把数据送给监控中心。
GPS模块
GPS(Global PosiTIoning System)是一套由美国国防部历时20年,耗资200亿美元,于1994年建成的卫星定位系统,其基本原理是利用绕着地球的24颗卫星所发射的信号,再加以几何上的计算,来得到接收者的位置。本系统采用的是Motorola UART接口的一款GPS模块,定位误差小于25米,测量速度范围是515米/秒。该模块将接收的卫星数据转换为规定的数据格式,其中包括经度、维度、高度、速度等。CPU从串口读取这些数据,确定车辆的位置与速度。
FLASH和SDRAM模块
本系统设计2M的NORFLASH用来存储程序,NORFLASH的2M空间被划分为四部分,分别存放Bootloader、参数、内核和文件系统。16M的SDRAM用于系统软件的运行以及各种数据(MPEG-4视频数据、GPS数据)的存取。
车载终端软件设计
基于DM270的软件设计分为两部分:ARM端设计、DSP端设计。DSP端的软件设计主要是图像算法的设计,本系统采用的是MPEG-4算法,同时把DSP作为嵌入式uClinux的外部设备,并编写DSP的驱动程序,注册进内核;ARM端运行uClinux *** 作系统,处理非成像功能,用来控制整个系统的各个模块。系统软件层次结构如图3所示。
uClinux内核移植
uClinux是Linux的一个分支,源代码开放,并且被广泛的移植到多种CPU平台上。uClinux内核是由Linux内核根据所要运行的CPU裁减、修改而来的,因此它保持了原有Linux *** 作系统的主要优点,如稳定性好,出色的文件系统支持功能,完善的应用程序和驱动程序开发环境,以及Linux原有的完整的TCP/IP协议包。这样,当越来越多的嵌入式系统需要提供网络支持功能时,uClinux便成了首选的 *** 作系统。
uClinux的移植工作主要包括内核的修改、裁减与编译。
首先是开发环境的建立。主要由目标系统硬件开发板和宿主PC机构成。先在宿主PC机上安装标准Linux发行版Red-Hat Linux和交叉编译工具arm-elf-tools-20030314.sh,再从网络上获得免费的uClinux内核源代码uClinux-dist-20041215.tar.gz,并在宿主PC机上执行tar zxvf uClinux-dist-20041215.tar.gz对其解压。
其次是内核的修改。修改的文件主要有:
1)uClinux-dist/linux-2.4.x/arch/armnommu/boot/compressed/head.S,启动文件。
2)uClinux-dist/linux-2.4.x/arch/armnommu/boot/Makefile,启动配置文件,主要修改的是ZTEXTADDR(自解压代码的起始地址)和ZRELADDR(内核解压后代码输出起始地址)。
3)uClinux-dist/linux-2.4.x/arch/armnommu/config.in,修改DRAM_BASE、DRAM_SIZE、FLASH_MEM_BASE和FLASH_SIZE,主要为确定SDRAM、FLASH的起始地址和大小。
4)uClinux-dist/linux-2.4.x/arch/armnommu/Makefile,修改TEXTADDR来配置内核的起始地址。
5)uClinux-dist/linux-2.4.x/drivers,修改并添加所需的驱动程序。
6)uClinux-dist/linux-2.4.x/drivers/block/blkmem.c,ROM文件系统的定位修改。
7)uClinux-dist/vendors/TI/dm270,修改硬件配置文件。
8)uClinux-dist/linux-2.4.x/Makefile,选择CPU体系机构(ARCH?:=?armnommu)和交叉编译器(CROSS_COMPILE?=?arm-elf-)。
对内核修改完毕后,在uClinux-dist目录下执行make menuconfig。在d出的对话框中对内核进行配置和裁减。
最后就是编译内核。依次执行make dep(编译相关依赖文件),make clean(在编译内核之前把内核清理干净),make(最终的编译命令),此时在images目录下生成了image.ram和image.rom文件,iamge.rom便是要烧写到FLASH中的内核映像文件。
驱动程序设计
设备驱动程序是内核的一部分,是 *** 作系统内核和机器硬件之间的接口。Linux *** 作系统将所有的设备看作具体的文件,对与用户而言,可以通过设备驱动程序所提供的一组入口点(open()、close()、read()、write()、ioctl()等)来完成对设备文件的访问和控制。在Linux系统里,设备驱动程序提供的这组入口点是由结构
向系统注册设备,登记驱动程序所提供的入口点。当应用程序对设备 *** 作时,会根据file_operations结构中的函数指针找到相应的 *** 作函数并进行调用。图3中的驱动程序都是按照上述来完成的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)