2.初始开发

本章概述了在 C2000 MCU 上开始开发时要考虑的各种因素。

2.1.应用程序二进制接口 (ABI)

在 TI 的 C28x 编译器工具 18.12.0.LTS 版本之前,C28x 的唯一 ABI 是基于 COFF 的原始 ABI。

TI 编译器工具的 C2000Ware 版本 2.0 和 18.12.0.LTS 引入了一种名为 C28x EABI 的新 ABI。它基于 ELF 目标文件格式。它源自业界通用模型,包括 IA-64 C++ ABI 和用于 ELF 和动态链接的 System V ABI。ABI 的处理器特定方面(例如数据布局和调用约定)与 COFF ABI 相比基本没有变化,尽管存在一些差异。COFF ABI 和 EABI 不兼容 - 链接到应用程序二进制文件的所有代码都必须遵循相同的 ABI。

TI 在 F2837x 和 F28004x 上支持新的 EABI 和旧的 COFF ABI。建议迁移到 EABI 以在 F2837x 和 F28004x 上进行新软件开发。C2000Ware 中用于 F2838x 和 F28002x 的设备支持软件和库仅适用于 EABI。

EABI 和 COFFABI 之间的主要区别:

  • double 类型为 64 位。当从 COFF ABI 迁移到 EABI 时,double 的大小从 32 位变为 64 位。
  • 符号中没有前导下划线。COFF ABI 会为符号名称添加前导下划线,但 EABI 不会。对符号的汇编文件引用需要经过特殊处理。

其他资源

2.2.Bitfield 与 Driverlib

Bitfield 和 Driverlib 是针对 C2000 MCU 实现硬件抽象层的两种方法。请参阅应用报告使用 C/C++ 对 TMS320x28xx 和 TMS320x28xxx 外设进行编程,了解这些方法的比较。

注释

本章中的所有代码示例都是使用 C28x 编译器版本 18.12.2 LTS 通过 EABI 应用程序二进制接口构建的。