嵌入式学习小组
直播中

史娟

7年用户 144经验值
私信 关注

基于最新DaVinci平台的视频监控服务器的设计与实现

本设计以ti公司DaVinci系列芯片作为硬件平台,结合嵌入式Linux操作系统,实现了基于TMS320DM355的视频服务器。本文阐述了各硬件模块的选型与功能,以及服务器的软件架构与实现。同时给出了整个网络视频监控系统的框架,包括视频服务器、网络传输链路及客户监控端。本设计采用 MPEG4视频编码标准,由DM355内部的MPEG/JPEG协处理器完成。实验表明,在带宽充足的条件下,可实现实时监控。

回帖(5)

h1654155275.5764

2019-7-19 10:07:17
1.引言
  
多媒体监控一直是人们关注的应用技术热点之一,它以直观、方便、信息内容丰富等特点被广泛应用于许多场合。而随着嵌入式系统和视频压缩技术的不断发展,基于嵌入式技术的视频监控系统也得到了快速的发展与应用。其通过把摄像机输出的模拟信号转化为数字信号,再经过嵌入式系统编码和传输。在客户端,通过安装监控软件,或者直接通过Web进行监控。采用嵌入式Linux操作系统的视频监控系统具备编码处理、网络通信、自动控制等强大功能,直接支持网络传输和网络管理,使得监控范围达到了一定的广度。
  
此外,嵌入式处理器的发展也日新月异,有专注于控制的ARM系列处理器,擅长快速计算的DSP处理器,还有一些针对性非常强的处理器,可以实现硬件视频编解码等。而德州仪器(TI)新近推出的针对便携式高清(HD)视频产品市场的达芬奇(DaVinci)处理器TMS320DM355处理器,结合了它们的特长。其内部具有一个ARM9EJ-S的主处理器,负责整个系统的控制,同时也集成了一个MPEG/JPEG协处理器,专注于MPEG/JPEG算法的实现。其内部的视频处理子系统(VPSS)及其它外设可方便快速的实现视频的采集、预处理、显示、网络传输等功能。同时,其低廉的价格也为用户降低了成本。而本设计即选用此处理器。

举报

胡楚翘

2019-7-19 10:07:32
2.视频监控系统整体框架
  
本嵌入式网络视频监控系统由视频服务器、网络传输链路、客户监控端等3部分组成。视频服务器负责音视频等数据的采集、压缩处理等,网络传输链路将视频服务器压缩和发送的多媒体数据进行传输,而客户端监控部分接收音视频数据,进行解压、显示以及对视频服务器的控制等。整个系统的示意图如图1所示。

2.1.视频服务器
  
视频服务器采用德州仪器(TI)新近推出的达芬奇(DaVinci)系列处理器TMS320DM355作为主处理器,接收CCD摄像头采集的视频信号,进行预处理及MPEG4压缩,然后将压缩后的数据通过网络传输。同时,接收上位机发送的命令,解析并且执行。每个设备都具有唯一的ID,当客户端进行连接时,服务器会首先检查ID号是否匹配,以防止恶意连接。此外,当视频服务器运行异常时,其内部的守护进程会进行监视,适当的时候进行重启。

2.2.网络传输链路
  
网络传输链路负责多媒体数据的传输。此处,可以根据实际需求,进行网络传输链路的选择。局域网(LAN)、无线局域网(WLAN)、INTERNET、 CDMA、3G等都是可供选择的传输链路。其中,局域网(LAN)和无线局域网(WLAN)带宽充足、稳定,并且设备简单,易于实现,但会受到距离的限制。INTERNET和CDMA网络可以使监控距离得到扩展,但是其带宽受限,图像质量会受到影响。而最新的3G网络也是一个不错的选择,带宽在静止状态下可以达到2Mbps,但是其在稳定性方面还待测试。用户可以根据自己的需求进行选择,或者直接搭建专线网络,以实现各自的监控指标。
  
2.3.客户监控端
  
客户端主要与各个视频服务器进行连接,以实现监控。客户端可以采用PC机或者便携式设备,与网络传输链路相连,通过上位机软件与视频服务器连接,接收视频服务器发送的多媒体数据,进行解码,然后在上位机显示。同时,向视频服务器发送控制命令,实现云台、镜头等的控制。

