随着人们生活水平的提高和对工作、生活环境中安全防卫需求的增长,视频监控系统近年来得到了迅速的发展。传统的基于PC 机的视频监控系统多存在着诸如安装携带不便、不能在恶劣环境下使用等一些缺点,这就亟待一种全新的视频监控系统的出现。随着近年来超大规模集成电路和嵌入式软硬件技术的迅猛发展,特别是DSP、PowerPC 等嵌入式芯片的出现,将嵌入式处理器应用到视频监控系统中不仅克服了上述基于PC 机系统的一些缺点,而且其强大的功能加上丰富的外设接口和高度的可编程性使得视频监控的硬件和软件都更容易实现。正是由于越来越高的性价比加上体积小、成本低等独特优势,使得嵌入式芯片在视频监控领域也渐渐拥有了一席之地。
1 系统概述
本方案采用DSP+ARM 的双核结构,采用H.264标准作为视频压缩标准,采用开放性的uclinux 操作系统。其中DSP 芯片采用TI 公司的DM642,主要用来进行图像处理,ARM 芯片采用S3C2510 进行操作控制。本方案中服务器不仅要采集、处理视频,还要进行控制,如通过云台的控制对监控图像的视场、方位进行改换等。虽然DM642 具有较高的性能和丰富的接口,但要让DSP 完成上述全部功能,就显得力不从心了,系统的实时性和图像质量将难免受到损伤。
引入ARM 主机则可从根本上解决这些问题。ARM 是32 位CPU,功能强大,可以构建适于网络传输的操作系统。
2 系统设计
2.1 总体设计
网络硬盘录像机的硬件体系包含以下几个处理单元:视音频采样、视音频压缩处理模块、视音频预览模块、视音频回放模块、记录模块、网络模块、报警输入输出模块、人机界面模块等,以下是网络硬盘录像机的结构示意图,其中包含了压缩模块、预览模块、硬盘控制器及主控模块,各模块之间的数据通过PCI内部总线进行传输。
图1 系统结构示意图
采样的视音频数据由压缩模块进行处理,处理后的视音频数据供预览、录像或通过网络传输,视音频处理的核心部件为数字信号处理器(DSP)。系统资源的管理与调度由主控模块完成,其核心部件为ARM 芯片。
2.2 视频和音频采集和处理模块
本系统采用模拟摄像头进行视频数据采集,然后将采集到的模拟数据通过TI 公司的TVP5154 芯片进行数字化,TVP5154 视频编码器支持PAL/NTSC、CVBS 或Y/C 模拟视频输入,8-bit BT.656 数字视频数据流输出,其输出的数字视频流可以与DM642 实现无缝连接。在本地预览和本地回放模块,采用SAA7105 视频解码器进行解码,SAA7105 型视频解码器支持8-bit BT.656 数字视频数据流输入,PAL/NTSC、CVBS 或Y/C 模拟视频输出。通过DM642 的I2C 总线对视频编/解码器的内部寄存器进行编程,实现不同的输入输出,视频编解码器的参数通过I2C 总线配置。作为视频输入口时,视频数据的行/场同步又包含BT.656 数字视频数据流中的EAV和SAV 时基信号控制,视频口只需视频采样时钟和采样使能信号(控制采样起始),TVP5154 用系统时钟SCLK 提供采样时钟,用可编程引脚GPCL 提供采样使能。作为视频输出口时,视频口要为SAA7105 提供时钟和行/场同步信号。DM642 有3 个视频口,每个都可以配置为上下两个通道,但VP0、VP1 的两个通道必须同时为视频输入口或输出口。结合实际应用,在本系统中VP0 和VP1 的 A 通道配置为8-bitBT.656 视频输入口,VP2 A 和B 通道配置为2 个8-bit BT.656 视频输入口,VP0 和VP1 的B 通道配置为MCASP,接四个音频Codec.
音频部分采用TLV320AIC23B 型音频编/解码器,它支持麦克风/立体声模拟输入/输出和数字音频数据流输出/输入。PLL1708型可编程视频/音频同步数字锁相环给McASP 和TLV320AIC23B 提供时钟信号,SCK02 端口接McASP 的AHCLKX,SCK03 端口接TLV320AIC23B 的主时钟MCLK.PLL1708 的时钟输入为27MHz.DM642 与TLV320AIC23B 的对应引脚功能见表1.
表1 DM642 与TLV320AIC23B 的对应引脚。
2.3 存储模块
DM642 的EMIF在内存中的地址映射分为4 个可独立寻址的空间CE[3:0],自地址0x80000000 起各占256MB.根据设计中所选用芯片的数据宽度等特点,可以对这4 个寻址空间进行配置。其中,CE0 空间配置成64 位宽度,只用于SDRAM内存的映射;CE1 空间配置成8 位宽度,用于Flash、UART 的映射;CE2 空间配置成16 位宽度,用于ATA 寄存器的映射;CE3 本设计中未使用,可以作为将来扩展子卡用。
在本设计中,硬盘控制器芯片使用Silicon Image公司的SiI3512双口SATA 控制器来实现SATA 功能。
SiI3512 直接挂载在S3C2510 的PCI 总线上为系统提供SATA 接口。连接方式如图2 所示:
图2 SiI3512 与S3C2510 的连接方式。
2.4 电源模块
2.4.1 供电电路
整个电路板采用+5 V 电压供电,可以从外部引入,也可以从扩展的PCI 接口引入。DM642 芯片需要2 个独立的电压,CPU 内核电压GVDD(+1.4 V)和外围I/O 电压DVDD(+3.3 V)。这两个电压在供电时需要严格按照顺序进行,即GVDD 要比DVDD 上电早,至少不能晚于DVDD.设计中采用2 片TI 公司专为高性能DSP、FPGA、ASIC 和微处理器的应用而设计的电源芯片TPS54310,分别给DM642 提供CVDD 和DVDD 电压。在电路连接上将TPS54310(1)的PWRGD引脚和TPS54310(2)的SS/EN引脚相连。
当(1)的输出电压高于1.2 V 时,芯片(2)开始工作;当这个值达到稳定的+1.4 V 后,PWRGD 引脚输出高电平送到芯片(2)的SS/EN 引脚。这就保证了CPU 内核的上电时间早于I/O 的上电时间,如图3 所示:
图3 电源电路。
2.4.2 电源监测电路
为了保证DM642 芯片在电源未达到要求的电平时,不会产生不受控制的状态,而且允许系统中的各个芯片在任意时刻可以通过复位来调整工作状态,这就需要在系统中加入一个电源监测电路,.该电路能确保在系统的加电过程中,CVDD 和DVDD 达到要求的电平之前,DSP 始终处于复位状态。选用了TI 公司生产的TPS3823-33 芯片,其固定复位信号时间长达200 ms,能满足系统中所有芯片的复位需求。芯片带有一个看门狗电路,通过WDI 引脚接收来自CPU 的定时信号,避免发生系统程序跑飞的情况。
3 系统的软件设计
3.1 系统的软件设计
该系统的软件主要包括三个部分:启动程序,内核与根文件系统,专业芯片驱动及应用。为了开发和升级的方便,我们将根文件系统作成RAMDISK 的格式。据此我们将FlashROM 分为3 个区:1 Cramfs,2 Boot-Loader,3 Kernel+RAMDISK.本系统的启动程序用的是DENX 的U-boot-1.1.0.它的主要工作是初始化硬件,为加载操作系统准备必要的环境及其参数,同时可以与开发主机通讯,下载程序到SDRAM 和Flash.通过修改它的一些配置文件,可以完成对目标系统Memory Controller,memory map以及I/O,PCI,Flash,Ethernet controller,Serial等硬件设施的初始化。
对于芯片驱动程序的编写,一些通用设备驱动,如以太网卡驱动已经在内核中,对于系统的一些专业芯片的驱动由于其特殊性,将其和应用做成Cramfs文件系统格式,在目标板的的操作系统启动时以module 的形式进行加载,方便修改和升级。编写驱动程序可以按照Linux 下编写驱动程序的规则来编写。编写的驱动程序应该具有以下功能:a)对设备的初始化和释放:b)数据从内核传到硬件和从硬件读取数据:c)读取应用程序传递给设备文件的数据和回应应用程序请求的数据:d)检测和处理设备出现的错误。
设备驱动程序的实质就是中断处理。Linux 中断处理程序分为上半部和下半部。上半部即一般的中断服务程序, 由硬件中断触发,一般运行在关中断的方式下,应当尽可能的短小,处理尽可能的快:下半部运行在开中断和任务串行化的环境下,处理需要较长时间的任务。驱动程序上半部在处理完实时性很强的任务后,用Queue-task 函数将下半部处理函数挂入立即队列,用mark-bh 函数来激活立即队列,下半部就可以最优先的被执行。
3.2 应用程序的设计
应用程序的设计可以采用多线程或者多进程的方式。多线程的优点在于线程比进程要小,可以使应用更轻量,线程间通讯方便,缺点就在于由于线程使用同一个地址空间,如果一个线程出了问题,将可能影响到整个系统;多进程各自占有一份内存空间,因此可以增强系统的健壮性,但是多进程增加了系统的开销,同时进程间通讯较复杂。结合我们系统的实际,考虑到各个线程通讯的重要性,我们采取多进程多线程的方式,在软件上增加一个与主进程并行的守护进程,在硬件上设置看门狗,以增强系统的健壮性。
4 远程控制与通信链路的建立
本设计采用PPP 串行通信接口协议方式。PPP(PointtoPointProtocal,点对点协议)协议中包含3 个部分:
在串行链路上封装IP 数据报的方法;建立、配置及测试数据链路的链路控制协议(LCP);不同网络层协议的网络控制协议(NCP)。PPP 具有很多优势;支持循环冗余检测、支持通信双方进行IP 地址动态协商、对TCP 和IP 报文进行压缩、认证协议支持(CHAP 和PAP)等。
PPP 的实现可以通过2 个后台任务来完成,协议控制任务和写任务。协议控制任务控制各种PPP的控制协议,包括LCP、NCP、CHAP 和PAP.它用来处理连接的建立、连接方式的协商、连接用户的认证以及连接中止。写任务用来控制PPP 设备的数据发送。数据报的发送过程,就是通过写任务往串行接口设备写数据的过程,当有数据报准备就绪,PPP 驱动通过信号灯激活写任务,使之完成对串行接口设备的数据发送过程。PPP 接收端程序通过在串行通信设备驱动中加入"hook"程序来实现。在串行通信设备接收到1 个数据之后,串行设备的中断服务程序(ISR)调用PPP 的ISR.当1 个正确的PPP数据帧接收之后,PPP 的ISR 通过调度程序调用PPP输入程序,然后PPP 输入程序从串行设备的数据缓存中将整个PPP 数据帧读出,根据PPP 的数据帧规则进行处理,也就是分别放入IP 输入队列或者协议控制任务的输入队列。
5 总结
我们采用ARM 和DSP 芯片的双核结构组建了一种网络视频服务器。以DM642 和S3C2510 分别作为视频板和主机板的核心芯片,H.264 作为视频压缩方案,操作系统选用了uclinux.本系统充分利用了ARM 和DSP 的各自特点,充分发挥ARM 的事件处理控制能力和DSP 对数字视频大吞吐量要求,同时通过优选主要芯片,努力提高整机性价比。本系统可同时输入16 路视频信号,在保障视频质量的前提下,适于当前不同带宽的网络要求。