基于TMS320 DM355监控服务器设计与实现
时,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应用程序流程图
4.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协处理器对原始视频数据进行压缩,而音频数据的压缩与此类似。
5.总结
本文介绍了基于最新Davinci平台的视频监控服务器的设计与实现,包括硬件组成和软件设计。整个视频服务器利用DM355内部的ARM926EJ-S核运行嵌入式Linux操作系统,而用MPEG/JPEG协处理器进行MPEG4编码相关的计算。文中对利用MPEG/JPEG协处理器进行编码也做了介绍,同时给出了整个视频监控系统的框架。经过在局域网内测试,可以实现D1格式的视频的实时传输,同时可以进行云台及镜头等的控制。利用该系统可实现楼宇、街道等场所的视频监控。
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- FPGA的DSP性能揭秘(06-16)
- 用CPLD实现DSP与PLX9054之间的连接(07-23)
- DSP+FPGA结构在雷达模拟系统中的应用(01-02)