ZHCABI2 January   2022 TMS320F28075 , TMS320F28075-Q1 , TMS320F28076 , TMS320F28232 , TMS320F28232-Q1 , TMS320F28234 , TMS320F28234-Q1 , TMS320F28235 , TMS320F28235-Q1 , TMS320F28332 , TMS320F28333 , TMS320F28334 , TMS320F28335 , TMS320F28335-Q1 , TMS320F28374D , TMS320F28374S , TMS320F28375D , TMS320F28375S , TMS320F28375S-Q1 , TMS320F28376D , TMS320F28376S , TMS320F28377D , TMS320F28377D-EP , TMS320F28377D-Q1 , TMS320F28377S , TMS320F28377S-Q1 , TMS320F28378D , TMS320F28378S , TMS320F28379D , TMS320F28379D-Q1 , TMS320F28379S

 

  1.   TMS320F2833x/2823x 至 TMS320F2837xD/2837xS/2807x 的迁移概述
  2.   商标
  3. 引言
    1. 1.1 缩写词
  4. 中央处理单元(CPU)
  5. 开发工具
    1. 3.1 驱动程序库(Driverlib)
    2. 3.2 嵌入式应用程序二进制接口(EABI)支持
  6. 封装和引脚分配
  7. 工作频率和电源管理
  8. 电源时序
  9. 输入时钟选项
  10. 存储器映射
  11. 闪存和 OTP
    1. 9.1 扇区大小和数量
    2. 9.2 闪存参数
    3. 9.3 闪存编程
    4. 9.4 闪存入口点
    5. 9.5 双代码安全模块(DCSM)和密码位置
    6. 9.6 OTP
  12. 10引导 ROM
    1. 10.1 引导 ROM 保留的 RAM
    2. 10.2 引导模式选择
    3. 10.3 引导加载程序
  13. 11架构增强
    1. 11.1 时钟源和域
    2. 11.2 看门狗计时器
    3. 11.3 外设中断扩展(PIE)
    4. 11.4 锁定保护寄存器
    5. 11.5 通用输入/输出(GPIO)
    6. 11.6 外部中断
    7. 11.7 纵横制(X-BAR)
  14. 12外设
    1. 12.1 新外设
      1. 12.1.1 模拟子系统互连
      2. 12.1.2 比较器子系统(CMPSS)
      3. 12.1.3 控制律加速器(CLA)
    2. 12.2 控制外设
      1. 12.2.1 增强型脉宽调制器(ePWM)
      2. 12.2.2 增强型捕获模块(eCAP)
      3. 12.2.3 增强型正交编码脉冲模块(eQEP)
      4. 12.2.4 Σ-Δ 滤波器模块(SDFM)
    3. 12.3 模拟外设
      1. 12.3.1 模数转换器(ADC)
    4. 12.4 通信外设
      1. 12.4.1 SPI
      2. 12.4.2 SCI
      3. 12.4.3 USB
      4. 12.4.4 I2C
      5. 12.4.5 CAN
  15. 13可配置逻辑块(CLB)
  16. 14器件比较概要
  17. 15参考文献

嵌入式应用程序二进制接口(EABI)支持

F2837xD/S/07x 器件是用于支持通用目标文件格式(COFF)和嵌入式应用程序二进制接口(EABI)的首批 C2000 器件系列之一。有关更多信息,请参阅 https://software-dl.ti.com/C2000/docs/optimization_guide/phase1/index.html#application-binary-interface-abi。EABI 克服了 COFF 的一些限制,其中包括符号调试信息不支持 C/C ++,以及关于最大段数和段名及源文件长度的限制。请注意,EABI 与 COFF 不兼容,因此,两种格式之间无法相互转换。下面简单总结了 EABI 与 COFF 相比的差异。

  • 直接初始化
    • 在 EABI 中,未初始化的数据默认为 0。
    • 在 EABI 中,原始数据初始化是通过链接器生成的压缩副本表完成的。
  • C++ 语言支持
    • C++ 内联函数语义:在 COFF 中,会将内联函数视为静态内联函数,这会导致无法内联的函数或含有静态数据的函数出现问题。在 EABI 中,没有静态”限定符的内联函数具有外部链接。
    • 更好的模板实例化:COFF 使用一种名为晚期模板实例化的方法,而 EABI 使用早期模板实例化方法。晚期模板实例化可能会出现库代码问题,从而导致链接时间较长。早期实例化使用 ELF COMDAT 来保证模板始终得到正确实例化,并且在最终可执行文件中最多存在每个实例化的一个版本。
    • 表驱动的异常处理(TDEH):相比于 COFF,TDEH 对代码性能的影响几乎为零。COFF 使用 setjmp/longjmp 来实现由 EABI 实现的 C++ 异常特性。
  • 由 EABI 实现的特性
    • Location 属性:指定符号在 C 源代码中的运行时地址。
    • Noinit/persistent 属性:指定是否应在 C 自动初始化期间初始化符号。
    • Weak 属性:弱符号定义被强定义取代。在链接时,不需要解析弱符号引用。未解析的弱符号解析为 0。
    • 外部别名:在 COFF 中,如果对 A 的所有调用都可由 B 替代,编译器会使 A 成为 B 的别名。必须在同一个文件中定义 A 和 B。在 EABI 中,编译器会使 A 成为 B 的别名,即使 B 是外部属性。
  • 调用约定
    • COFF 和 EABI 之间的标量调用约定相同。
    • 结构调用约定(EABI):
      • 单字段结构由对应于基础标量类型的值传递/返回。
      • 对于 FPU32,小于 128 位的同质浮点结构将由值传递。
      • 在 R0H-R3H 中传递,然后由值在堆栈上传递。
      • 由值传递的结构也是寄存器分配的候选项。
      • 对于 FPU64,相同的原理适用于 64 位双精度值(R0-R3)。
  • 双精度内存大小
    • 在 EABI 中,双精度是 64 位大小,而在 COFF 中,双精度仍表示为 32 位大小。
    • C/C++ 要求双精度能够表示整数类型,并具有至少 10 个十进制数字,而这实际上需要 64 位双精度值。

表 3-1 总结了 COFF 和 EABI 使用的由编译器生成的段名。

表 3-1 段名
说明 COFF EABI
只读段
Constdata .econst .const
22 位以上的 Constdata .farconst .farconst
代码 .text .text
预主构造函数 .pinit .init_array
异常处理 不适用 .c28xabi.exidx/.c28xabi.extab
读写段
未初始化数据 .ebss .bss
初始化数据 不适用 .data
22 位以上的未初始化数据 .farbss .farbss
22 位以上的初始化数据 不适用 .fardata
.esysmem .sysmem
.stack .stack
CIO 缓冲器 .cio .bss:cio

有关 EABI 和迁移过程的更多信息,请参阅以下参考指南: