转:http://blog.sina.com.cn/s/blog_693301190100sitz.html

  XDC是TI公司为嵌入式实时系统可重用软件组件(在XDC里被成为packages,以下成为包)制定的一套标准。它包括一些有用的工具,标准的API函数,静态配置文件和打包(packaging)操作。XDC最主要的亮点在于它标准化了传递过程,并简化了在应用程序中引用目标平台下其他包的过程。

本文从一个简单的“Hello,World“入手,引领大家进入XDC开发世界。

在XDC开发世界中,首先需要明确两个概念,package和repository。

所谓package,类似与java里的jar文件或.net世界里的assembly,是开发者将源代码编译打包后交付给使用者使用的一组集合。和java里的package类似,XDC的Package也是按照一定层次的文件夹组织形式来存放的(这点和.net不同,.net仅仅是编译成一个dll),该目录的名字就是包的名字。

所谓repository,实际上是一个包含多个package的文件夹,例如在XDC里,我们使用packages来作为一个repository,该文件夹下包含很多ti.xdc.*的包。在XDC开发中,有一个很重要的变量XDCPATH,在XDCPATH中制定的路径就是repository。这有点类似于C++的包含文件目录。

安装和卸载XDC

你可以从TI的网站上下载,安装过程很简单,如果在Windows平台下,直接双击安装文件安装到特定目录就可以了,如果是在Linux平台,可能需要修改文件的属性将文件设置成可执行,然后双击安装。

至于卸载,找到uninstall文件,双击即可。

将XDC添加到你的环境变量

为了更方便地使用XDC(实际上就是不要在xs前加上一长串路径),需要将XDC添加到环境变量里。

如果开发平台为Windows,在安装完XDC后,需要环境变量的PATH中添加XDC安装目录(和JAVA一样),此外,顺便新建一个XDCPATH的环境变量,该变量用来制定repository的位置。

如果你用的是Linux,自己查文档吧:-)

测试

当你完成以上步骤后,恭喜你,你现在可以开始XDC编程之旅了,试试在命令行下键入:

xs –version

xs xdc.tools.echo hello world

很简单吧?广告之后我们开始编写第一个基于XDC的应用程序,下一节更精彩,不要走开哦。

下面介绍如何创建一个基于XDC的应用程序。

一般的我们使用传统的C语言进行XDC开发,在配置上还需要使用Javascript。不过总体来说,开发XDC还是很容易的,只需要遵循以下几个步骤:

配置应用程序(也就是写配置文件了啊)

写C语言

编译、链接

根据TI标准开发流程,XDC开发主要关注点还是编写C语言代码,至于其他的(主要是指1、3)很简单(文档上说的,我不觉得~~~),TI提供了一些工具。

废话少说,开始我们的“Hello,World”之旅吧!

配置应用程序

和Java、C不同,开发XDC应用程序需要使用javascript语法写一个配置文件,进行一些预先的配置工作以供应用程序使用(例如使用什么模块啊,设置一些常量啊)。当然,第二步也就是写C语言也可以进行一些动态的设置。

至于为什么写配置文件,TI给出的答案是:

在编译时就制定需要使用到哪些模块,以及生成哪些静态对象。

检查制定包和继承包

设置指定模块或对象的属性

下图展示了XDC编译的全过程:

XDC的配置文件是以cfg结尾的,在Codec Engine开发过程中,我们主要是Application端和server端使用XDC来编译。

如上图所示,CONFIG OUTPUT中为XDC编译器根据配置文件生成的一些中间文件(例如C代码、.cmd文件),这些文件不需要自己动手编写,甚至不需要知道他们是干什么的。

现在回到“Hello,World”开发,我们先在开发目录下建立一个名为hello的文件夹,然后在该文件夹中建立一个名为hello.cfg的文件:

接下来,在该文件中输入以下javascript表达式,声明一个xdc.runtime.System对象:

var System = xdc.useModule(“xdc.runtime.System”);

写C语言

创建一个名为hello.c的文件,在里面添加以下代码:

#include <xdc/std.h>
#include <xdc/runtime/System.h>

int main()
{
    System_printf(“Hello World!\n”);
    return (0);
}

编译

确定目标和平台

在编译前,我们首先需要明确我们的程序是运行在什么平台上的,以及使用什么编译起来进行编译。在TI的文档中,用目标(Target)和平台(Platform)、编译器来定义这些属性:

目标(-t):制定的编译器,例如TI ‘C6000 编译器。

平台(-p):运行的环境,例如DM6446 EVM。

编译器(-c):编译XDC的编译器,例如TI 公司提供的Code Gen Tools或者Visual Studio 2008。

在本例中,目标为ti.targets.C64P,平台定位ti.platforms.evmDM6446。

运行Configuro

XDC提供了一个叫做“Configuro”的工具来处理配置文件,我们可以在命令行中输入以下命令:

