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.1 数据类型差异
- 数据类型差异 - 表 3-2 中进行了总结和突出显示:红色表示 CLA-C29 差异,蓝色表示 CLA-C28 差异。
- 共享数据 - 在 C28 和 CLA 之间共享数据(共享结构)时,C28 和 CLA 之间的数据类型差异会产生影响。此处建议的方法是使用通过联合体的填充来求解指针或整数大小差异,如 CLA 软件开发指南中所述。例如,C2000Ware DigitalPower SDK 解决方案中针对 C28 和 CLA 之间共享的枚举(基于 int)使用了联合体。这些枚举定义了所使用的实验室、电路板状态等。由于 C29 器件不包含 CLA,不存在共享结构问题,因此从这个角度来看,上述数据类型差异不是问题。
- 但是,将代码从 CLA 迁移到 C29 时,C29 和 CLA 之间的数据类型差异是相关的。这些问题及其解决方法与 C28-C29 数据类型差异中列出的项类似(请参阅节 2.3.1.6)。
- CLA(16 位)和 C29(32 位)之间存在指针大小差异。
- C28 至 C29 源代码迁移部分介绍了“char”差异。C29 编译器的 c29clang-tidy 工具中关于 char 范围 (c29migration-c28-char-range) 和 char 指针算术运算 (c29migration-c28-types) 的检查器在此处也很有用。
表 3-2 数据类型主要差异
类型 |
C28 |
CLA |
C29 |
ARM |
char |
16 |
16 |
8 |
8 |
short |
16 |
int |
16 |
32 |
32 |
32 |
long |
32 |
long long (COFF) |
64 |
32 |
不适用
|
64 |
long long (EABI) |
64 |
float |
32 |
double (COFF) |
32 |
32 |
不适用 |
64 |
double (EABI) |
64 |
long double (COFF) |
64 |
32 |
不适用 |
64 |
long double (EABI) |
64 |
指针 |
32 |
16 |
32 |
32 |