ZHCUCF7
October
2024
F29P589DM-Q1 , F29P589DU-Q1 , TMS320C28341 , TMS320C28342 , TMS320C28343 , TMS320C28343-Q1 , TMS320C28344 , TMS320C28345 , TMS320C28346 , TMS320C28346-Q1
-
1
-
摘要
-
商标
-
1简介
-
2C28 到 C29 的 CPU 迁移
- 2.1
用例
- 2.2
主要差异
- 2.3
源代码迁移
- 2.3.1
C/C++ 源代码
- 2.3.1.1
pragma 和属性
- 2.3.1.2
宏
- 2.3.1.3
内联函数
- 2.3.1.4
内联汇编
- 2.3.1.5
关键字
- 2.3.1.6
数据类型差异
- 2.3.1.7
迁移工具支持
- 2.3.2
汇编语言源代码
- 2.4
工具链迁移
- 2.4.1
编译器
- 2.4.2
链接器
- 2.4.3
CCS 工程迁移
-
3CLA 到 C29 的 CPU 迁移
- 3.1
用例
- 3.2
主要差异
- 3.3
源代码迁移
- 3.3.1
C/C++ 源代码
- 3.3.1.1
数据类型差异
- 3.3.1.2
迁移 CLAmath.h 函数和内联函数
- 3.3.1.3
将 C28 和 CLA 迁移到相同的 C29 CPU
- 3.3.1.4
将 C28 和 CLA 迁移到不同的 C29 CPU
- 3.3.2
汇编语言源代码
- 3.4
工具链迁移
-
4参考资料
3.3.1.4 将 C28 和 CLA 迁移到不同的 C29 CPU
- 需要不同的 CCS 工程。
- 在 C28+CLA 实现中,CLA 任务可由硬件或软件触发,并且在任务完成时,系统可能会向 C28 发送中断。
- 要在这种情况下实现此目的,您需要在两个 C29 CPU 之间使用 IPC。不过,IPC 在任一方向上最多有四个中断,而我们可能有八个 CLA 任务。因此,可在任一方向上使用一个 IPC 中断,并使用命令说明符来指示需要运行的任务或已完成的任务。这需要额外的代码来解析 IPC 中断并触发 ISR。
- 因此,对于软件任务触发器,您要将它们映射到 IPC 中断,然后接收 C29 CPU 将运行 IPC ISR,并通过其 PIPE 触发软件中断(通过写入 PIPE 寄存器)来运行所需的 ISR。
- 对于硬件任务触发器,将设置 C29 CPU 的 PIPE 以从所需的外设进行触发。
- 对于任务完成中断,您需要将其映射到 IPC 中断,然后接收 C29 CPU 将运行 IPC ISR,并通过其 PIPE 触发软件中断来运行所需的 ISR。
- 如果 C28+CLA 实现中存在后台任务,则该任务可在 C29 CPU 中作为后台循环(空闲循环)轻松实现。
- CLA 寄存器为用户提供了许多功能,例如能够知道正在运行哪个任务,以及能够通过写入寄存器中的特定位来停止一个任务。迁移时,由于缺少这些寄存器和对应的功能,可能需要进行适当的源代码更新。