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.2 遷移 CLAmath.h 函數(shù)和內(nèi)聯(lián)函數(shù)
- CLA 編譯器不支持 math.h。我們使用了一個(gè)單獨(dú)的文件 CLAmath.h,其中包含對 C2000Ware CLAmath 庫中函數(shù)/變量的外部引用。這些是用于特定操作(trig、div、sqrt、isqrt、exp、log)的手動(dòng)優(yōu)化 CLA 匯編例程。它還包含可將代碼從 C28 移植到 CLA 的函數(shù)重新定義/映射,例如:
- 將特定的 math.h 函數(shù)和 TMU 內(nèi)聯(lián)函數(shù)映射到上述 CLA 數(shù)學(xué)庫函數(shù)。例如,如果 C28 代碼包含 __cos(對應(yīng)于 TMU 指令)或 cosf,則它將在不進(jìn)行任何更新的情況下遷移到 CLA,因?yàn)?CLAmath.h 將 __cos 和 cosf 映射到 CLAcos(在 CLAMath 庫中)或 CLAcos_inline(在 CLAmath.h 中)。
- 因此,如果用戶 CLA 代碼包含 __cos,那么遷移到 C29 的過程與將 C28 內(nèi)聯(lián)函數(shù)遷移到 C29 的過程類似,如 C28-C29 源代碼遷移部分所述。
- C29 編譯器有一個(gè)名為 c29clang-tidy 的工具,用于檢查 C28 內(nèi)聯(lián)函數(shù)的使用情況并提供替代方案建議(如有),此處對該工具進(jìn)行了討論(在 c29migration-c28-builtins 下)。該工具在這里也適用。
- 如果它包含 cosf,則遷移到 C29 不需要進(jìn)行任何更改。
- 但如果它包含 CLAcos 或 CLAcos_inline,則用戶需要將所有這些調(diào)用更改為 cosf。我們計(jì)劃了一個(gè)映射頭文件來幫助遷移 CLAMath 函數(shù)。
- 將特定的 math.h 函數(shù)和 C28+FPU 內(nèi)聯(lián)函數(shù)映射到 CLA 內(nèi)聯(lián)函數(shù)。例如,如果 C28 代碼包含 __fmax(對應(yīng)于 FPU 指令)或 fmaxf,則它將在不進(jìn)行任何更新的情況下遷移到 CLA,因?yàn)?CLAmath.h 將 __fmax 和 fmaxf 映射到 __mmaxf32(CLA 內(nèi)聯(lián)函數(shù))。
- 因此,如果用戶 CLA 代碼包含 __fmax,那么遷移到 C29 的過程與將 C28 內(nèi)聯(lián)函數(shù)遷移到 C29 的過程類似,如 C28-C29 源代碼遷移部分所述。
- C29 編譯器有一個(gè)名為 c29clang-tidy 的工具,用于檢查 C28 內(nèi)聯(lián)函數(shù)的使用情況并提供替代方案建議(如有),此處對該工具進(jìn)行了討論(在 c29migration-c28-builtins 下)。該工具在這里也適用。
- 如果它包含 fmaxf,則遷移到 C29 不需要進(jìn)行任何更改。
- 但如果它包含 __mmaxf32,則用戶需要將所有這些調(diào)用更改為 fmaxf。計(jì)劃使用 c29clang-tidy 擴(kuò)展來檢查 CLA 內(nèi)聯(lián)函數(shù)。
- 如果用戶代碼包含的 CLA 內(nèi)聯(lián)函數(shù)不映射到對應(yīng)的 C28 內(nèi)聯(lián)函數(shù)(例如 __mgeq、__mgequ、__mgt、__mgtu、__mleq、__mlequ、__mlt、__mltu、__mdebugstop),則需要手動(dòng)更新用戶代碼來修復(fù)這些函數(shù)。計(jì)劃使用 c29clang-tidy 擴(kuò)展來檢查 CLA 內(nèi)聯(lián)函數(shù)。