初学 TI-DSP-C2000 指南

初学 TI-DSP-C2000 指南

Author:mcj166

Time:2024.10.28

初识工作空间

背景:CCS软件基于eclipse,工作空间(workSpace)这个概念也从eclipse那里继承过来了。

作用:工作空间是CCS的工作路径。该路径下可以管理多个CCS工程。

打开CCS软件,第一件事就是选取工作空间目录。

工作空间目录下,会自动生成四个文件夹,用于保存工作空间的数据,不用管它。

  • .jxbrowser.userdata
  • .metadata
  • dvt
  • RemoteSystemsTempFiles

剩下的文件夹才是你的工程文件夹,或者其他。

有一个坑,工程不能放在工作空间目录,必须放在文件夹中,不然会出现无法导入工程的情况。

初识工程根目录

看到一些文件夹,形如

  • DSP2833x_common
  • DSP2833x_headers

很可能是你的工程依赖,并不是工程。工程可能会调用这些依赖。

一个v6版本以上的CCS工程,包含这些文件:

这三个文件都是在同一个目录下出现的。该目录即工程根目录。

工程根目录,在CCS默认设置中表示为 ${PPROJECT_LOC}

初识工程依赖

1、头文件目录(编译时需要)、库文件目录(链接时需要):

选择 Project–>Properties

2、源文件依赖:

工程目录之外的源文件,如何被工程引用,需要手动引用成为工程依赖。

选择 Project–>Add Files–>选择文件(多选)–> Link to files (勾选相对路径)

然后在 Project Explorer中使用鼠标拖动,将引用的源文件拖动到Source文件夹中,使得文件树结构更清晰。

3、依赖项管理:

选择 Project–>Properties

## 初识编译屏蔽

工程目录之内存在的文件和文件夹,CCS都会自动引用为工程依赖。

如果有不想编译的 某文件,需要手动进行编译屏蔽。

操作是右击该文件,选择 Exclude from Build,该文件就会变灰色。

初识ti-cgt编译器

选择 Project–>Properties

ti-cgt编译器:CCS使用专门编译C2000工程的编译器。

编译器版本的坑:莫名其妙的编译问题,试试换一个编译器版本,也许就解决了…

编译器版本管理:去ti官网下载,搜索 ti-cgt-c2000编译器,然后找教程安装。

编译优化:优化等级越高,文件体积越小,运行速度越快,但是调试信息越少。

初识配置

背景:CCS软件基于eclipse,配置(Configuration)也继承过来了。

作用:一个配置,保存了一套编译参数、链接参数、编译器版本、编译屏蔽等设置。

好处:允许一个工程保存几种不同配置,方便灵活切换。

一般情况下,设置两个配置,一个叫Debug,一个叫Release。

Debug是将编译好的 .out文件烧录到目标器件的RAM中。烧录到RAM的特点是运行速度超快,烧录速度超快,但可能RAM不够大,掉电程序丢失。

Release是将编译好的 .out文件或者 .bin文件烧录到目标器件的FLASH中。烧录到FLASH的特点是运行速度慢,烧录速度慢,好在空间够大,掉电程序不丢失。

编译时,CCS会在工程目录下自动生成文件夹,文件夹名字是Debug和Release,和配置名字对应。编译产生的文件都存放在文件夹中。

初识目标配置文件

作用:目标配置(Target-Configuration)文件是 .ccxml 后缀。它定义了你用的什么型号的下载器、你的目标芯片是哪一款C2000芯片。如果不对应,就会报错,无法烧录程序。

方式一(手动配置):选择 File–>New–>Target Configuration File

方式二(自动配置):选择 Project–>Properties–>General–>勾选自动配置Target-Configuration。

初识cmd文件

称呼:linker command file。

背景:是嵌入式汇编相关的文件。定义了存储空间的分页(PAGE)、分段(SECTIONS),及其寻址地址。

作用:定义存储空间(FLASH、RAM等)的划分。支持按需修改,但要注意特定硬件特定地址。

实操:将ti提供的 .cmd文件拷贝到工程目录下,是大多数人的选择。必要时候,可能需要简单修改。

初识Flash烧录

一般来说,对于烧录到RAM中的操作,新手都很容易上手。但是,烧录到FLASH中的话,就很容易犯浑。

上图展示了Release配置下,需要将程序烧录到FLASH中,所以使用了ti提供的

  • DSP2833x_Headers_nonBIOS.cmd
  • Example_Flash28335_API.cmd
  • Flash28335_API_V210.lib
  • Example_Flash2833x_API.h
  • Flash2833x_API_Config.h
  • Flash_2833x_API_Library.h
  • Example_Flash2833x_API.c
  • Example_Flash2833x_CsmKeys.asm

其中,部分源码存在于 Flash28335_API_V210.lib 库文件中。

有一个坑:下载到Flash中的程序,运行会很慢,RAM中运行需要100ns,在Flash中可能就需要10us了。会发现Debug和Release的差别很大。

