探索 TI C2000 工具链选项
工具链为开发、编译和调试用于 Texas Instruments® C2000™ 处理器的应用程序提供了必要的工具和环境。您可以使用各种工具链选项生成不同格式的可执行文件。
Texas Instruments C2000 处理器支持多种工具链选项,使您能够生成不同格式的可执行文件。C2000 Microcontroller Blockset 支持以下工具链。
C28x
Texas Instruments Code Composer Studio™:生成通用目标文件应用程序二进制接口 (COFF ABI) 格式的可执行文件。
Texas Instruments Code Composer Studio - EABI (C2000):生成 ELF 应用程序二进制接口 (EABI) 格式的可执行文件。
C29x
Texas Instruments C29x Clang Compiler
ARM®
Texas Instruments Code Composer Studio (ARM)
配置代码生成的工具链选项
要配置代码生成所需的工具链选项,请完成以下步骤。
在 Configuration Parameters 窗口中,展开 Code Generation 窗格。

Build process 下的 Generate code only 选项允许您生成代码,而不是将模型构建为可执行文件。有关详细信息,请参阅 仅生成代码 (Simulink Coder)。
您可以选择 Build Configuration 选项来获取代码编译所需的编译器标志。
Faster builds
Faster run
Debug
Specify
使用 Specify 选项编辑 Tool Options 列,以添加任何其他标志。有关详细信息,请参阅编译配置 (Simulink Coder)和提升 TI C2000 Simulink 应用程序中的代码执行速度。
COFF 和 EABI 二进制格式比较
COFF 和 EABI 格式在解释 Texas Instruments C2000 处理器的双精度数据类型方面有所不同:
COFF ABI 格式:
在 Simulink® 中将双精度数据类型解释为 C28x™ 处理器的 32 位浮点类型。
适用于 32 位精度足以满足应用需求的场合。
EABI 格式:
在 Simulink 中,将双精度数据类型解释为 TI F2838x (C28x) 处理器的 64 位浮点类型。
注意
TI C29x 处理器仅支持 EABI 格式。
在 FPU32 处理器上启用 EABI 可能会导致执行时间延长,特别是对于在软件中模拟 64 位操作的处理器而言。
数据类型解释
| 类型 | COFF ABI 格式 | EABI 格式 |
|---|---|---|
| 双精度 | IEEE 32 位单精度 | IEEE 64 位双精度 |
| 浮点 | IEEE 32 位单精度 | IEEE 32 位单精度 |
| 长双精度 | IEEE 64 位双精度 | IEEE 64 位双精度 |
互操作性格式注意事项
此列表详细说明了 COFF 和 EABI 互操作性格式的注意事项。
File Compatibility:如果使用 EABI 格式,则需要重新编译所有库和预编译目标文件,使其符合 EABI 格式。COFF 格式和 EABI 格式之间没有兼容性。
Source Code Access:获取源代码访问权限,以便根据需要重新编译对象和库。
Consistent File Formats:确保所有引用的文件,包括库文件 (
.lib)、源文件 (.cc/.h/.asm) 和链接器命令文件 (.cmd),都与工具链支持的格式相同,以避免链接器错误。自定义文件必须与工具链格式匹配。Linker Command Files:请使用工具链支持的正确格式和正确的小节名称。在 EABI 模式下,默认情况下所有小节都可以通过条件链接进行删除。从 COFF 迁移到 EABI 时,显式保留需要但未引用的小节。
TMU and Fast Integer Division:
仅在 EABI 格式中启用 TMU1 和快速整数除法,而 TMU0 在 COFF 和 EABI 格式中均受支持。您可以在编译设置中配置这些选项 (Configset -> Hardware Board -> Build options)。
TMU 硬件指令仅在宽松浮点运算中会被替换。
TMU0 支持乘法、除法、平方根、正弦、余弦、反正切等数学运算,而 TMU1 支持对数和指数运算。
Automatic CRL Triggering:当使用匹配的除法运算时,会自动触发快速整数除法代码替换库 (CRL),但此功能仅在 EABI 格式中受支持。
处理器和工具链兼容性
此表详细列出了处理器及其对应的工具链、TMU 和快速整数除法支持。编译器格式支持取决于 TI C2000Ware 中源代码、头文件和库的可用性。对于在 Simulink 中同时支持 COFF 和 EABI 工具链的处理器,链接器命令文件会进行更新,以匹配工具链要求的正确格式。
处理器支持表
此表总结了对不同 Texas Instruments C2000 C28x 处理器的支持情况,重点介绍了工具链格式、TMU 支持和快速整数除法功能。为避免兼容性问题,请确保所有文件均符合所选工具链的要求格式。
| 目标 | 硬件支持类型 | Simulink 工具链支持 | TMU 支持 | 快速整数除法 |
|---|---|---|---|---|
| F28P5x | FPU(单精度浮点运算) | EABI | TMU1 | 否 |
| F28P6x | FPU64(双精度浮点) | EABI | TMU1 | 是 |
| F280013x | FPU(单精度浮点运算) | COFF(默认)和 EABI | TMU1 | 否 |
| F280015x | FPU(单精度浮点运算) | COFF(默认)和 EABI | TMU1 | 否 |
| F28003x | FPU(单精度浮点运算) | COFF(默认)和 EABI | TMU0 | 是 |
| F2838x | FPU64(双精度浮点) | EABI | TMU0 | 是 |
| F2837x | FPU(单精度浮点运算) | COFF(默认)和 EABI | TMU0 | 否 |
| F28002x | FPU(单精度浮点运算) | COFF(默认)和 EABI | TMU0 | 是 |
| F28004x | FPU(单精度浮点运算) | COFF(默认)和 EABI | TMU0 | 否 |
| F2807x | FPU(单精度浮点运算) | COFF(默认)和 EABI | TMU0 | 否 |
对于 TI C2000 C29x 处理器,CPU1 和 CPU2 支持 32 位浮点运算,而 CPU3 支持 64 位浮点运算。C29x CPU 可提供增强的处理性能,无需单独的硬件加速器。默认情况下,配置参数中的 Enable TMU 选项处于选定状态,以支持快速数学运算。
在 EABI 格式的单精度 FPU 处理器上管理双精度数据类型
在 C2000 Microcontroller Blockset 中,对于具有单精度浮点单元 (FPU) 的处理器而言,管理双精度数据类型对优化性能和确保与 EABI 标准的兼容性至关重要。
此列表解释了如何使用 EABI 格式在单个 FPU 处理器上管理双精度数据类型。
为了优化模型性能,请将数据类型显式设置为
single,因为double数据类型是默认值。启用 Use data type replacement to override precision of 'double' in generated code,并将 Number of bits for double 设置为
32。
这将启用 Specify custom data type names 参数,并将双精度数据类型替换为替换选项
mwReal32_T,该选项在为 COFF 和 EABI 格式生成的代码中将 typedef 作为float数据类型。
当您将 Number of bits for double 设置为
32位精度时,模型在仿真和代码生成期间的行为有所不同,因为数据类型替换仅适用于代码生成。同样地,当您将 Number of bits for double 设置为
64时,Simulink 会生成替换选项mwReal64_T,该选项在 EABI 生成的代码中定义为double数据类型,在 COFF 格式中定义为long double类型。
将所有 C2000 模块的数据类型设置为
float,您需要 64 位精度的双精度类型。要查找 Simulink 模型中的double数据类型实例,请转到 Configuration Parameters -> Hardware Implementation -> Target hardware resources -> Build options,然后点击 Analyze double data type usage 按钮。
使用 Analyze double data type usage 选项来标识整个模型中双精度数据类型的使用情况。点击 Analyze double data type usage 按钮后,Simulink 将编译整个模型并生成一个 HTML 报告,其中包含模型中使用的双精度数据类型列表。双精度数据类型使用情况报告分为两类:
Blocks with explicitly set double data type:模型中显式设置的所有双精度数据类型的列表。
Blocks with inheriting double data type:由于其他模块中设置的数据类型而继承的所有双精度数据类型的列表。

点击生成的 HTML 报告中的超链接,突出显示模型中的某个部分并修改数据类型。
对于模块中使用的常量(例如常量、饱和度范围等),建议根据所需的数据类型对数值进行转换。例如,使用 single(3) 而不是直接使用 3。
建议在 Configuration Parameters -> Code Generation -> Language standard 下使用 C99 语言标准。这将确保为编译器选项添加
–c99 flag,并允许以 c99 格式生成代码。根据 C99 标准,数学运算将为单精度和双精度格式生成单独的变体,而单精度格式在使用 FPU(单精度浮点)处理器时,在执行时间和内存方面将更加高效。
选择 Enable TMU 参数,以确保所有支持的数学运算都能以更快的速度执行。选择此参数可能会导致结果精度降低,因为浮点模式被放宽了。

另请参阅
C28x-Build Options | 创建模型和生成 C2000 处理器的可执行文件概述 | Texas Instruments C2000 处理器支持的第三方工具