• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 无线通信 > 技术文章 > 视频监控系统中快速实现ARM和DSP的通信和协同工作

视频监控系统中快速实现ARM和DSP的通信和协同工作

录入:edatop.com     点击:

4. Codec Engine入门第三步

开发ARM+DSP平台需要三类工程师:ARM应用程序工程师、DSP算法工程师和DSP系统工程师。而开发ARM+协处理器平台只需要ARM应用程序工程师。下面就让我们针对这三类工程师做分别介绍。如果您使用的是TI或TI第三方的编解码算法,就不需要关注DSP算法工程师的部分。如果使用ARM+协处理器平台,就只需关心ARM应用工程师的部分。

4.1 DSP算法工程师应该如何着手?

这里我们不讨论如何开发DSP算法,只讨论DSP算法工程师怎样让自己的算法可以被ARM通过Codec Engine调用。(参考http://www.ti.com/litv/pdf/sprued6c,这个文档会讲到codec package及相关的.xs和.xdc文件,Codec Engine1.20及以上版本的用户可以先不细究这些内容,后面会介绍工具帮您自动生成这些文件。)

1)熟悉xDAIS和xDM标准。

xDM只是xDAIS的扩展,因此,需要先了解xDAIS。在xDAIS 软件包根目录下的发布说明文档里,可以很快找到关于xDAIS和xDM的文档链接。

在xDAIS安装路径下的examples/ti/xdais/dm/examples/g711有一个g711_sun_internal.c,这个算法不符合xDAIS标准。在同一个路径下的g711dec_sun_ialg.c (decoder)和g711enc_sun_ialg.c (encoder)是封装成符合xDM标准之后的编解码算法。可以通过这个例子学习和了解如何把自己算法封装成符合xDM标准的算法。

xDAIS 6.10及其以后的版本,包含了一个工具QualiTI,可以检查您的DSP算法是否满足xDAIS标准(但不会检查是否满足xDM)。

2)熟悉Framework Components。

Framework Components主要包括两个模块DSKT2和DMAN3,它们分别负责DSP侧的memory 和EDMA资源管理。DSP算法使用的memory必须是先向DSKT2提出申请并由DSKT2分配得到的。同样DSP算法使用的EDMA通道也是向DMAN3申请并由DMAN3分配得到的。而关于QDMA的操作,是通过ACPY3这个模块实现的。这样的好处是很容易对DSP侧不同的算法做整合,不同的算法之间不用担心资源(Memory和EDMA)的冲突问题。

在Framework Components 软件包根目录下的发布说明文档里,可以很快找到相关文档的链接。在Framework Components安装路径下packagestisdofcdman3examples有一个Fast Copy的例子,可以帮您理解如何基于Framework Components的ACPY3模块实现QDMA的操作。

另外,有些用户DSP侧的算法比较简单,在确保不和ARM侧EDMA资源冲突的前提下在算法里直接操作EDMA不使用DMAN3也是可以的。这样做的弊端是和其它算法做整合时会遇到资源使用冲突的问题。

4.2 DSP系统工程师应该如何着手?

通常DSP算法工程师都会把自己的符合xDM标准算法编成一个.lib文件(或 .a6?P),供DSP系统工程师调用。DSP系统工程师最终build出一个DSP Server(也就是DSP的可执行程序.x6?P,和CCS下编译生成的.out类似)。(参考http://focus.ti.com/lit/ug/sprued5b/sprued5b.pdf,这个文档会讲到.xdc和.bld等文件,Codec Engine1.20及以上版本的用户可以先不细究,后面介绍工具帮您自动生成这些文件。)

1)如果现在有一个.lib文件(或 .a6?P)(算法必须符合xDM标准),如何生成自己的DSP Server呢?下面URL有详细的关于RTSC Codec and Server Package Wizard工具介绍,教您如何把一个.lib文件封装成RTSC Codec 包和RTSC DSP Server包,并最终build出DSP的可执行程序.x6?P。

2)如果您使用的是Codec Engine 1.20以前的版本,请参考Codec Engine安装路径下examples/servers/video_copy这个例子。这时就需要搞清楚sprued6c.pdf和sprued5b.pdf中提到的.xdc和.xs等文件的功能,也可以在video_copy中的相关文件的基础上修改手动创建出自己的RTSC Codec包和RTSC DSP server包。