举报

王云

2019-7-19 10:07:39
3.视频服务器硬件设计
  
3.1.整体框架视频服务器完成视频的采集、MPEG4压缩和网络传输,以及云台、镜头等的控制。其硬件结构框图如图2所示。

3.2.各模块简介
  
1)主处理器

TMS320DM355TMS320DM355是一款针对数字静态照相机,数码相框,IP安全摄像机,视频门铃和其它一些低功耗便携式数字视频应用设计的高集成度的处理器。可实现低成本,高图像质量的视频解决方案。它集高性能,低功耗,低成本于一身,提供与外部CCD或CMOS传感器的无缝连接。此外,还提供与电源管理,DDR/mDDRmemory,SRAM,NAND等的接口。

DM355处理器的主处理器是一个ARM926EJ-S核。ARM926EJ-S是一个32位的处理器核,提供216MHz或270MHz的时钟速率,可执行32位和16位的指令集,以及32位,16位和8位的数据。
  
此外,DM355内还集成了一个MPEG/JPEG协处理器,实现数字视频的压缩。
  
DM355内还包括一个视频处理子系统(VPSS),分为视频处理前端(VPFE)和视频处理后端(VPBE)。视频处理前端提供与CCD/CMOSimager模块和视频解码器的接口。视频处理后端实现硬件的OSD支持和复合的NTSC/PAL或LCD输出。
  
2)视频采集模块
  
视频采集模块主要由镜头和模拟前端威廉希尔官方网站 组成。模拟前端的作用是将图像传感器输出的模拟信号钳位放大,并完成A/D转换,这里采用的是TVP5146。TVP5146是TI的一款高质量、单片的视频解码器,数字化并且解码所有主流的基带模拟视频格式。TVP5146将复合的或者分离的NTSC,PAL或者SECAM信号转换为YCbCr格式。输出格式可以是20位的YCbCr4:2:2或者10为的YCbCr4:2:2。它由一组内部寄存器进行控制,通过I2C进行配置,改变对比度、亮度、饱和度、色调等参数。
  
3)音频采集模块
  
音频采集模块由Mic和模数转换威廉希尔官方网站 构成。此处采用TLV320AIC33。TLV320AIC33是一款低功耗立体声音频编解码器,实现模拟音频信号的数字化。包括立体声耳机扩音器,并且提供多输入多输出。支持8k到96k采样。DM355对其的配置也是通过I2C进行的。而数据接口则采用McBSP。
  
4)存储模块
  
本设计采用了512MB的nandflash用于存储UBL、U-Boot、kernel、根文件系统。需要的话可以存储一定数量的音视频数据。它与DM355之间的接口为8位数据线。通过这8位数据线进行命令及数据的传递。
  
5)动态存储模块
由于DM355提供DDR接口,所以选择速度更快的DDRSDRAM作为动态存储器。Linux操作系统及应用程序的运行都在这里。当系统上电后,bootloader进行一些简单的设置之后将自己搬运到SDRAM内运行,当需要启动内核时,将内核搬运到SDRAM内运行。此后,整个内存的控制就交给了Linux内核。
  
6)Ethernet控制器Ethernet控制器选择DM9000,通过网络传输链路实现数据的发送与接收。
  
7)RS232及RS485RS232主要用于开发阶段的调试。RS485用于控制云台,镜头等。RS232和RS485采用通用的232和485芯片即可满足需要。
  
8)电源模块电源模块负责整个系统的供电。我们采用现成的电源模块提供云台需要的24V交流电压,镜头需要的12V直流电压,以及视频服务器需要的5V直流电压。由于DM355的核电压为1.3V,I/O电压为3.3V,DDRSDRAM的电压为1.8V,所以我们选择了TPS65021电源芯片,将输入的5V电压转换为3种不同的电压输出。此外我们对DM355的上电顺序也进行了考虑。

4.视频服务器软件设计
  
