冷烟花
哎呀哎呀哎呀我的妈~蜗牛背着那重重的壳呀,一步一步地往上爬~

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样本代码:

 1 + expand sourceview plaincopy to clipboardprint?
 2 var MVArm9 = xdc.useModule("gnu.targets.MVArm9");   
 3 MVArm9.rootDir = "/opt/DVS357/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le";   
 4 MVArm9.lnkOpts.suffix = "-lpthread " + MVArm9.lnkOpts.suffix;   
 5 var Linux86=xdc.useModule("gnu.targets.Linux86");   
 6 Linux86.rootDir = "/usr";   
 7 Linux86.lnkOpts.suffix = "-lpthread " + Linux86.lnkOpts.suffix;   
 8 Build.targets = [ Linux86,MVArm9,];  
 9 var MVArm9 = xdc.useModule("gnu.targets.MVArm9");
10 MVArm9.rootDir = "/opt/DVS357/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le";
11 MVArm9.lnkOpts.suffix = "-lpthread " + MVArm9.lnkOpts.suffix;
12 var Linux86=xdc.useModule("gnu.targets.Linux86");
13 Linux86.rootDir = "/usr";
14 Linux86.lnkOpts.suffix = "-lpthread " + Linux86.lnkOpts.suffix;
15 Build.targets = [ Linux86,MVArm9,];

Runxdc.sh样本代码:

 1 view plaincopy to clipboardprint?
 2 #! /bin/sh   
 3 #  import install paths  
 4  
 5 #  putting the first period before the shell invokation keeps the changes  
 6  
 7 #      to environment variables set here. Otherwise, changes to environment  
 8  
 9 #      are only within the context of the executed script   
10   
11 ./setpaths.sh  
12 #  Define search paths for included packages   
13 export XDCPATH="$CE_INSTALL_DIR/packages" 
14 #  Define options for execution   
15 export XDCBUILDCFG=$(pwd)"/config.bld  
16  
17 #  Execute xdc command to make all packages   
18   
19 /opt/DVS357/dvevm_1_20/xdc_2_94/xdc $@ -P *  
20 #! /bin/sh 
21 #  import install paths
22 
23 #  putting the first period before the shell invokation keeps the changes
24 
25 #      to environment variables set here. Otherwise, changes to environment
26 
27 #      are only within the context of the executed script
28 
29 ./setpaths.sh
30 #  Define search paths for included packages
31 export XDCPATH="$CE_INSTALL_DIR/packages"
32 #  Define options for execution
33 export XDCBUILDCFG=$(pwd)"/config.bld
34 
35 #  Execute xdc command to make all packages
36 
37 /opt/DVS357/dvevm_1_20/xdc_2_94/xdc $@ -P *

Setpaths.sh样本代码:

 1 #!/bin/sh   
 2   
 3 export DVEVM_INSTALL_DIR="/opt/DVS357/dvevm_1_20/"  
 4 export BIOS_INSTALL_DIR=$DVEVM_INSTALL_DIR/bios_5_31_01   
 5 export CG_INSTALL_DIR=$DVEVM_INSTALL_DIR/cg6x_6_0_14   
 6 export CMEM_INSTALL_DIR=$DVEVM_INSTALL_DIR/cmem_1_02   
 7 export CE_INSTALL_DIR=$DVEVM_INSTALL_DIR/codec_engine_1_10_01   
 8 export CS_INSTALL_DIR=$DVEVM_INSTALL_DIR/codec_servers_1_23   
 9 export DSPLINK_INSTALL_DIR=$DVEVM_INSTALL_DIR/dsplink_1_30_08_02   
10 export FMWK_INSTALL_DIR=$DVEVM_INSTALL_DIR/framework_components_1_10_04   
11 export XDAIS_INSTALL_DIR=$DVEVM_INSTALL_DIR/xdais_5_10   
12 export XDC_INSTALL_DIR=$DVEVM_INSTALL_DIR/xdc_2_94   
13   
14 export PATH=$XDC_INSTALL_DIR:$PATH  
15 #!/bin/sh
16 
17 export DVEVM_INSTALL_DIR="/opt/DVS357/dvevm_1_20/"
18 export BIOS_INSTALL_DIR=$DVEVM_INSTALL_DIR/bios_5_31_01
19 export CG_INSTALL_DIR=$DVEVM_INSTALL_DIR/cg6x_6_0_14
20 export CMEM_INSTALL_DIR=$DVEVM_INSTALL_DIR/cmem_1_02
21 export CE_INSTALL_DIR=$DVEVM_INSTALL_DIR/codec_engine_1_10_01
22 export CS_INSTALL_DIR=$DVEVM_INSTALL_DIR/codec_servers_1_23
23 export DSPLINK_INSTALL_DIR=$DVEVM_INSTALL_DIR/dsplink_1_30_08_02
24 export FMWK_INSTALL_DIR=$DVEVM_INSTALL_DIR/framework_components_1_10_04
25 export XDAIS_INSTALL_DIR=$DVEVM_INSTALL_DIR/xdais_5_10
26 export XDC_INSTALL_DIR=$DVEVM_INSTALL_DIR/xdc_2_94
27 
28 export PATH=$XDC_INSTALL_DIR:$PATH

package.bld样本代码:

 1 + expand sourceview plaincopy to clipboardprint?
 2 var targs = [MVArm9, Linux86];   
 3 var profiles = ["debug", "release"];   
 4 //  Define the base name for the executable(s) built   
 5 var basename = "app";   
 6 //  The following code uses the java.io.File.list() method to generate an array   
 7 //      of all files in the current directory ('.') and then sorts out .c files   
 8 var sources = java.io.File('.').list();   
 9 var csources = [];   
10 for (var i = 0; i < sources.length; i++){   
11        if(String(sources[i]).match(/.*\.c$/))   
12                 csources.push(sources[i]);   
13 }   
14   
15 //  The build phase cycles through the arrays of build targets and profiles   
16 //       and adds an executable for each combination   
17   
18 for (var i = 0; i < targs.length; i++) {   
19      for(var j = 0; j < profiles.length; j++){   
20         Pkg.addExecutable( basename + "_" + profiles[j], targs[i],   
21 targs[i].platform, {   
22                      cfgScript: null,   
23                      profile: profiles[j],   
24                 }   
25                 ).addObjects( csources );   
26      }   
27 }  
28 var targs = [MVArm9, Linux86];
29 var profiles = ["debug", "release"];
30 //  Define the base name for the executable(s) built
31 var basename = "app";
32 //  The following code uses the java.io.File.list() method to generate an array
33 //      of all files in the current directory ('.') and then sorts out .c files
34 var sources = java.io.File('.').list();
35 var csources = [];
36 for (var i = 0; i < sources.length; i++){
37        if(String(sources[i]).match(/.*\.c$/))
38                 csources.push(sources[i]);
39 }
40 
41 //  The build phase cycles through the arrays of build targets and profiles
42 //       and adds an executable for each combination
43 
44 for (var i = 0; i < targs.length; i++) {
45      for(var j = 0; j < profiles.length; j++){
46         Pkg.addExecutable( basename + "_" + profiles[j], targs[i],
47 targs[i].platform, {
48                      cfgScript: null,
49                      profile: profiles[j],
50                 }
51                 ).addObjects( csources );
52      }
53 }

本文转自:http://csharp.usr.cc/forum.php?mod=viewthread&tid=52028&page=1

posted on 2013-10-31 15:16  冷烟花  阅读(2401)  评论(0编辑  收藏  举报