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.3 將 C28 和 CLA 遷移到相同的 C29 CPU
- 在 C28+CLA 實現(xiàn)中,CLA 任務(wù)可由硬件或軟件觸發(fā),并且在任務(wù)完成時,系統(tǒng)可能會向 C28 發(fā)送中斷。
- 要在這種情況下實現(xiàn)此目的,對于軟件任務(wù)觸發(fā)器,將通過 PIPE 觸發(fā)軟件中斷以運行所需的 ISR。
- 對于硬件任務(wù)觸發(fā)器,將設(shè)置 C29 CPU 的 PIPE 以從所需的外設(shè)進(jìn)行觸發(fā)。
- 對于任務(wù)完成中斷,通過 PIPE 觸發(fā)軟件中斷(用戶代碼需要寫入 PIPE 寄存器)來運行所需的 ISR。
- 如果 C28+CLA 實現(xiàn)中存在后臺任務(wù),則該任務(wù)可在 C29 CPU 中作為后臺循環(huán)(空閑循環(huán))輕松實現(xiàn)。
- 此場景中的一個關(guān)鍵挑戰(zhàn)是中斷優(yōu)先級分配,因為 C28 ISR 和 CLA 任務(wù)現(xiàn)在都映射到 C29 ISR,需要分配中斷優(yōu)先級。而在 C28+CLA 上,它們在獨立內(nèi)核上獨立運行;在這里,它們在相同的 C29 CPU 上運行。CLA 任務(wù)會一直運行到完成,而不會被其他任務(wù)搶占。如上所述,這可通過將這些任務(wù)分組到同一個 C29 PIPE 中斷組來實現(xiàn)。但是,無法確保 C28 ISR 不會搶占 CLA 任務(wù)。同樣,無法確保 CLA 任務(wù)不會搶占 C28 ISR。因此,在這種情況下,用戶必須從整體上分析 C28 ISR + CLA 任務(wù),并確定適合應(yīng)用的中斷優(yōu)先級。
- 同樣,如果 C28 ISR 是軟件觸發(fā) CLA 任務(wù),并且它們現(xiàn)在駐留在同一 C29 CPU 上,就會產(chǎn)生每個任務(wù)的相對中斷優(yōu)先級問題。如果 CLA 任務(wù)的優(yōu)先級變得更高,它便可搶占 C28 ISR,并從 CLA 端運行和提供預(yù)期的功能。不過,這意味著 C28 ISR 將暫停,從 C28 的角度來看,這可能并非預(yù)期的功能。
- 此外,如果完全相同的事件(如外設(shè))觸發(fā) C28 ISR 以及 CLA 任務(wù),現(xiàn)在它們在同一 C29 CPU 上運行,則用戶可以將它們合并為單個 ISR。
- CLA 寄存器為用戶提供了許多功能,例如能夠知道正在運行哪個任務(wù),以及能夠通過寫入寄存器中的特定位來停止一個任務(wù)。遷移時,由于缺少這些寄存器和對應(yīng)的功能,可能需要進(jìn)行適當(dāng)?shù)脑创a更新。
注: 此處可能并未確定所有極端情況。