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