RTSC与XDCTools

  网上能找到的最新的关于XDCTools的文档好像是3.20.4.68版本,据说最新的文档可以在rtsc.eclipse.org找到,但是这个网页怎么也打不开了,估计已经没有人维护了。
  网上仅存的文档是可以在TI官网下载到的,就是3.20.4.68版本的xdctools-doc
在这里插入图片描述
  但是下载的文档里的内容也是不全面的,比如这里的一些条目都是“under construction”,所以如果你是刚准备入坑的话要做好心理准备这是一个大坑,一些问题可能找不到相关的资料。

RTSC简介

  RTSC,全称是Real-Time Software Components,是在2008年发起的一个开源项目,然而大概在2010年就终止了。RTSC 的发音是rit-see。它是一个基于C语言的项目,为的是能够用Package的方式管理C源代码,方便用C语言的开发者从外部导入一些需要的组件(Component)。
在这里插入图片描述
  RTSC的引入是对C语言的一种增强。在传统的compile和link的基础上,RTSC提供了一种可以通过脚本配置,生成部分所需的目标文件的机制,最终生成的目标文件还能进行分析(这个好像不是很有用)。我觉得这么做最大的优势就是能够实现一种统一而且灵活的库的管理。

直观认识

  对RTSC的直观认识可以从CCS的开发环境中看到。
在这里插入图片描述

  在CCS的工程的浏览目录下,可以看到一般的C/C++工程图标上写的是CCS,而带有RTSC配置的工程则是标有“RTSC”。
在这里插入图片描述

  在一般的C/C++工程中可以添加RTSC的配置文件,添加之后会有提示,询问是否要使能RTSC支持?
在这里插入图片描述
  可以通过这样的方式将一般的C/C++工程转成RTSC工程,但是如果想要转回来就没那么简单了。
在这里插入图片描述
  右键一个RTSC工程可以查看它的属性,在CCS General中的RTSC标签栏,显示了当前工程中包含的Package。这里勾选之后实际上是把对应Package的路径添加到了XDCPATH这个变量中,XDCPATH是在用XDCTools的时候用来搜索Package的路径。
  开头的XDCTools的版本号也很重要,因为有些Package是需要特定版本以上的XDCTools的。
  最下面的Target和Platform用于设置编译的目标。
  Target没有下拉栏可选,但实际上是有迹可循的。“ti.targets.elf.C64P”实际上对应的是“<xdc-root>/ti/targets/elf/C64P.xdc”这个文件,这个文件里设置了调用编译器时的,针对特定器件的编译选项。
在这里插入图片描述
  Platform是我自己创建的,用于规定当前编译的代码会运行在什么样的平台上,这里给出了特定平台的内外存储空间分布,Cache的设置,代码区,数据区和栈区的默认存放位置。可以通过以下两种方式创建Platform。
  一种是File->New->Others,然后选择编辑或者查看Platform。
在这里插入图片描述
  另一种是通过Project->RTSC Tools->Platform来编辑或者查看Platform。
在这里插入图片描述

  自己创建的Platform需要在工程属性的RTSC标签页中“Add”Platform所在的路径,这样才能在下面的下拉框中找到自己创建的Platform。就像上面我把“D:\PrjCCS\platform”这个路径添加进去了一样。
在这里插入图片描述
  Package的安装是在Windows->Preferences这个页面中设置的。Code Composer Studio->Products页面中可以安装和卸载Package。一般可以把Package安装在同一个路径,然后勾选下面的,每次启动CCS的时候自动在这个特定的路径下搜索发现新下载的Package。

XDCTools

  为了管理这些Package,自然需要相应的工具。XDCTools我觉得一般指的就是xdc.exe这个工具。在xdc的安装目录下,主要有xdc.exe和xs.exe两个可执行文件。xdc负责软件包构建,xs负责执行一些脚本。
  XDC的全称是eXpanDed C,定义它的初衷可能是作为C语言的一种扩展。XDC的语言由两部分组成,分别是XDCspecXDCscript

XDC specification

  XDCspec,顾名思义是一种规范,最常见的就是在每个Package的目录下都有一个“package.xdc”的文件,其中定义了这个package由哪些module组成。而module也有一个对应的“xxx.xdc”文件,它定义了这个module有哪些参数,有哪些函数可以调用,就像C++的类一样。基本上“.xdc”后缀的文件就是遵循XDCspec的语法规则。其中典型的关键词有:package、module、interface、metaonly、inherits等等。
  特殊的“.xdc”文件,比如“package.xdc”用于定义一个Package中的包含的模块。那些大写字母“I”开头的“.xdc”文件都是interface,它们就像是C++中的基类一样,可以被其它module继承,继承后的module需要对interface中定义的方法做实现。这种接口的定义使得部分模块之间的调用有了一个公认的标准。

XDC script

  XDCscript是一种脚本语言,从官方的定义上来说它是JavaScript的一个超集。这个相关的文件就比较多了,RTSC工程目录下的“.cfg”文件,模块相关的“.bld”文件和“.xs”文件都是用XDCscript写的。
  XDCscript也被成为meta-language,这个meta-language我不知道怎么翻译,wiki上的解释是这是一种描述另一种语言的语言。这个不必深究,只要知道是用它来使用每个模块就行。
  举个RTSC工程中的“.cfg”配置文件的例子。

var System = xdc.useModule('xdc.runtime.System');

  每个模块的使用都需要用xdc.useModule的方式得到一个模块的对象。然后就可以设置对象的属性和调用对象的方法。这个模块的方法是在对应模块的“.xs”文件中定义的。模块名称中的“.”也如前面介绍Platform是一样,实际上对应的是路径。把“.”换成路径的分隔符“\”(linux系统下是“/”),就可以找到相应的模块的“.xdc”文件和“.xs文件”。

系统学习

  如果想要完全掌握RTSC相关的内容,肯定是要熟悉Package的构建与使用。RTSC的文档中给出了相关的教程,从module,到interface再到package,可以说是非常详细。每个教程都有配套的例子,可以边做边学。
在这里插入图片描述

模块的使用

  我简单地把上面的教程都过了一遍,感觉我们一般情况下只需要能够懂得如何使用模块就行。上面的教程只是让我对整体的module和package的构成有了一个大概的印象,而且我也大概率不会自己去写package。而且花时间去详细地学习这些以后实际用的情况并不多,这么做划不来。能够实现类似功能的还有CMake,CMake也有一个package的机制,比如OpenCV就支持CMake通过package的方式来调用。
  模块的使用除了查阅某个package中的文档,最常用的工具就是Help->Help Contents。在打开的帮助目录里有详细的API的介绍。
在这里插入图片描述
  以SYS/BIOS中的Clock模块为例,这里既介绍了C语言的API,也对配置文件中的设置做了介绍。如果遇到什么和module相关的问题,往往都是在这里找到答案。
在这里插入图片描述

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小裘HUST

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值