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

TI XDC工具入门简介相关推荐

  1. AutoSAR系列讲解(入门篇)6.1-Vector的工具链简介

    AutoSAR系列讲解(入门篇)6.1-Vector的工具链简介 Vector的工具链简介 一.PREEvision 二.vVIRTUALtarget 三.DaVinci 四.CANoe 五.CANa ...

  2. Markdown入门简介

    参考 http://sspai.com/25137 作者: Te_Lee 文章来源: 少数派 Markdown入门简介(使用工具Haroopad) 一.使用的工具----haroopad(http:/ ...

  3. Logstash入门简介

    Logstash入门简介 介绍 Logstash是一个开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到最喜欢的存储库中(我们的存储库当然是ElasticSearch) ...

  4. android 教程概要,Android精通教程-第一节Android入门简介

    前言 大家好,我是 Vic,今天给大家带来Android精通教程-第一节Android入门简介的概述,希望你们喜欢 每日一句 If life were predictable it would cea ...

  5. 大数据与Hadoop有什么关系?大数据Hadoop入门简介

    学习着数据科学与大数据技术专业(简称大数据)的我们,对于"大数据"这个词是再熟悉不过了,而每当我们越去了解大数据就越发现有个词也会一直被提及那就是--Hadoop 那Hadoop与 ...

  6. Linux防火墙入门:简介(转)

    Linux防火墙入门:简介(转) 前言 一旦连上网络,就充满各种危机. 许多人基于各式各样的理由,想侵入你的系统,这种人俗称为 cracker.尤有甚者,近年来,cracker 圈里流行一种结合病毒行 ...

  7. QT——开发入门简介

    [系列专栏]:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! <QT开发实战> <嵌入式通用开发实战> <嵌入式Linux开发实战> 1.你了解Qt吗? ...

  8. AI之AutoML:autosklearn/Auto-Sklearn(基于scikit-learn库的自动化的机器学习工具)的简介、安装、使用方法之详细攻略

    AI之AutoML:autosklearn/Auto-Sklearn(基于scikit-learn库的自动化的机器学习工具)的简介.安装.使用方法之详细攻略 目录 autosklearn/Auto-S ...

  9. 橙子01-大数据基础入门简介

    橙子01-大数据基础入门简介 大数据的概念 volume variety velocity value 大数据技术 大数据处理的基本流程 云计算的三个关键技术 大数据的应用 相关视频内容可在b站观看大 ...

最新文章

  1. 2019年Java程序员就业分析
  2. 代码和产品发布的几种方式
  3. [JVM 相关] Java 新型垃圾回收器(Garbage First,G1)
  4. UML建模——用例图(Use Case Diagram)
  5. JavaScript实现更新数字指定偏移量上的值updateBit算法(附完整源码)
  6. pakeage php国内镜像,Packagist/Composer中国全量镜像 | 严佳冬
  7. Python eval 与 exec 函数的区别 - Python零基础入门教程
  8. 荣耀v10玩flash游戏_“王者荣耀”游戏竟然还能这样玩?(送皮肤)
  9. Linux学习体会。
  10. 《李焕英》票房反超,全靠《唐探3》衬托?
  11. android phone win10下载,微软Your Phone新功能: 可在Win 10 PC 上运行 Android 应用程序...
  12. 【中级02】Java Class字节码文件底层逻辑详解
  13. api wke_GitHub - kertL/wke: 基于Webkit精简的纯C接口的浏览器内核,可用于桌面UI、浏览器。...
  14. 单片机电脑计算机键盘设计,基于单片机的电脑弹簧机按键板的设计与实现
  15. 生产稳定:JVM-MySQL-Tomcat-服务调用,调优相关
  16. centos格式化U盘
  17. 面试常见的功能测试考试题关于测试方法的
  18. laravel视图 compact 循环遍历,if判断
  19. 如何展示舞台灯光秀的艺术表现力
  20. 【Joy of Cryptography 读书笔记】Chapter 6 伪随机函数(Pseudorandom Function)分组密码(Block Cipher)

热门文章

  1. 华为防火墙:防火墙的介绍及基本配置
  2. AOSP源码环境搭建及编译
  3. 「业务架构」介绍BPMN第二部分-泳道
  4. 分布式机器学习之——Spark MLlib并行训练原理
  5. 洛谷B2112石头剪子布Python题解
  6. 搭建自己的邮件服务器(postfix devocot cyrus-sasl) centos7 系统下配置
  7. 2021Java面试心得,Java校招面试指南
  8. python 按照对象某一属性排序
  9. 企业移动化信息建设的一些思考(二)移动开发技术发展
  10. 3、生鲜电商平台-盈利模式详解