xs xdc.tools.configuro -t ti.targets.C64P -p ti.platforms.evmDM6446 -c d:/opt/cgtools hello.cfg

注:你需要在https://www-a.ti.com/downloads/sds_support/CodeGenerationTools.htm下载Code Gen Tools。

编译后将生成一个名为hello的文件夹:

转:http://blog.sina.com.cn/s/blog_693301190100sitz.html

【转】 XDC介绍的更多相关文章

  1. Xilinx Vivado的使用详细介绍(5):调用用户自定义封装的IP核

    Zedboard OLED Display Controller IP v1 介绍 Author:zhangxianhe 本文档提供了快速添加,连接和使用ZedboardOLED v1.0 IP内核的 ...

  2. Vivado Design Suite用户指南之约束的使用第一部分(介绍部分)

    首先来看目录部分: 首先是介绍部分:这部分讲述的是Migrating From UCF Constraints to XDC Constraints(从UCF约束迁移到XDC约束)和About XDC ...

  3. Python字符编码以及循环机制介绍

    Python字符编码以及循环机制介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 身为一名运维人员就得不断的学习,那么如何身为运维的你是否已经嗅探已经很火的Python编程啦?大 ...

  4. Xilinx Vivado的使用详细介绍(2):综合、实现、管脚分配、时钟设置、烧写

    前面一篇介绍了从新建工程一直到编写代码进行行为仿真,这篇继续进行介绍. 修改器件型号 新建工程时选择过器件型号,如果新建好工程后需要修改型号,可以选择菜单Tools - Project Setting ...

  5. 嵌入式开发之davinci--- 8148/8168/8127 中的xdc 简介

    XDC是TI公司为嵌入式实时系统可重用软件组件(在XDC里被成为packages,以下成为包)制定的一套标准.它包括一些有用的工具,标准的API函数,静态配置文件和打包(packaging)操作.XD ...

  6. CSS3 background-image背景图片相关介绍

    这里将会介绍如何通过background-image设置背景图片,以及背景图片的平铺.拉伸.偏移.设置大小等操作. 1. 背景图片样式分类 CSS中设置元素背景图片及其背景图片样式的属性主要以下几个: ...

  7. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  8. Windows Server 2012 NIC Teaming介绍及注意事项

    Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ...

  9. Linux下服务器端开发流程及相关工具介绍(C++)

    去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...

随机推荐

  1. 推荐一篇好文:OSG OSGearth vs2010编译

    链接:http://weibo.com/p/2304189447a8480102v2c2 此文作者把用到的相关代码包放在:http://pan.baidu.com/s/1qW9a4zU 按照步骤操作完 ...

  2. Timus 2068. Game of Nuts 解题报告

    1.题目描述: 2068. Game of Nuts Time limit: 1.0 secondMemory limit: 64 MB The war for Westeros is still i ...

  3. 详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名及手工脚本创建oracle数据库

    数据库名.实例名.数据库域名.全局数据库名.服务名 , 这是几个令很多初学者容易混淆的概念.相信很多初学者都与我一样被标题上这些个概念搞得一头雾水.我们现在就来把它们弄个明白. 一.数据库名 什么是数 ...

  4. ios学习-制作一个浏览图片的Demo

    一.项目要求:制作一个浏览图片的Demo,要求包含夜间模式,以及改变图片大小,能够显示不同的图片描述 二.开发步骤: 1.在storyboard上添加一个空白的View,然后添加”设置“按钮,添加im ...

  5. [译]Dynamics AX 2012 R2 BI系列-规划分析的注意事项

    https://msdn.microsoft.com/en-us/library/gg731898.aspx       在开始实施AX的分析特性前,有很多事情要考虑.本文描述了你必须考虑的事情,和在 ...

  6. 自己写的java excel导出工具类

    最近项目要用到excel导出功能,之前也写过类似的代码.因为这次项目中多次用到excel导出.这次长了记性整理了一下 分享给大伙 欢迎一起讨论 生成excel的主工具类: public class E ...

  7. Ubuntu 16.04环境布署小记

    本系列文章记录了升级Ubuntu 16.04的布署过程 回到目录 10. 安装Mono, Xsp 当前版本16.04.1的系统源的Mono版本为4.2.1,如需使用最新版本(本文书写时稳定版本为4.6 ...

  8. DP专题训练之HDU 1864 最大报销额

    做DP一定要注意数组的大小,嗯,就是这样~ Description 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求每张发票的总额不得超过10 ...

  9. 如何用Java实现DVD的一些功能

    /* 这个代码中涉及到的知识点很多,大家要慢慢悟!! */ import java.util.*; import java.text.*; class DvdSet { //定义三个属性 String ...

  10. java.sql.SQLException: 关闭的 Resultset: next

    根据异常信息判断是数据库查询出来的结果集被关闭了,所以就了next 我的代码是一个Impl方法(假设为A方法)中调用另一个Impl方法(假设为B方法),我在执行完B方法后,调用了一下关闭数据库连接的方 ...