249|0

1839

帖子

0

资源

一粒金砂(高级)

TI XDC工具简介 [复制链接]

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 

 


回复
您需要登录后才可以回帖 登录 | 注册

关闭
站长推荐上一条 1/1 下一条

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表