zoukankan      html  css  js  c++  java
  • TI XDC工具入门简介

    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

  • 相关阅读:
    环形链表II 找环入口
    最短无序连续子数组 复制数组排序后与原数组相比
    和为K的子数组 暴力 或 hash+前缀
    在排序数组中查找元素的第一个和最后一个位置 二分法+递归
    NodeJs 批量重命名文件,并保存到指定目录
    NodeJs 批量图片瘦身,重设尺寸和图片质量并保存到指定目录
    NodeJs 获取照片拍摄日期和视频拍摄日期,并按日期目录存档
    Oracle迁移记录
    Oracle数据库迁移前的准备工作(创建用户并且分配权限及表空间)
    Oracle 11g R2性能优化 10046 event【转载】
  • 原文地址:https://www.cnblogs.com/jason-lu/p/3399386.html
Copyright © 2011-2022 走看看