3)创建好RTSC Codec 和RTSC DSP Server包之后,就是如何build出.x6?P的问题了。点击图2所示的Examples,就可以找到build Codec Engine例子的说明文档的链接。按照这个文档做一遍后,就可以对如何build Codec Server有一个清楚的了解。其中关键是修改user.bld和xdcpaths.mak文件,设置Codec Engine依赖的其它软件模块和工具的正确路径。

4)如果自己的硬件DDR2大小和例子中的256Mbytes不一致,需要修改DSP的.tcf文件和其他配置。

4.3 ARM应用程序工程师应该如何着手?

ARM应用工程师需要调用Codec Engine的VISA API,最终编出ARM侧的可执行程序,因此,必须根据自己的应用学习相关的VISA API、如何创建应用侧Codec Engine的package及配置文件。(参考http://focus.ti.com/lit/ug/sprue67d/sprue67d.pdf,这个文档也涉及到如何调试Codec Engine的内容)。

1)了解ARM应用程序调用Codec Engine的流程、VISA API和其他Codec Engine API。可以参考Codec Engine安装路径下examples/apps/video_copy的例子(较简单)或者DVSDK安装路径下demos里的encode/decode/encodedecode例子(较复杂)。

2)了解ceapp.cfg文件。sprue67d.pdf有相关介绍,可以先读懂examples/apps/video_copy/ceapp.cfg。

3)用4.2 3)中提到的方法学习如何build ARM侧的可执行程序。

4)如何在多线程中调用codec engine,参考:http://wiki.davincidsp.com/index.php?title=Multiple_Threads_using_Codec_Engine_Handle

5)还可以参考以下三个文档了解更多TI demo的ARM应用程序的结构、线程调度等具体的问题。

EncodeDecode Demo for the DaVinci DVEVM/DVSDK 1.2 (Rev. A) (spraah0a.htm, 8 KB) 27 Jun 2007 Abstract

Encode Demo for the DaVinci DVEVM/DVSDK 1.2 (Rev. A) (spraa96a.htm, 8 KB) 27 Jun 2007 Abstract

Decode Demo for the DaVinci DVEVM/DVSDK 1.2 (Rev. A) (spraag9a.htm, 8 KB) 27 Jun 2007 Abstract

5.使用中常碰到的问题

1)如果遇到问题可以先访问http://wiki.davincidsp.com/index.php?title=Codec_Engine_FAQ。

2)有些工程师没有DSP开发经验,或者暂时没有仿真器通过JTAG调试DSP。可以参考下面网页的内容,先做一个"Hello World"的例程对ARM和DSP如何协同工作有个感性认识。

3)很多工程师都是参考video_copy的例子,在它的基础上把自己的算法加进去。因为有源代码,这样比较容易。但肯定要根据自己算法的需要修改ARM和DSP之间传递的buffer和参数,重要的是先保证ARM侧的应用程序可以把buffer和参数正确传递到DSP,DSP可以把处理之后的buffer正确的传到ARM侧的应用程序。把这个通路打通之后,就比较容易定位问题是出在ARM应用程序还是DSP侧的算法。另外,参考video_copy例子时注意代码的注释,以便清楚哪一句代码可以删掉哪一句必须要修改或保留。如果要扩展xDM的数据结构请参考:http://wiki.davincidsp.com/index.php?title=Extending_data_structures_in_xDM。

4)Codec Engine DSP侧会涉及到Cache一致性的问题。请参考:http://wiki.davincidsp.com/index.php?title=Cache_Management

5)关于Codec Engine系统调试,有以下几种方法:

A.打开Codec Engine trace,通过打印信息看问题出在什么地方。比如engine_open失败,DSP侧不能创建codec 等等。

a)Codec Engine 2.0及以上版本,请参考:http://wiki.davincidsp.com/index.php?title=Easy_CE_Debugging_Feature_in_CE_2.0

b)Codec Engine 1.x版本,请参考:http://wiki.davincidsp.com/index.php?title=TraceUtil

来源:电子发烧友

上一篇:正弦信号发生器的设计与实现
下一篇:精确时钟同步确保IP网“电信级”特性

手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

射频和天线工程师培训课程详情>>

  网站地图