DSP

DAVINCI开发原理之二----DSP端开发环境的建立(DVSDK)

2019-07-13 20:55发布

在一中只是建立了DVEVM的开发环境,只能进行ARM端程序的开发,如果需要开发DSP端的算法就还需要安装使用DVSDK,该软件包包括如下内容:
>Monta Vista Linux Profession Edition v4: 相对于DVEVM发布的montavista linux demo版本来说,这个完全专业版包含了DevRocket IDE和相关服务支持,要全面的多;
>DM6446x SoC Analyzer(DSA): 这个软件是安装在windows OS上的,用来观测分析DSP端和ARM上运行中程序的负载、资源冲突以及性能瓶颈等,不是一定得要,我没有使用过,好像是要另外付费的;
>DSP/BIOS for linux: DSP/BIOS是一个可升级的实时DSP内核,linux版本相对于window版本来说,不包含相应的图形分析工具;
>TI Codegen Tools for linux: 与DSP相关的一些编译、连接工具;
>Framework Components: 主要是用来支持DSP端算法开发的一些模块,能够管理符合xDAIS标准的算法模块,分配内存和DMA资源。这些模块是被CE来使用的,但如果有必要在DSP端程序也可以使用它们;
>Digital Video Test Bench(DVTB): 这是一个在ARM端运行,基于脚本语言的测试codec的应用程序。用户不需要写任何C代码就可以处理Linux I/O, codec API以及一些与线程有关的问题;
>CCS: 运行在windows OS上的集成开发环境,用来开发基于DSP的应用程序和相关算法;
      有了以上DVSDK相关套件,就可以构建DSP端的相关开发组建,其中Codec Engine Romote Server运行在DSP/BIOS上,而在RS中封装了相关算法,在算法的封装中要用到一些xDAIS的框架组件。DSP和GPP之间的通讯由DSP/BIOS Link来完成。 1. DVSDK的安装与配置
>安装:linux下的操作,比较简单,只是要注意DVSDK的版本必须与DVEVM版本号一致。且最好把相关的DVSDK安装在dvevm_#_#_#下。
>配置:在dvevm_#_#_#目录下的Rules.make文件控制了大部分的编译行为,该文件被dvevm_#_#_#目录及其一些子目录下的Makefile文件所包含,对DSP端应用程序的编译需要修改相应的文件,具体根据你实际DVSDK软件包的安装路径。里面要求指定DVEVM、CE、XDAIS、DSP LINK、CMEM、codec server、RTSC、FC、DSP/BIOS、linux kernel等等包的路径。
2. DVTB的安装和使用
      数字视频测试平台(DVTB)是不用C代码而直接利用一些脚本语言来测试DSP端算法的工具。在DVSDK安装后,会在dvevm_#_#_#目录下有个dvtb的目录,就在此执行安装,然后到DSP的可执行目录下去运行(DSP的可执行目录下必须要有cmemk.ko, dsplink.ko等文件),如/nfshost/mydemos.
    DVTB的命令语法如下:
    通过DVTB命令,可以控制audio/vpbe/bpfe等外设或各音视频编解码器,来完成一些测试工作。具体安装过程和命令使用方法可以参考:/opt/dvevm_#_#_#/dvtb_#_#/目录下文档。暂时还没有用到。
3. XDC(Express DSP Component)的配置
      XDC是用来编译和打包的工具,能够创建实时软件组件包RTSC(Real Time Software Component).与其他编译工具一样,它能根据源文件和库文件编译生成可执行文件。不同的是它能够自动的进行性能优化和版本控制。XDC还能够根据所提供的配置脚本语言产生代码,这一特性在编译如编解码器、服务器和引擎等可执行程序时尤为重要。
>XDC的调用语法格式: XDC
   target files: 指编译产生的目标文件。可以通过命令脚本来指定要产生哪些目标文件;
   XDCPTH:       编译时所要查找的目录;
   XDCBUILDCFG: 由"config.bld"文件指定,包含了与平台有关的编译指令。后面细说。
   以上命令模式可能在参数过多是很复杂,通常把它写成shell脚本来运行。
>与XDC相关的三个配置文件:
package.xdc: 主要包含与包package有关的信息:依赖信息、模块信息、版本信息。由自己提供。
package.bld: 主要作用是定义一个包应该如何被编译。文件内容用Javascript来描述。其中包含目标平台集的定义[MVArm9,Linux86]、编译版本的定义[release]、确定源文件集、生成的可执行文件信息等等。 这两个文件都是在server目录下,可见每个codec都有自己的package信息描述文件,然后XDC根据再依之生成一个package包。
config.bld: 这个文件处在codec_engine_##目录下,为各个codec所共有,它主要定义了与平台有关的特性,包含如下几部分:DSP Target、Arm Target、Linux Host Target、Build Targets、Pkg.attrs.Profile、Pkg.lib等具体信息。通常都是基于TI提供的模板对这三个配置文件做修改。