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样本代码:
+ 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 );
}
}
本文转自:http://csharp.usr.cc/forum.php?mod=viewthread&tid=52028&page=1
TI XDC工具入门简介的更多相关文章
- 掌握 Ajax,第 1 部分: Ajax 入门简介
转:http://www.ibm.com/developerworks/cn/xml/wa-ajaxintro1.html 掌握 Ajax,第 1 部分: Ajax 入门简介 理解 Ajax 及其工作 ...
- (转)Web Service入门简介(一个简单的WebService示例)
Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ...
- ASP.NET Core学习之一 入门简介
一.入门简介 在学习之前,要先了解ASP.NET Core是什么?为什么?很多人学习新技术功利心很重,恨不得立马就学会了. 其实,那样做很不好,马马虎虎,联系过程中又花费非常多的时间去解决所遇到的“问 ...
- Web Service入门简介(一个简单的WebService示例)
Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ...
- Android精通教程-第一节Android入门简介
前言 大家好,给大家带来Android精通教程-第一节Android入门简介的概述,希望你们喜欢 每日一句 If life were predictable it would cease to be ...
- Markdown入门简介
参考 http://sspai.com/25137 作者: Te_Lee 文章来源: 少数派 Markdown入门简介(使用工具Haroopad) 一.使用的工具----haroopad(http:/ ...
- Orange的数据挖掘工具入门使用
Orange的数据挖掘工具入门使用 声明: 1)本报告由博客园bitpeach撰写,版权所有,免费转载,请注明出处,并请勿作商业用途. 2)若本文档内有侵权文字或图片等内容,请联系作者bitpeach ...
- Django笔记 —— 入门简介
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
- 1 Processing入门简介
1 Processing入门简介 1.1 Before you start Processing是一个为开发面向图形的应用(visually oriented application)而生的简单易用的 ...
随机推荐
- Ecel 粘贴图片并调整大小,移到底层
Sub Click() ActiveSheet.Pictures.Paste.Select Selection.ShapeRange.ScaleWidth 1.4, msoTrueSelection. ...
- LG4169 [Violet]天使玩偶/SJY摆棋子
题意 Ayu 在七年前曾经收到过一个天使玩偶,当时她把它当作时间囊埋在了地下.而七年后 的今天,Ayu 却忘了她把天使玩偶埋在了哪里,所以她决定仅凭一点模糊的记忆来寻找它. 我们把 Ayu 生活的小镇 ...
- 13 Stream Processing Patterns for building Streaming and Realtime Applications
原文:https://iwringer.wordpress.com/2015/08/03/patterns-for-streaming-realtime-analytics/ Introduction ...
- orientdb 图数据库docker 安装试用
1. 镜像 docker pull orientdb 2. 启动 docker run -d --name orientdb -p 2424:2424 -p 2480:2480 -e ORIENTDB ...
- consul 几个方便使用的类库
consul 几个方便使用的类库 1. java https://github.com/OrbitzWorldwide/consul-client <dependency> < ...
- MEF学习总结(3)---Attribute Model Programing
上一片介绍了Primitive层,Attribute Model可以认为是对Primitive的上层实现.主要包括如下内容: 1. 一系列的Attribute来定义Import和Export 常用的有 ...
- curl post数据
调用方式: $header = self::getHeader(); $data = self::postUrl($url, $header); /** * 组合Header * @return ty ...
- (转)Inno Setup入门(十三)——Pascal脚本(2)
本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17250933 事件函数(2) function CheckPassw ...
- Java字符代码中干掉制表符、回车符和换行符
Java字符代码中干掉制表符.回车符和换行符 代码片段: String sql = StringUtils.trim(sql).replaceAll("[\\r\\n\\t]",& ...
- 打开图片并显示在面板上demo
import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; ...