ZHCUCF7 October   2024 TMS320C28341 , TMS320C28342 , TMS320C28343 , TMS320C28343-Q1 , TMS320C28344 , TMS320C28345 , TMS320C28346 , TMS320C28346-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
  5. 2C28 到 C29 的 CPU 迁移
    1. 2.1 用例
    2. 2.2 主要差异
    3. 2.3 源代码迁移
      1. 2.3.1 C/C++ 源代码
        1. 2.3.1.1 pragma 和属性
        2. 2.3.1.2
        3. 2.3.1.3 内联函数
        4. 2.3.1.4 内联汇编
        5. 2.3.1.5 关键字
        6. 2.3.1.6 数据类型差异
        7. 2.3.1.7 迁移工具支持
      2. 2.3.2 汇编语言源代码
    4. 2.4 工具链迁移
      1. 2.4.1 编译器
      2. 2.4.2 链接器
      3. 2.4.3 CCS 工程迁移
  6. 3CLA 到 C29 的 CPU 迁移
    1. 3.1 用例
    2. 3.2 主要差异
    3. 3.3 源代码迁移
      1. 3.3.1 C/C++ 源代码
        1. 3.3.1.1 数据类型差异
        2. 3.3.1.2 迁移 CLAmath.h 函数和内联函数
        3. 3.3.1.3 将 C28 和 CLA 迁移到相同的 C29 CPU
        4. 3.3.1.4 将 C28 和 CLA 迁移到不同的 C29 CPU
      2. 3.3.2 汇编语言源代码
    4. 3.4 工具链迁移
  7. 4参考资料

C/C++ 源代码

考虑以下事项有助于更好地理解一些关键问题

  • 现有的 C28+CLA 开发,以及如何开发系统代码以在 C28 CPU 和 CLA 上运行。
  • 是与 C28 代码迁移到同一 C29 CPU,还是迁移到不同的 C29 CPU。两种方案各有优势和挑战。
  1. 从 CLA 迁移到 C29 时:
    1. 需要将 .cla 文件转换为 .c 文件
    2. CLA 任务需要映射到 C29 CPU 上的中断。
      1. 如果可能,请使用 RTINT 而不是 INT 来保存硬件上下文并实现出色的性能
      2. 由于 CLA 任务会运行至完成,而不会被抢占,因此为了实现类似的功能,可将中断分配到一个组中。给定组内的中断不会抢占或嵌套进该组内的其他中断。有关更多详细信息,请参阅 F29x 器件特定技术参考手册中的 PIPE 一章。
      3. CLA 后台任务是可中断的,所以如果该任务已启用,它应位于比其余 CLA 任务相对应的组更低的嵌套组中。用户可以考虑的另一个选项是将后台任务功能移至 main() 中的空闲循环。
  2. 将消除 LSRAM 中的代码和数据放置约束。对于 CLA,代码和数据都必须驻留在 LSRAM 中。在 C29 器件上,可以迁移 CLA 代码以在 LPAx RAM 上运行,并且数据可以驻留在 LDAx RAM 中。
  3. CLA 编译器具有 C 语言的标准限制。TMS320C28x 优化 C/C++ 编译器 v22.6.0.LTS 用户指南 的编译器说明中提到了这些限制。例如,不支持定义和初始化全局/静态数据。不支持使用函数指针。当移至 C29 时,将会解除这些限制。
  4. CLA 编译器支持 C28 pragma 和属性的子集。从 CLA 移植到 C29 时,需要解决这些问题。
  5. 关键字 - 除了 C28 编译器支持的 2 个关键字(far 和 ioport)之外,CLA 编译器支持其他所有关键字。
  6. 有关更多信息,请参阅编译器指南中讨论迁移 CLA 源代码的部分