但是又不可能把所有代码从Flash拷贝到RAM中,因为RAM可能不够大。ti是这样解决的,只将函数代码从Flash拷贝到RAM中,并且只是一小部分函数。这一小部分函数是需要高速运行的函数,例如中断函数、反复调用的函数、计算量大的函数。

以下伪代码,是来自ti的例子,提取出来的。

// 首先,需要在 main 函数中调用下面。不然就没办法拷贝函数到RAM
// 其中,在 .cmd 文件中搜索,可找到一个段(Section)命名为 ramfuncs
Example_MemCopy(&RamfuncsLoadStart,&RamfuncsLoadEnd,&RamfuncsRunStart);
InitFlash();

// 其次,把某函数拷贝到RAM,也就是拷贝到段(Section)命名为 ramfuncs
// 在某函数声明或者定义的地方,进行如下操作
#pragma CODE_SECTION(myFUNC, "ramfuncs");
void myFUNC();

选择 Window–>Show View–>Memory Allocation

观察发现,ramfuncs的占用变大了,说明成功将函数拷贝ram了。

初识例程

例程的学习肯定是初学者必须经历的。那么,例程去哪里找呢。这里,推荐ti官方的例程。ti的例程可以简单的分为三个类型,一个是device-support,一个是driverlib,一个是SDK和libraries。

拿到一个现有的工程,如果你很容易判断出工程中的哪些文件拷贝自哪个类型的例程,说明你了解得够多。所以,学习例程会帮忙你加深对代码的理解。ti提供的例程、资料、套件每年都在更新,所以例程也都迭代了很好版本了。

1、说说device-support:

device-support版本的例程是用寄存器来编程。编程过程中,你需要查询技术参考手册(Technical Reference Manual)了解寄存器的作用。技术参考手册在ti官网获取,例如 sprui07 是ti提供的TMS320F2833x的技术参考手册。

device-support分为老版和新版。

老版在 controlSUITE 套件里面找到,直到2016年更新到V210之后停更了。直到目前还有很多很多工程代码参考的是老版例程,所以是一定要掌握的

新版放在了 C2000Ware 套件里面,直到目前2024年还在更新。但是仔细观察的话,新版和旧版并没有太大差别,基本上只是改了个名字,实质性代码并没有变。

2、说说driverlib:

driverlib版本可以说是比较新的版本了,代码风格和device-support版本相差挺大。同样也在 C2000Ware 套件中。

driverlib版本的例程是用库函数来编程的。库函数是ti帮你写好的。你只需要调用库函数就能比较轻松的配置寄存器。熟练的话都不需要查询技术参考手册了。

使用driverlib还有一个好处,那就是可以使用 SysConfig 工具。这个工具使用可视化界面帮忙你配置芯片外设,并生成初始化代码。对于熟悉 stm32cubeMX 的同学来说,这个工具很亲切。spracx3 是ti提供的应用手册,使用教程就在里面。

3、说说SDK:

ti提供的软件开发套件(SDK)很多,里面有很多例程和库。例如

版本迭代很多版本了。新版本在ti官网很容易获取,老版本在 controlSUITE 中。

4、说说libraries:

不管是C2000Ware还是controlSUITE还是SDK,解压后都有个libraries文件夹,里面有例程。ti官网搜相对应的英文名字也有相应的应用手册文档。也是迭代了很多版本了。注意的是,libraries中,有的用汇编写的,有的基于device-support写的,有的基于driverlib写的。

完结

初学 TI-DSP-C2000 的坑、要注意的点,基本上说的差不多了。接下里就是查手册、看寄存器、看内部设计框图、看原理图、写代码、调试……和普通的嵌入式开发流程没太大的区别了。

TI Training Resources TI offers multiple training opportunities to aid in the development of your signal processing application: WORKSHOPS – TI workshops are a fast and efficient way to learn how to use and implement designs on TI DSPs. The workshops are designed to develop a strong working knowledge of TI DSPs through lectures and practical hands-on exercises. All workshops are facilitated by qualified TI representatives and are based on DSP Starter Kits (DSKs), Evaluation Modules (EVMs) or simulators. We have a range of One-day, Application, and Multi-day Workshops. ONE-DAY WORKSHOPS – One-day workshops are introductory courses designed to offer product or technology knowledge. These workshops include a significant hands-on section and are ideal introductions to get started with TI DSPs. APPLICATION WORKSHOPS – Application workshops are introductory courses that teach integration of a DSP into an application. Additionally, these workshops focus on the application functionality. MULTI-DAY WORKSHOPS – Three- or four-day, hands-on, advanced, educational courses are highly technical and designed for engineers who want to sharpen their design and development skills. Managed by TI’s Technical Training Staff, these workshops include extensive hands-on labs emphasizing the demonstration and application of techniques and skills. TI DEVELOPER CONFERENCE – Whether you are a novice or experienced user, learn about the latest in signal processing design from industry experts through demonstrations, presentations, hands-on training, networking activities and more. ONLINE TRAINING – A variety of free online training courses are available to you at your fingertips 24/7. Learn more about how to design your signal processing application with self-paced online training courses covering DSP and Analog applications, easy-to-use software development tools and more.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值