ZHCUCF7
October
2024
TMS320C28341 , TMS320C28342 , TMS320C28343 , TMS320C28343-Q1 , TMS320C28344 , TMS320C28345 , TMS320C28346 , TMS320C28346-Q1
-
1
-
摘要
-
商標(biāo)
-
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
內(nèi)聯(lián)函數(shù)
- 2.3.1.4
內(nèi)聯(lián)匯編
- 2.3.1.5
關(guān)鍵字
- 2.3.1.6
數(shù)據(jù)類型差異
- 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
數(shù)據(jù)類型差異
- 3.3.1.2
遷移 CLAmath.h 函數(shù)和內(nèi)聯(lián)函數(shù)
- 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 數(shù)據(jù)類型差異
- 數(shù)據(jù)類型差異 - 表 3-2 中進行了總結(jié)和突出顯示:紅色表示 CLA-C29 差異,藍色表示 CLA-C28 差異。
- 共享數(shù)據(jù) - 在 C28 和 CLA 之間共享數(shù)據(jù)(共享結(jié)構(gòu))時,C28 和 CLA 之間的數(shù)據(jù)類型差異會產(chǎn)生影響。此處建議的方法是使用通過聯(lián)合體的填充來求解指針或整數(shù)大小差異,如 CLA 軟件開發(fā)指南中所述。例如,C2000Ware DigitalPower SDK 解決方案中針對 C28 和 CLA 之間共享的枚舉(基于 int)使用了聯(lián)合體。這些枚舉定義了所使用的實驗室、電路板狀態(tài)等。由于 C29 器件不包含 CLA,不存在共享結(jié)構(gòu)問題,因此從這個角度來看,上述數(shù)據(jù)類型差異不是問題。
- 但是,將代碼從 CLA 遷移到 C29 時,C29 和 CLA 之間的數(shù)據(jù)類型差異是相關(guān)的。這些問題及其解決方法與 C28-C29 數(shù)據(jù)類型差異中列出的項類似(請參閱節(jié) 2.3.1.6)。
- CLA(16 位)和 C29(32 位)之間存在指針大小差異。
- C28 至 C29 源代碼遷移部分介紹了“char”差異。C29 編譯器的 c29clang-tidy 工具中關(guān)于 char 范圍 (c29migration-c28-char-range) 和 char 指針?biāo)阈g(shù)運算 (c29migration-c28-types) 的檢查器在此處也很有用。
表 3-2 數(shù)據(jù)類型主要差異
類型 |
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 |