新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 视频监控系统中如何快速实现ARM和DSP的通信和协同工作

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

作者:时间:2012-08-31来源:网络收藏

  达芬奇软件结构框图 www.elecfans.com

本文引用地址:http://www.eepw.com.cn/article/148474.htm


  图1 达芬奇软件结构框图

  通过第一部分的介绍,我们知道了TI数字软件开发包(DVSDK)中的Codec Engine软件模块可以帮助我们轻松地或协处理器的,以及Codec Engine软件模块的概要情况,下面我们将告诉你走完Codec Engine入门的第一步和第二步。欢迎转载,本文来自电子发烧友网(http://www.elecfans.com)

  2. Codec Engine入门第一步

  有些初学者认为Codec Engine文件包结构复杂,很难找到自己想找的文档或例子。其实在Codec Engine文件包的根目下有一个发布说明文档,比如Codec Engine 1.20 根目录下的release_notes_codec_engine_1_20.html。这个文档就是你了解Codec Engine的开始,里面有关于该版本Codec Engine的介绍、相关文档资料的链接、新的功能、支持哪些芯片、已知的bug、修正了哪些bug及例子等等的具体说明。具体如图2蓝色字体所示。浏览该文档后,初学者至少可以知道哪里可以找到自己想要的文档或例子。举例来说,如果想找相关的文档,点击 Documentation就可以看到这个Codec Engine文件包里的文档的链接。

  

 Codec Engine 1.20 Release Notes截图 www.elecfans.com

  图2 Codec Engine 1.20 Release Notes截图

  3.Codec Engine入门第二步

  点击Codec Engine的发布说明文档 (如图2)的Validation Info,我们可以知道Codec Engine 1.20需要和以下软件模块和工具配合使用:

  ?Framework Components 1.20.02

  ?xDAIS 5.21

  ?XDC Tools 2.93.01

  ?/BIOS Link 1.40.05, configured for the DM6?46 EVM

  ?C6x Code Generation Tools version 6.0.8

  ?/BIOS 5.31.05

  ?MontaVista Linux v4.0

  ?Red Hat Enterprise Linux 3 (SMP)

  因此,我们需要在该Codec Engine安装的DVSDK文件包下面检查上面提到的软件模块和工具是否安装,版本是否正确。否则,可能会编译不过 Codec Engine的例子。那么,什么是 Framework Components,什么是xDAIS,什么又是XDC Tools呢?你可以分别到它们的根目录下浏览它们各自的发布说明文档,做一个总体的了解。

  这里我们简单介绍一下,可以帮助大家尽快找到和自己相关的重点及资源。

  1)Framework Components是TI提供的一个软件模块,负责DSP侧的memory 和DMA资源管理。因此,DSP算法工程师需要了解这个软件模块。http://tiexpressdsp.com/wiki/index.php?title=Framework_Components_FAQ

  2)xDAIS 是一个标准,它定义了TI DSP算法接口的标准。这样大大提高了DSP算法软件的通用性。DSP算法工程师要写出能被通过Codec Engine调用的算法,必须保证自己的算法接口符合这个标准。因此,DSP算法工程师也必须了解这个软件模块。http://tiexpressdsp.com/wiki/index.php?title=Category:XDAIS

  3)XDC Tools和gmake类似,是一个工具。XDC根据用户定义的一套build指令,通过调用用户指定的 工具链(Tool Chain)和DSP编译器(C6x Code Generation Tools )build出ARM侧和DSP侧的可执行文件。可以先不必细究这个工具,只需通过编Codec Engine的例子,知道设置build指令就可以了。

  4)DSP/BIOS Link是ARM和DSP之间的底层软件,Codec Engine就是建立在这个底层软件之上。在修改系统内存分配(缺省是256MB的DDR2)时,DSP/BIOS Link 1.38版本的用户需要修改DSP/BIOS Link的配置文件,并重新build DSP/BIOS Link。而DSP/BIOS Link 1.40版本以后的用户就无需此操作。http://tiexpressdsp.com/wiki/index.php?title=DSPLink_Overview

  http://wiki.davincidsp.com/index.php?title=Changing_the_DVEVM_memory_map

  5)C6x Code Generation Tools是Linux环境下C6000系列DSP的编译器。我们用CCS开发DSP时都是用的Windows环境下的DSP编译器。

  6)DSP/BIOS是TI 免费提供的DSP实时操作系统。和上面C6x Code Generation Tools一样,这里的DSP/BIOS也是Linux环境下的版本。DSP系统工程师需要了解这个操作系统。

  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的文档链接。http://focus.ti.com/lit/ug/spruec8b/spruec8b.pdf

  在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)。具体请参考:http://tiexpressdsp.com/wiki/index.php?title=QualiTI_XDAIS_Compliance_Tool

  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也是可以的。这样做的弊端是和其它算法做整合时会遇到资源使用冲突的问题。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