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参考资料

将 C28 和 CLA 迁移到不同的 C29 CPU

  1. 需要不同的 CCS 工程。
  2. 在 C28+CLA 实现中,CLA 任务可由硬件或软件触发,并且在任务完成时,系统可能会向 C28 发送中断。
  3. 要在这种情况下实现此目的,您需要在两个 C29 CPU 之间使用 IPC。不过,IPC 在任一方向上最多有四个中断,而我们可能有八个 CLA 任务。因此,可在任一方向上使用一个 IPC 中断,并使用命令说明符来指示需要运行的任务或已完成的任务。这需要额外的代码来解析 IPC 中断并触发 ISR。
  4. 因此,对于软件任务触发器,您要将它们映射到 IPC 中断,然后接收 C29 CPU 将运行 IPC ISR,并通过其 PIPE 触发软件中断(通过写入 PIPE 寄存器)来运行所需的 ISR。
  5. 对于硬件任务触发器,将设置 C29 CPU 的 PIPE 以从所需的外设进行触发。
  6. 对于任务完成中断,您需要将其映射到 IPC 中断,然后接收 C29 CPU 将运行 IPC ISR,并通过其 PIPE 触发软件中断来运行所需的 ISR。
  7. 如果 C28+CLA 实现中存在后台任务,则该任务可在 C29 CPU 中作为后台循环(空闲循环)轻松实现。
  8. CLA 寄存器为用户提供了许多功能,例如能够知道正在运行哪个任务,以及能够通过写入寄存器中的特定位来停止一个任务。迁移时,由于缺少这些寄存器和对应的功能,可能需要进行适当的源代码更新。