本设计采用嵌入式Linux操作系统作为其软件基础。系统上电后,首先运行引导程序bootloader,初始化CPU和一些I/O设备,然后将Linux内核搬运到内存中,将控制权交给内核。内核启动后,运行用户应用程序。系统的软件层次结构如图3所示。

图3 系统软件层次结构
  
4.1.系统上电及引导程序
  
系统上电时,是由DM355的输入引脚BTSEL[1:0]来决定从ROM或者AEMIF启动。此设计处选择从ROM启动。此时,系统直接跳转到内部 ROM的起始地址(0X00008000)执行指令。内嵌的ROM启动代码(RBL)进行一些配置操作,然后读取BOOTCFG寄存器来决定是从 NAND、MMC/SD或者UART启动。本设计选择NAND启动。NANDflash里预先烧写好了U-boot、Linux内核以及根文件系统。 NAND启动以后,会读取bootloader的stage1部分的指令对系统进行必要的设置,然后将stage2部分的代码搬移到SDRAM中进行执行。当用户选择启动内核时,bootloader将内核从NANDflash里搬运到SDRAM,然后跳转到内核的起始地址进行执行,启动内核。

4.2.嵌入式Linux操作系统
  
嵌入式Linux操作系统是针对不同的应用需求,对Linux内核进行裁剪修改使之能在嵌入式计算机系统上运行的一种操作系统。它开放源码,内核小、效率高,适用于多种CPU和硬件平台,性能稳定,可移植性好等特点为其开辟了一片属于自己的空间。
  
本设计选择嵌入式Linux操作系统作为软件平台,实现各硬件模块的驱动的添加及移植,用户应用程序的编写及调试。
  
4.3.用户应用程序
  
本设计中将整个应用程序分为2个进程,data进程和command进程。Data进程主要负责音视频数据的采集、压缩和网络传输。其中,又分为3个线程,capture线程、编码线程以及control线程。Capture线程控制采集设备进行图像及声音的采集及预处理;编码线程从capture线程读取数据,进行MPEG4(视频)或G.711(音频)压缩。Control线程从编码线程读取压缩完的数据,通过网络发送给客户端。而command进程接收上位机命令,解析、执行,并且控制云台,镜头及测温等。Command进程还加入了用户ID检验等功能,提供简单的保护机制。应用程序的流程图如图 4所示。

                      图4应用程序流程图

.
举报

马昆秀

2019-7-19 10:07:45
4.MPEG/JPEG协处理器编码
  
由于DM355内部集成了MPEG/JPEG协处理器,对于音视频的编解码主要是通过它来完成的。而对它的操作是依靠TI公司制订的基于 eXpressDSP算法互用性标准(xDAIS)的xDAIS-DM标准实现的。此标准定义了一组统一的API,这些API是建立在各种多媒体算法之上的,这样即简化了集成难度,同时保证了互用性。TI提出的CodecEngine就是一组用于示例和运行xDAIS算法的API,而 VISA(Video,Image,Speech,Audio)类是用来与xDAIS-DM算法标准定义的基于各种多媒体算法的API函数集进行交互的接口。在应用程序编程中,通过进行如下的操作来完成视频的编码。
  
打开编解码引擎:

  staticStringengineName="videnc"

  Engine_Handlece;Engine_Errorerrorcode;ce=Engine_open(engineName,NULL,&errorcode);视频编码类提供四个API函数:创建视频编码类:VIDENC_Handlehenc;staticStringencoderName="mpeg4enc";henc=VIDENC_create(ce,encoderName,NULL);其中ce为打开编码引擎时返回的句柄。对视频编码类进行控制,设置视频编码动态参数:VIDENC_control(henc,XDM_SETPARAMS,&dynamicParams,&encStatus);处理数据,进行编码:VIDENC_process(henc,&inBufDesc,&outBufDesc,&inArgs,&outArgs);其中参数henc为创建的VISA类句柄,inBufDesc为原始数据buffer,outBufDesc为压缩后数据buffer,inArgs和outArgs为输入输出配置参数。销毁创建的视频编码类:VIDENC_delete(henc);在应用程序中调用以上API,即可利用MPEG/JPEG协处理器对原始视频数据进行压缩,而音频数据的压缩与此类似。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分