嵌入式开发之davinci--- 8148/8168/8127 中的xdc 简介
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
http://blog.sina.com.cn/s/blog_69620aac0100q9e6.html
嵌入式开发之davinci--- 8148/8168/8127 中的xdc 简介的更多相关文章
- 嵌入式开发之uart---rs232 和rs485 和rj45和usb简介
		
(1) profilebus和can(control控制器局域网)和hub(集线器) (uart)通用异步传输 rs232: ibm 提出的,两根线,按位bit传输,是端到端的单信号电平模式,理论上有 ...
 - 嵌入式开发之davinci---IPIPE、IPIPEIF and ISIF这三者有什么区别
		
(1)缩写概念 (2)各自区别 (3)不同sensor 采集接口 (4)采集后的数据链路link (5)8127 中的iss和ipipe的区别 (1)缩写概念 http://www.ti.com.cn ...
 - 嵌入式开发之davinci--- 8148/8168/8127 中的High-DefinitionVideo Processing Subsystem (HDVPSS)
		
High-DefinitionVideo Processing Subsystem (HDVPSS) 这一章介绍了高清视频处理子系统(HDVPSS). 2.1导论 2.1.1 简介 HDVPSS 使用 ...
 - 嵌入式开发之davinci--- 8148/8168/8127 中的大屏分布式拼接显示系统
		
其实在接触从12年接触8127系列ipnc 时看到200w和500w的高清像素,我就萌生了视频拼接的兴趣,没想到今年的安博会就有公司推出产品了,它就是上海的环视科技,从他的主页可以看到,明显的有个只能 ...
 - 嵌入式开发之davinci--- 8148/8168/8127 中的图像处理vpss link dei、sclr、swms、Mosaic’s
		
vpss 中的link (1)dei dei 主要做数据交错处理,带缩放 dei control data flow: (2)sclr 8168中支持缩放按比例的分子和分母,只支持缩小,貌似不支持放大 ...
 - 嵌入式开发之davinci--- 8148/8168/8127 中的图像处理算法优化库vlib
		
The Texas Instruments VLIB is an optimizedImage/Video Processing Functions Library for C programmers ...
 - 嵌入式开发之davinci--- 8148/8168/8127 中的图像采集格式Sensor信号输出YUV、RGB、RAW DATA、JPEG 4种方式区别
		
简单来说,YUV: luma (Y) + chroma (UV) 格式, 一般情况下sensor支持YUV422格式,即数据格式是按Y-U-Y-V次序输出的RGB: 传统的红绿蓝格式,比如RGB565 ...
 - 嵌入式开发之davinci--- 8148/8168/8127 中的音频alsa 采集
		
1.snd_pcm_open,打开句柄. 2.配置参数,可能用到的接口:snd_pcm_hw_params_alloca.snd_pcm_hw_params_any.snd_pcm_hw_params ...
 - 嵌入式开发之davinci--- 8148/8168/8127 中的添加算饭scd 场景检测 代码实现
		
http://blog.csdn.net/mianhuantang848989/article/details/38035731 http://www.61ic.com/Article/DaVinci ...
 
随机推荐
- Codeforces 920E Connected Components? 补图连通块个数
			
题目链接 题意 对给定的一张图,求其补图的联通块个数及大小. 思路 参考 ww140142. 维护一个链表,里面存放未归入到任何一个连通块中的点,即有必要从其开始进行拓展的点. 对于每个这样的点,从它 ...
 - CF501D Misha and Permutations Summation(康托展开)
			
将一个排列映射到一个数的方法就叫做康托展开.它的具体做法是这样的,对于一个给定的排列{ai}(i=1,2,3...n),对于每个ai求有多少个aj,使得j>i且ai>aj,简单来说就是求a ...
 - poj 2100(尺取法)
			
Graveyard Design Time Limit: 10000MS Memory Limit: 64000K Total Submissions: 6107 Accepted: 1444 ...
 - 2018 Multi-University Training Contest 7
			
GuGuFishtion dls真厉害,快速求$\sum_{a=1}^n \sum_{b=1}^m gcd(a,b) $的个数,我想的方法是根据上节课dls讲的方法,要容过来容过去,这次不用了. 则$ ...
 - 自做CA自签发SSL证书
			
一.把证书准备好.步骤与使用OpenSSL自签发服务器https证书所述大同小异.在这里再重复一次.1.制作CA证书:ca.key CA私钥: openssl genrsa -des3 -out ca ...
 - JS中 this 的四种用法
			
1.在一般函数中使用 this 指全局对象 window function fn(){ this.x = 1 } fn(); //相当于window.fn() 2.作为对象方法使用 this 指该对象 ...
 - pt-online-schema-change原理解析(转)
			
pt-online-schema-change原理解析 博客相关需要阅读 - zengkefu - 博客园 .pt-online-schema-change工具的使用限制: ).如果修改表有外键,除非 ...
 - java8新特性学习笔记(二) 使用流(各种API)
			
筛选和切片 用谓词筛选,筛选出各个不相同的元素,忽略流中的头几个元素,或将流截断至指定长度 用谓词筛选 Stream接口支持filter方法,该操作接受一个谓词(返回一个boolean的函数) 作为参 ...
 - centos网络配置实例
			
1.配置DNS vim /etc/resolv.conf nameserver 192.168.0.1 nameserver 8.8.8.8 nameserver 8.8.4.4 2.配置网关 r ...
 - 【AngularJS】Yeoman安装
			
看不到PPT的请自行解决DNS污染问题.