基于DSP的视频监控平台的设计
2013-05-08
作者:张震震,李临生,田启川
来源:来源:微型机与应用2013年第6期
摘 要:随着视频监控的不断发展和DSP技术的进步,基于DSP的视频监控受到越来越广泛的关注和应用。基于TI公司的TMS320DM6437设计了实时的网络视频监控平台。介绍了整个系统的框架,并对基于DSP/BIOS的软件设计进行了详细分析,如视频驱动、Codec Engine软件框架和网络传输。该平台具有视频信号采集、视频处理和视频传输的功能,可应用于不同的领域。
关键词:视频监控;DSP;DSP/BIOS
视频监控作为当今安防工作的重要组成部分,目前正朝着数字化、智能化和网络化的方向快速发展,广泛应用于智能家居和交通安全等领域。解决视频监控的关键技术之一是实现终端运动目标的识别和跟踪。目前的视频监控实现方案主要有以下几种:
(1)基于PC的监控系统。该系统结构简单、成本低,可实现简单的视频监控。但该系统不适合将其嵌入到远程区域进行监控,无法满足现在的安防需求[1]。
(2)基于DSP+FPGA双处理器的视频监控。其中FPGA完成图像预处理的运算工作,DSP主要完成复杂的图像后处理工作并输出信号控制监控平台。该系统能够有效利用DSP和FPGA在功能上互补的特点,但是进行数据交换时易出现延迟问题,而且系统的性价比低,体积和功耗相对单处理器较高[2]。
(3)基于双DSP的视频监控系统。该系统采用两片集成度高、运算速度快的DSP芯片,一片用于视频监控的算法运算,另一片主要完成视频的压缩编码。该系统传输速度快、实时性好,但也存在资源利用不充分的不足,而且系统相对复杂[3]。
(4)基于单核DSP的视频监控系统。该方案满足了视频监控的需求,同时实现资源的充分利用[4]。
为此,本文提出了基于TMS320DM6437的视频监控的设计。
1 系统整体介绍
该系统通过CMOS 摄像头采集实时图像,通过TVP5146解码器对视频信息解码后将数据交给DM6437,然后视频处理子系统调用算法处理,并把处理结果通过网络传输交给终端PC。整个系统依托于DSP/BIOS操作系统来实现多任务调度和存储器管理等。系统的整体主要硬件框架如图1所示。
2 系统主要硬件介绍
2.1 核心处理器
系统选用TMS320DM6437数字媒体处理器作为核心处理器,它是首批支持达芬奇技术的纯DSP 器件,其强大的功能可支持H.264视频编码。它有8个并行处理单元,其体系采用甚长指令字(CLIW)结构,具有强大的处理能力。DM6437还集成了很多外设接口,主要包括意识视频处理子系统(VPSS)、以太网接口、I2C接口、EMIF接口和DDR2接口等。
其中VPSS提供了一个VPFE输入接口(连接外部设备,如图像传感器、视频解码器等)以及一个VPBE输出接口(连接显示设备,如analog SDTV显示器、数字LCD面板、HDTV视频编码器等)。VPFE由5部分组成:CCDC、IPIPE、H3A、resizer和histogram,这5部分组合构成了强大、灵活的前端接口;VPBE包含On-Screen Display(OSD)模块、带数字LCD和模拟DAC接口的Video Encoder(VENC)。VENC生成模拟式视频输出。DLCD控制器产生数字RGB/YCBCR,输出数据及时间信号。
2.2 存储器模块
系统主要的存储设备有DDR2,它与上一代DDR内存技术标准最大的不同就是,虽然同是采用了在时钟的上升/下降沿同时进行数据传输的基本方式,但DDR2内存却拥有两倍于上一代DDR内存预读取能力(即4 bit数据预读取)。换句话说,DDR2内存每个时钟能够以4倍外部总线的速度读/写数据,并且能够以内部控制总线4倍的速度运行。
开发板通过专用的DDR2存储控制器接口扩展了64 MB的DDR2 SDRAM,为视频应用带来了高吞吐、高容量存储带宽,并最大可以扩展到256 MB;此外,256 MB的Nor Flash为视频应用程序脱机运行提供了有力的容量保证。
2.3 网络模块
网络接口工作在7层OSI参考模型的物理层和数据链路层,在以太网卡中,数据链路层的芯片被称作MAC控制器,物理层的芯片被称作PHY。在本系统中,考虑到DM6437片上带有EMAC()/MDIO()接口,即提供数据链路层控制,所以选择网卡芯片时只需要有PHY功能即可。
3 系统软件设计
本系统中,DSP端的软件主要包括:视频驱动程序开发、Codec Engine的使用以及网络模块的程序开发(即NDK的使用),应用程序的总体框架如图2所示。
在DSP/BIOS实时操作系统下,系统上电或是reset后,从程序入口点到main函数前,要执行系统的初始化,从而对相关DSP的寄存器进行配置,包括复用引脚和外设接口等的配置。main函数使外设芯片正常工作,然后启动任务线程。main函数返回后,将CPU的使用权交给DSP/BIOS,由DSP/BIOS 进行程序运行中的控制调度,包括内存管理、中断处理和任务管理等。本系统中,DSP/BIOS启动两个静态配置的任务线程,包括previewTask和tskNdkStackTest。前者是整个系统的主线程,主要负责视频驱动模块和Codec Engine框架的初始化、视频图像的实时获取、视频处理算法的执行以及处理结果的输出等;后者则专门负责网络模块的所有功能。
3.1 视频驱动软件
该系统的软件设计中,视频驱动是应用程序与底层硬件之间的重要桥梁,是软件设计中非常重要的一部分。视频驱动程序主要用于前端的视频接收端,而后端直接将算法处理结果通过网络传送到PC。TI公司提供了专门的视频处理的驱动接口函数,接口函数名均以“FVID”开头,它是将GIO的APIs根据需要再次进行封装得到的,如表1所示。
系统上电后进行一系列的初始化操作,main函数返回的同时,把对CPU和存储器的使用和控制权交给DSP/BIOS,然后DSP/BIOS启动视频处理的主线程,主线程便会用FVID的API函数获取sensor发来的图像。首先用FVID_creat()创建通道,函数返回的句柄作为下一步FVID_control()的参数,根据不同的命令字符串对视频接口进行配置。接着FVID_alloc和FVID_queue两个函数负责向驱动申请3个数据帧buffer,并编入buffer队列。然后,用FVID_dequeue函数将队列中的首个buffer释放出来,作为FVID_exchange函数的起始参数,表示当前正在使用的buffer。之后进入无限的while循环体,利用FVID_exchange函数来实现图像数据的实时更新,从而进行后续的算法处理。
3.2 Codec Engine软件
Codec Engine软件是TI 公司专门为达芬奇系列DSP设计推出的一个标准软件框架,大大简化了软件开发人员的工作。使用Codec Engine,首先需要在main函数里初始化,用到的初始化函数为CERuntime_init()。另外,Core Engine APIs用于创建Engine对象,以及获得一些系统调试信息。应用程序创建Engine对象后,通过VISA接口创建算法对象,VISA对应4种数据模式,每种模式又对应了MOD_create、MOD_control、MOD_process、MOD_delete 4个接口函数,通过这些函数可以调用任何符合XDM标准的编解码算法库。系统Codec Engine 的实现流程图如图3所示。
3.3 网络传输软件
NDK是TI 公司专门针对C6000系列DSP推出的一款网络开发套件,它基于TCP/IP协议,为开发人员提供了丰富的网络接口,使用方便灵活。
NDK共由5个模块组成,如图4所示。OS适配层是DSP/BIOS操作系统的一个抽象,把操作系统与NDK隔离,同时为NDK提供接口,实现内存空间管理和任务管理。TCP/IP协议栈是一个网络功能LIB,所有常用的网络协议的功能可以通过它来实现。网络工具模块提供了局域上层套接字的所有网络功能,如数据收发、Web服务器的配置。硬件抽象层是底层硬件的一个抽象,为网络控制模块提供接口。网络控制模块则用来进行一系列的初始化工作,协调底层驱动与TCP/IP协议栈配合工作。
NDK各种网络功能的实现都利用了socket接口。本系统中,DSP端就是socket服务器端,PC端软件为客户端。本系统创建多个socket对象来分别负责实现数据的收发操作,确保需要同步执行的操作之间互不影响。
具体实现时,网络模块的程序利用NDK为系统设置IP地址,系统模块实现了HTTP server,用户端在网页输入DSP的网口IP地址,即可访问DSP端的HTTP服务器,实现在网页上的实时远程监控。另外,利用socket编程,可以实现与PC端自主编写的软件进行通信,从而用户可以通过PC端的软件给DSP发送控制指令来实现不同的功能。本模块包含一个主线程和3个子线程,其中主线程tskNdkStackTest已经在DSP/BIOS的.tcf配置文件中做了静态配置。3个子线程分别是sendTsk、receiveTsk和cmdparseTsk,分别用于发送数据、接收数据和解析PC端软件的控制命令。其中在每个子线程内创建了一个socket。
本文研究了基于TMS320DM6437的网络视频监控的实现方法。系统以TMS320DM6437作为核心,对主要硬件器件作了介绍,并针对主要的软件框架进行了详细分析,对于视频监控平台的设计有着重要的应用价值。
参考文献
[1] 李德骏.智能小区安防实时视频图像跟踪系统的研究[J].武汉科技学院学报,2005,18(9):32-35.
[2] 田茜,何鑫.基于DSP/FPGA的嵌入式实时目标跟踪系统[J].计算机工程,2005,31(15):219-221.
[3] 梁昂,王耀南.基于双DSP的运动目标智能跟踪系统的设计和实现[J].电子设计应用,2004(9):111-113.
[4] 李位星,范瑞霞.基于DSP的运动目标跟踪系统[J].自动化技术与应用,2004,23(4):46-49.