监控系统,尤其是视频监控以其直观方便、准确、信息内容丰富而广泛应用于许多场合,已经渗透到交通、城市治安、国防甚至家庭安防等多种领域,在人们的日常生活中扮演着越来越重要的作用。由于传统的监控系统存在着结构复杂、稳定性可靠性不高、价格昂贵而且传输距离明显受限的缺点,随着社会安全与保障体系的健全,监控系统应用的场合和监控点越来越多,流媒体监控系统也已经从原始的采用摄像机的模拟本地图像监控发展到基于PC的多媒体监控系统ilI。由于传统的监控系统其视频编码与解码全部采用基于PC机的视频卡,使得视频前端较为复杂,稳定性和可靠性不高,而且操作较为复杂。近年来,随着计算机、网络、电子与通信、图像处理等技术的飞速发展,嵌入式网络视频监控技术应用而生吲,为了适应智能化的需要,本文提出了一种双核嵌入式流媒体监控系统,即基于ARM和DSP的流媒体监控系统。
本文设计了基于ARM和DSP的双核嵌入式监控系统,该系统可以实时采集物理环境的数据信息并可通过网络传输到终端以得到即时处理。系统以ARM芯片为主设备单元处理器,完成各种控制和网络功能,以DSP芯片作为从设备单元处理器,完成数据采集和分析处理,ARM单元和DSP单元构成监控系统的双核架构。该系统通过自主运行采集和分析处理被监控区域的物理信息,依据实际需求将数据传输到网络或做出如报警、跳闸等即时处理,实现对被检测区域的物理事件的实时监控与检测。
1 系统的设计方案
检测被监控环境中物理信息的传统监控设备,一般采用单核DSP处理器结构,系统设计较为复杂,稳定性不高。本设计采用ARM与DSP双核结构,通过系统主从两个设备单元的硬件通信接口的设计和软件通信的设计,将32位嵌入式微处理器ARM与数字信号处理器DSP相结合,以充分利用双核处理器的优势。ARM系统单元采用经过裁剪的Linux嵌入式实时操作系统,实现整个设备系统的协调控制和网络功能等;DSP单元通过检测算法的移植,实现数据的采集分析、处理和数据传输。
该双核设备系统中,ARM系统作为主设备单元实现各控制功能,向DSP单元发出控制指令,通过硬件接口接收DSP采集的数据;DSP系统作为从设备单元,搜集、分析和处理传感器或CCD等外设获取的物理数据,并向主设备单元发送有效信息。其中,ARM和DSP之间数据交换的速度决定了整个系统的运行速度和性能。
2 系统硬件设计
2.1 系统整体结构组成
监控系统主要由两部分组成:ARM微处理器主设备单元和DSP数据处理器从设备单元。系统结构组成如图1所示。为提高主从设备单元之间的数据交换速度从而有效提高系统的运行性能,主处理器采用Samsung公司的ARM9内核芯片S3C2410A,从处理器采用TI公司的TMS320C6211DSP芯片。
采用Samsung公司的处理器S3C2410。处理器内部集成了ARM公司ARM920T处理器核的32位微控制器,资源丰富,带独立的16KB的指令Cache和16KB数据Cache、LCD控制器、RAM控制器、3路URAT、4路DMA、并行I/O口、2路SPI等,主频最高可达203 MHz。TMS320C6211已经广泛应用于视频检测卡中,可做到以视频图像帧速率检测信息,外设接口丰富。如图1所示,ARM处理器选择通用外部接口GPIO(General purpose I/O)的PortC端口16根数据线与DSP的主机接口HPI(Host Port Interface)相连接,实现数据交换和信息传输。ARM在接收到数据后,根据需要做出相应处理,如将数据传输到网络、报警等;DSP通过中断的方式定时向ARM单元提出数据传输申请,经响应后将数据传输给主设备单元,进而通过网络传输到终端。
2.2 主设备单元设计
系统主设备核心为ARM处理器,负责系统控制管理和数据传输等任务,通过相应的外设可以实时显示或相应处理。此外,在利用处理器$3C2410丰富资源的基础上,还进行了相关的配置和扩展,增加了8MBl6位的FLASH和16MB32位的SDRAM;通过以太网控制器芯片DM9000E扩展了一个网口,用以进行网络传输;另外通过RS485接口连接摄像头云台,用以控制摄像头。
主设备控制单元模块中,外接1片8 M×16 bit的Flash,一个16 M×16 bit宽的SDRAM,加上处理器自带的内存,总共构成32 MB Flash、96 MB SDRAM,可充分满足嵌入式操作系统的移植和数据存储的需求。控制单元通过USB口与外设或上位机实现数据交换与系统移植,利用专用的JTAG调试接口实现功能调试。另外,可以利用GPIO外接多种不同的设备,如显示器、报警器,也可以通过自带的网口连接到办公网络等。
2.3 从设备单元设计
从设备单元以TMS320C6211芯片为核心,该芯片采用的哈佛结构,将数据存储区和程序存储区分开,具有更高的运算速度。
TMS320C6211芯片有两种方式实现与ARM控制芯片相连接:(1)利用HPI接口,主设备单元直接访问DSP,DSP作为从设备使用;(2)利用直接存储器访问控制器EMIF,把ARM控制器映射到EMIF的存储空间的方式,使用EMIF控制DSP与ARM的数据传输,DSP作为主设备使用。本文利用第一种方式。
TMS320C6211芯片的主机接口HPI是1个16 bit并行端口,主设备芯片S3C2410A掌管该接口的主控权,HPI接口允许主设备芯片通过HPI的3个寄存器实现对DSP存储空间的随机地址存取和自增地址存取。DSP芯片的HPI接口3个寄存器分别是:控制寄存器(HPIC)、数据锁存器(HPID)、地址寄存器(HPIA)。HPI接口信号及其功能如表1所示。主设备芯片S3C2410A和TMS320C6211都可以存取HPI控制寄存器,主设备还可以存取HPI地址寄存器和HPI数据寄存器,HPI的3个寄存器都采用存储器映射方式映射到主设备的存储空间。
2.4 主从设备单元的接口设计
S3C2401A作为主处理单元的处理器工作在主机模式下,TMS320C6211作为信号采集与处理单元的处理器工作在从机模式下。ARM系统单元在系统上电时对DSP系统单元进行初始化并加载检测程序及参数,利用I/O口进行数据传输操作,通过HPI接口访问DSP的整个存储空间。ARM给DSP发送控制信息时,通过HPI接口将控制数据直接写入DSP的某个存储区域内,DSP经查询控制信息后,到约定好的DSP存储区域内取数据并作相应处理,如写数据到HPI端口等。
S3C2401A通过端口C(Port C)的16根数据线和TMS320C6211的HPI接口HD[15:0]连接传输数据,通过控制线分别产生不同的硬件控制信号。S3C2410A的2根地址线ADDR2、ADDR3分别接到TMS320C6211的HCNTL0、HCNTL1,以完成对HPI接口不同寄存器的访问。地址线ADDR4代替HR/W信号和HPI口的HR/W相接,用于选择HPI接口处于写或读状态。地址线ADDR1与DSP 的HHWIL与相连接,其信号表明并区分HD[15:0]上传输的是32 bit数据中的高16 bit还是低16 bit。TMS320C6211与S3C2401A间所有的数据交换是32 bit宽,而HPI端口为16 bit,所以每次数据访问都需要进行2次存取,由HPI自动将HD[15:0]上连续的2个16 bit数据合成32 bit,也可以用其进行反向分解。
S3C2410A的读/写信号nOE和nWE分别接到HDS1和HDS2,HPI口的HDS1和HDS2是数据选通信号,所有的地址线和控制线都在它们的下降沿采样。从机HRDY信号接到主机的nWAIT(等待信号)上,HRDY是HPI准备好端,低电平表示HPI已准备好执行一次数据传送,高电平表示HPI正忙于完成当前事务。HPI口的中断信号HINT连接到主机上的外部中断引脚EINT8,用于产生或侦听中断信号。HAS是地址选通信号,此信号用于主机的数据线和地址线复用的情况,不用时此信号应接高电平。
把TMS320C6211映射到S3C2410A的存储空间组BANK2,将BANK2的片选信号nGCS2与HPI接口的片选信号HCS相连接,只要对BANK2进行操作,就可以产生DSP的片选信号。将TMS320C6211的引导模式设置为HPI boot模式,在复位后由主机通过HPI口对DSP进行初始化操作,包括初始化CPU和EMIF及向DSP加载程序和数据等,主从设备之间硬件接口连接如图3所示。
3 系统软件设计
3.1 系统的初始化
在设计好ARM与DSP硬件连接的基础上,需要通过正确的初始化和编程才能实现设备之间的通信。对DSP芯片HPI接口进行读/写操作时,将HPI接口看作一个连接到ARM芯片的外部设备,将完成读/写操作的程序看成在ARM核Linux系统下面的一个字符型驱动程序进行开发。程序在上位机开发完毕后,经JTAG口固化到ARM的存储空间里。S3C2410A与TMS320C6211之间的初始化程序主要由ARM芯片的初始化和HDI接口读写初始化组成。
(1)ARM芯片的初始化
ARM处理器先要完成自身工作模式等一系列的初始化,才能正常进行HPI接口的读/写。初始化主要有嵌入式操作系统的移植、GPIO口管脚功能定义、中断控制、代码启动,还有PLL、时钟、存储器系统以及堆栈等初始化, I/O及BANK存储空间初始化的部分代码如图4所示。
(2)HPI接口读写初始化
系统设计中HPI口将占用外部I/O接口BANK2的地址,需要对TMS320C6211的BANK进行配置,同时对HPI接口寄存器的地址进行宏定义。由于使用单独的地址线来模拟HPI16接口的HR/W,因此对同一个寄存器分别进行读/写操作时,看起来像是对不同的地址进行相应的操作。DSP芯片部分初始化源代码如图5所示。
在定义宏后,ARM通过HPI驱动程序就可以将DSP中的数据通过HPI口读出来,并送到指定的用户缓冲区中,再通过网络发送到用户终端。
3.2 数据传输流程
由ARM和DSP双核构建的监控系统中,数据传输由ARM发起。ARM单元在启动后,开启数据传输进程与DSP单元建立通信连接,周期地查询外设端口是否有DSP数据输入。在接收到DSP数据后,依据控制单元的程序进行分析和处理,以及依据需要做出相应操作或将数据上传至网络等。
DSP数据采集单元在启动后,通过所连接的外设采集监控区域的物理信息。应用移植到DSP核中的程序算法,对接收到的数据实现分析和处理。在接收到主设备控制单元的数据传输指令后,将经过分析处理后的数据发送到ARM控制单元。具体的设备数据传输流程如图6所示,其中,ARM控制单元和DSP数据处理单元各自并行执行相关操作。
本系统采用了目前先进的ARM、DSP技术,ARM作为主处理器完成系统管理及网络通信,DSP作为协处理器完成数据采集、分析和处理,整个系统方案简洁高效且具有可重构性。DSP的快速数据处理能力和ARM 卓越的控制、通信能力保证了动态信号采集和分析系统的实时性要求。由于DSP及ARM均是可编程的系统配置,运算灵活,其性价比高、体积小、功耗低,嵌入式操作系统支持的软件丰富,源代码开放裁剪灵活等特点,使本系统设计满足了数据采集分析对易操作、网络化和低成本等方面的要求,适用于不同环境的检测和监控。