DSP

TI XDC工具简介

2019-07-13 20:33发布

转自:http://www.61ic.com/Article/DaVinci/DM64X/201004/25466.html

1.XDC(Express DSP Component)是TI提供的一个命令行工具,它可以生成并使用实时软件组件包。       2.以上两图说明了XDC的工作方式:通过相关文件设定操作指令,读入源码、库文件以及已经存在的组件包最终生成可执行文件。 3.Package------XDC工作的基本单元。包括有:源码、库文件以及元数据;元数据这包含有该包的版本信息和依赖信息,以及模块(Module)信息。 4.XDC使用方法:     5.XDC需要的文件:config.bld  package.bld  package.xdc Package.xdc -------------描述该包的名称,版本信息,依赖文件,模块信息等   Config.bld --------------描述XDC要使用的编译工具的相关信息,如不同CPU所使用的编译工具目录,每种编译工具的编译选项,连接选项等基本信息;   Package.bld -------------------描述对于该包需要生成的平台,profile(debug,release)。通过Javascript脚本添加源码到生成执行文件的信息中。 Package.mak-------------------由XDC生成的文件,用于最终编译可执行文件。 6.XDC工作流程:   7.使用XDC所需的文件:源码、package.bld、package.xdc、config.bld。同时需要通过shell脚本将DVEVM的安装位置导出为环境变量。 各代码如下: Config.bld样本代码: expand sourceview plaincopy to clipboardprint? var MVArm9 = xdc.useModule("gnu.targets.MVArm9"); MVArm9.rootDir = "/opt/DVS357/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le"; MVArm9.lnkOpts.suffix = "-lpthread " + MVArm9.lnkOpts.suffix; var Linux86=xdc.useModule("gnu.targets.Linux86"); Linux86.rootDir = "/usr"; Linux86.lnkOpts.suffix = "-lpthread " + Linux86.lnkOpts.suffix; Build.targets = [ Linux86,MVArm9,]; var MVArm9 = xdc.useModule("gnu.targets.MVArm9"); MVArm9.rootDir = "/opt/DVS357/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le"; MVArm9.lnkOpts.suffix = "-lpthread " + MVArm9.lnkOpts.suffix; var Linux86=xdc.useModule("gnu.targets.Linux86"); Linux86.rootDir = "/usr"; Linux86.lnkOpts.suffix = "-lpthread " + Linux86.lnkOpts.suffix; Build.targets = [ Linux86,MVArm9,];
Runxdc.sh样本代码: view plaincopy to clipboardprint? #! /bin/sh # import install paths # putting the first period before the shell invokation keeps the changes # to environment variables set here. Otherwise, changes to environment # are only within the context of the executed script ./setpaths.sh # Define search paths for included packages export XDCPATH="$CE_INSTALL_DIR/packages" # Define options for execution export XDCBUILDCFG=$(pwd)"/config.bld # Execute xdc command to make all packages /opt/DVS357/dvevm_1_20/xdc_2_94/xdc $@ -P * #! /bin/sh # import install paths # putting the first period before the shell invokation keeps the changes # to environment variables set here. Otherwise, changes to environment # are only within the context of the executed script ./setpaths.sh # Define search paths for included packages export XDCPATH="$CE_INSTALL_DIR/packages" # Define options for execution export XDCBUILDCFG=$(pwd)"/config.bld # Execute xdc command to make all packages /opt/DVS357/dvevm_1_20/xdc_2_94/xdc $@ -P *

Setpaths.sh样本代码:
#!/bin/sh export DVEVM_INSTALL_DIR="/opt/DVS357/dvevm_1_20/" export BIOS_INSTALL_DIR=$DVEVM_INSTALL_DIR/bios_5_31_01 export CG_INSTALL_DIR=$DVEVM_INSTALL_DIR/cg6x_6_0_14 export CMEM_INSTALL_DIR=$DVEVM_INSTALL_DIR/cmem_1_02 export CE_INSTALL_DIR=$DVEVM_INSTALL_DIR/codec_engine_1_10_01 export CS_INSTALL_DIR=$DVEVM_INSTALL_DIR/codec_servers_1_23 export DSPLINK_INSTALL_DIR=$DVEVM_INSTALL_DIR/dsplink_1_30_08_02 export FMWK_INSTALL_DIR=$DVEVM_INSTALL_DIR/framework_components_1_10_04 export XDAIS_INSTALL_DIR=$DVEVM_INSTALL_DIR/xdais_5_10 export XDC_INSTALL_DIR=$DVEVM_INSTALL_DIR/xdc_2_94 export PATH=$XDC_INSTALL_DIR:$PATH #!/bin/sh export DVEVM_INSTALL_DIR="/opt/DVS357/dvevm_1_20/" export BIOS_INSTALL_DIR=$DVEVM_INSTALL_DIR/bios_5_31_01 export CG_INSTALL_DIR=$DVEVM_INSTALL_DIR/cg6x_6_0_14 export CMEM_INSTALL_DIR=$DVEVM_INSTALL_DIR/cmem_1_02 export CE_INSTALL_DIR=$DVEVM_INSTALL_DIR/codec_engine_1_10_01 export CS_INSTALL_DIR=$DVEVM_INSTALL_DIR/codec_servers_1_23 export DSPLINK_INSTALL_DIR=$DVEVM_INSTALL_DIR/dsplink_1_30_08_02 export FMWK_INSTALL_DIR=$DVEVM_INSTALL_DIR/framework_components_1_10_04 export XDAIS_INSTALL_DIR=$DVEVM_INSTALL_DIR/xdais_5_10 export XDC_INSTALL_DIR=$DVEVM_INSTALL_DIR/xdc_2_94 export PATH=$XDC_INSTALL_DIR:$PATH

package.bld样本代码: + expand sourceview plaincopy to clipboardprint? var targs = [MVArm9, Linux86]; var profiles = ["debug", "release"]; // Define the base name for the executable(s) built var basename = "app"; // The following code uses the java.io.File.list() method to generate an array // of all files in the current directory ('.') and then sorts out .c files var sources = java.io.File('.').list(); var csources = []; for (var i = 0; i < sources.length; i++){ if(String(sources[i]).match(/.*.c$/)) csources.push(sources[i]); } // The build phase cycles through the arrays of build targets and profiles // and adds an executable for each combination for (var i = 0; i < targs.length; i++) { for(var j = 0; j < profiles.length; j++){ Pkg.addExecutable( basename + "_" + profiles[j], targs[i], targs[i].platform, { cfgScript: null, profile: profiles[j], } ).addObjects( csources ); } } var targs = [MVArm9, Linux86]; var profiles = ["debug", "release"]; // Define the base name for the executable(s) built var basename = "app"; // The following code uses the java.io.File.list() method to generate an array // of all files in the current directory ('.') and then sorts out .c files var sources = java.io.File('.').list(); var csources = []; for (var i = 0; i < sources.length; i++){ if(String(sources[i]).match(/.*.c$/)) csources.push(sources[i]); } // The build phase cycles through the arrays of build targets and profiles // and adds an executable for each combination for (var i = 0; i < targs.length; i++) { for(var j = 0; j < profiles.length; j++){ Pkg.addExecutable( basename + "_" + profiles[j], targs[i], targs[i].platform, { cfgScript: null, profile: profiles[j], } ).addObjects( csources ); } }

  
PS: 在 VIM中,给新的文件类型添加已知文件类型的语法高亮的方法是------在“/usr/share/vim/vimfiles/after”路径中添加一个文件“filetype.vim”(FC10系统下),在其中添加如下代码:
augroup filetypedetect au BufNewFile,BufRead *.bld setf javascript augroup END