TI XDC工具入门简介
2019-07-13 20:26发布
生成海报
1.XDC(Express
DSP Component)是TI提供的一个命令行工具,它可以生成并使用实时软件组件包,它包括一系列工具,这些工具可以允许你将你的C语言代码组织成类似于java的包管理方式,具有面向对象的特性,因为它还有一个名字,叫做eXpanDed
C.
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 );
-
}
-
}
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