/*
* ___ ___ ___ ___
* ___ / /\ /__/| / /\ / /\
* / /\ / /:/_ | |:| / /::\ / /:/_
* / /:/ / /:/ /\ | |:| / /:/\:\ / /:/ /\
* / /:/ / /:/ /:/_ __|__|:| / /:/~/::\ / /:/ /::\
* / /::\ /__/:/ /:/ /\ /__/::::\____ /__/:/ /:/\:\ /__/:/ /:/\:\
* /__/:/\:\ \ \:\/:/ /:/ ~\~~\::::/ \ \:\/:/__\/ \ \:\/:/~/:/
* \__\/ \:\ \ \::/ /:/ |~~|:|~~ \ \::/ \ \::/ /:/
* \ \:\ \ \:\/:/ | |:| \ \:\ \__\/ /:/
* \__\/ \ \::/ | |:| \ \:\ /__/:/
* \__\/ |__|/ \__\/ \__\/
* ___ ___ ___ ___ ___ ___ ___ ___
* ___ /__/\ / /\ ___ / /\ /__/\ /__/\ / /\ /__/\ ___ / /\
* / /\ \ \:\ / /:/_ / /\ / /::\ \ \:\ | |::\ / /:/_ \ \:\ / /\ / /:/_
* / /:/ \ \:\ / /:/ /\ / /:/ / /:/\:\ \ \:\ | |:|:\ / /:/ /\ \ \:\ / /:/ / /:/ /\
* /__/::\ _____\__\:\ / /:/ /::\ / /:/ / /:/~/:/ ___ \ \:\ __|__|:|\:\ / /:/ /:/_ _____\__\:\ / /:/ / /:/ /::\
* \__\/\:\__ /__/::::::::\ /__/:/ /:/\:\ / /::\ /__/:/ /:/___ /__/\ \__\:\ /__/::::| \:\ /__/:/ /:/ /\ /__/::::::::\ / /::\ /__/:/ /:/\:\
* \ \:\/\ \ \:\~~\~~\/ \ \:\/:/~/:/ /__/:/\:\ \ \:\/:::::/ \ \:\ / /:/ \ \:\~~\__\/ \ \:\/:/ /:/ \ \:\~~\~~\/ /__/:/\:\ \ \:\/:/~/:/
* \__\::/ \ \:\ ~~~ \ \::/ /:/ \__\/ \:\ \ \::/~~~~ \ \:\ /:/ \ \:\ \ \::/ /:/ \ \:\ ~~~ \__\/ \:\ \ \::/ /:/
* /__/:/ \ \:\ \__\/ /:/ \ \:\ \ \:\ \ \:\/:/ \ \:\ \ \:\/:/ \ \:\ \ \:\ \__\/ /:/
* \__\/ \ \:\ /__/:/ \__\/ \ \:\ \ \::/ \ \:\ \ \::/ \ \:\ \__\/ /__/:/
* \__\/ \__\/ \__\/ \__\/ \__\/ \__\/ \__\/ \__\/
*/
基于 TI TMS320F280025(C) 的 ProjectTemplate(工程模板)
- 📁 __DBG_FLASH
-
在 FLASH 中调试/烧录代码时,工程编译后生成的目录,打包工程时,本目录可删除,并且本目录不受 Git 版本管理控制
-
- 📁 __DBG_RAM
-
在 RAM 中调试代码时,工程编译后生成的目录,打包工程时,本目录可删除,并且本目录不受 Git 版本管理控制
-
- 📁 __Docs__
-
本目录仅用来存放工程说明相关文档或图片
-
- 📁 User_Src
-
本目录存放工程维护人员自行编写的源代码文件,跟 TI 库源文件目录进行区分
-
- 📁 targetConfigs
-
本目录存放目标配置文件(烧录器设置……)
-
如上图所示,以下目录为
链接目录
,在工程所在的硬盘根目录下不可见,但在 IDE 环境中,可见以下目录左侧为“带有一个小箭头的文件夹图标”,意为Linked Folder
之意,好处在于采用相对路径的方式,工程调用的 C2000WARE 库文件不受 C2000WARE 软件的安装位置所影响,解决同一工程拷贝到不同人的电脑上可能编译报错等问题。同时,这也极大方便了 C2000WARE 库版本的无缝切换。
⚠️ 注意:
- 凡是
链接目录
下的代码文件,其真实的硬盘路径不在工程的目录下,而位于 C2000WARE 的安装目录下,其本质是库文件
,所以 不得修改! 请知悉。- 以下
链接目录
的命名前缀采用_TI_
,好处在于在 IDE 开发环境中这几个库文件夹的排序位于 IDE 工程目录树的上方,方便与工程维护人员的业务代码目录(User_Src\..
)区分开来。- 本工程模板同时加入了
位域库
和DriverLib库
。对于实时性要求很高的场合,例如定时器中断,可以使用位域库
;对于实时性要求低的场合,例如外设初始化,可以使用DriverLib库
。这样做的目的是为了在代码效率和代码可读性、可维护性之间取得最佳的平衡。
- 📁 _TI_common_include
COM_TI_C2000WARE_SOFTWARE_PACKAGE_INSTALL_DIR\device_support\f28002x\common\include
- 📁 _TI_common_source
COM_TI_C2000WARE_SOFTWARE_PACKAGE_INSTALL_DIR\device_support\f28002x\common\source
- 📁 _TI_driverlib
COM_TI_C2000WARE_SOFTWARE_PACKAGE_INSTALL_DIR\driverlib\f28002x\driverlib
- 📁 _TI_headers_include
COM_TI_C2000WARE_SOFTWARE_PACKAGE_INSTALL_DIR\device_support\f28002x\headers\include
- 📁 _TI_headers_source
COM_TI_C2000WARE_SOFTWARE_PACKAGE_INSTALL_DIR\device_support\f28002x\headers\source
- ⚙️ TMS320F280025C.ccxml
-
目标配置文件(烧录器设置……)
-
- 🚧 28002x_generic_ram_lnk.cmd
-
工程链接文件 - RAM 调试模式
-
- 🚧 28002x_generic_flash_lnk.cmd
-
工程链接文件 - FLASH 调试/烧录模式
-
- 🚧 f28002x_headers_nonbios.cmd
-
位域库
依赖的外设地址空间映射文件
-
- 📃 <PROJECT NAME>.map
-
map文件
,工程编译后产生,用于分析符号映射相关信息
-
如上图所示,rts2800_fpu32_eabi.lib
为主要函数静态库,它主要提供了 C 标准库相关的库函数,覆盖范围最广,其中也包括三角函数 sin、cos 等等;而 rts2800_fpu32_fast_supplement_eabi.lib
则是对 rts2800_fpu32_eabi.lib
中部分三角函数的覆写,采用更快的 LUT 查找表方式实现;除了这两个静态库以外,TMU 单元
则可对更小范围的三角函数进行硬件级别的支持,通过生成对应的硬件指令,以实现更快的代码执行速度和更小的代码体积。
- Floating Point mode (--fp_mode) =
relaxed
---> 使能 TMU 单元- 此时
rts2800_fpu32_fast_supplement_eabi.lib
中的部分函数(如上图所示)被硬件指令集替代,通过这些硬件指令集实现的相关计算不完全符合 ISO 规范,并且会损失一些精度,但是可以有更快的执行速度以及更小的代码。
- 此时
- Floating Point mode (--fp_mode) =
strict
---> 禁能 TMU 单元- 此时
rts2800_fpu32_fast_supplement_eabi.lib
中所有的库函数都将由 LUT 的方式实现,并且在程序链接阶段,该库将会覆盖rts2800_fpu32_eabi.lib
中的同名函数(即优先被链接器链接)。
- 此时
- 优化等级
- 2 级优化:使能 DriverLib 函数内联、……
- 4 级优化:For sin32, cos32 and sincos32 on devices with limited memory、……
- 速度 vs. 代码尺寸优化
- 默认 2 级
- 浮点模式
- relaxed:使能 TMU 单元
- strict:关闭 TMU 单元
在此可方便切换
C2000WARE
的库版本:配合头文件包含设置(Include Options)
和库引用设置(File Search Path)
以及工程中的库源文件相对链接引用
,可实现无缝切换库版本并进行编译。
工程头文件包含设置统一使用相对路径的方式,例如相对
${COM_TI_C2000WARE_SOFTWARE_PACKAGE_INSTALL_DIR}/
目录进行头文件的引用包含。
与头文件包含设置类似,采用相对路径法添加
.lib
文件进行引用链接
⚠️ 注意:针对rts2800_fpu32_fast_supplement_eabi.lib
和rts2800_fpu32_eabi.lib
,必须注意两个静态库文件的引用顺序,并且,勾选下方的Search libraries in priority order (--priority, -priority)
前方的复选框以使能按顺序链接库文件。
工程全局预定义宏设置:
⚠️ 注意Configuration
不同,预定义宏会有差别。
部分 C 语法需要 C99 支持,故选择 C99 mode。
堆
大小默认为空,可能需要设置一下,否则编译可能会有警告。
- TMS320F280025 Custom PCB Board
- Texas Instruments XDS100v3 USB Debug Probe
- Code Composer Studio 9.3.0
MIT License
Copyright © 2021 SummerFalls
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.