查詢快取問題

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,

現在我需要在 TC397 上運行多核程序,並且我正在在每個核心上使用 CAN 傳輸。 我遇到一個令人困惑的現象:當我將 CPU0 的緩存設置為繞過(禁用緩存)時,CPU1 和 CPU2 的 CAN 消息無法正常發送。 CAN 函數與閃存的緩存有關嗎? 我該怎麼辦來解決這個問題?

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Inquire-about-cache-issues/td-p/680981

1 解決方案
Translation_Bot
Community Manager
Community Manager
Community Manager

@Anony

根據您的說法,該軟體從多核心方面來看是不合理的,因為它違反了設計軟體架構的免干擾(FFI)原則,您可以參考應用程式中的7.6多核心方面獲得更詳細的資訊筆記
BR,
傑瑞米

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Inquire-about-cache-issues/m-p/689178

在原始文章中檢視解決方案

0
9 回應
Translation_Bot
Community Manager
Community Manager
Community Manager

@Anony 在
分享一些建議之前,我想知道軟件架構,否則,我不知道這些核心以及 CAN 模塊之間的依賴性。
布爾,
傑里米

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Inquire-about-cache-issues/m-p/681156

0
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,

謝謝。我測試了使用 iLD 軟件架構的官方 CAN 通信例程。 我將 CAN 發送功能放在 6 個 CPU 中進行消息發送。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Inquire-about-cache-issues/m-p/681350

0
Translation_Bot
Community Manager
Community Manager
Community Manager

@Anony

對不起遲到回覆。
您是否意味著每個獨立的核心都使用特定的 CAN 模塊發送消息框,換句話說,它們彼此獨立並且工作良好,但是,根據您的測試結果,CPU0 的緩存功能干擾 CPU1 和 CPU2,是對嗎?
我想知道您是否可以上傳您的DEMO_5QR0680AG_42W1 。
布爾,
傑里米

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Inquire-about-cache-issues/m-p/684733

0
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,

謝謝。稍後,我將組織我的項目並上傳。我在 CPU0 中初始化了 CAN 模塊,然後使用 CAN1 Node0 在 CPU0,CPU1 和 CPU2 中同時發送 CAN 消息(使用不同的 Buff)。 我禁用了 CPU0 的緩存(緩存繞過),導致 CPU1 和 CPU2 無法運行。

此外,我在使用 QSPI 時遇到類似的問題。 我將 QSPI1 的初始化和讀寫函數放入 CPU4 核心中,然後在 CPU0 中調用 QSPI1 的讀寫函數。 CPU0 無法工作。

我想確認是否可以在多核環境中直接使用周邊設備? 還是應該有協調機制?

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Inquire-about-cache-issues/m-p/684805

0
Translation_Bot
Community Manager
Community Manager
Community Manager

@Anony,
我有疑問,需要您澄清它們。
1)所有 CPU0~2 同時通過 CAN1 note0 發送 CAN 消息,對嗎?
2)關於第二個問題,我對下面的句子來說不清楚,你能再解釋一下嗎?
一般而言,每個 CPU 都最好運作,避免影響其他 CPU,進一步將不同的周邊來源指派給專用 CPU,並防止多個 CPU 同時訪問周邊設備。
布爾,
傑里米

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Inquire-about-cache-issues/m-p/685540

0
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,

謝謝

1)是的。所有 CPU0~2 同時通過 CAN1 note0 發送 CAN 消息。

2)讓我再次解釋我的使用情況:QSP1 使用中斷模式,中斷觸發由 CPU4 處理。 QSPI1 的讀寫函數放置在 CPU4 的 While(1)函數中,而我在 CPU0 的 While(1)中寫代碼來調用 QSPI1 的讀寫函數。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Inquire-about-cache-issues/m-p/686107

0
Translation_Bot
Community Manager
Community Manager
Community Manager

@Anony

根據您的說法,該軟體從多核心方面來看是不合理的,因為它違反了設計軟體架構的免干擾(FFI)原則,您可以參考應用程式中的7.6多核心方面獲得更詳細的資訊筆記
BR,
傑瑞米

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Inquire-about-cache-issues/m-p/689178

0
Translation_Bot
Community Manager
Community Manager
Community Manager

將 CPU0 快取設定為繞過時,您在 CPU1 和 CPU2 上的 CAN 訊息遇到的問題與 Flash 快取並不直接相關。 TriCore™架構(包括 TC397)具有獨立的指令和資料快取。資料快取可以針對每個核心設定,如果停用 CPU0 的資料快取,可能會影響整個系統快取的一致性,並在其他核心上導致 CAN 傳輸問題。

 

在多核心系統中,快取一致性對於正確的資料共用和核心之間的通訊至關重要。 當您停用 CPU0 的資料快取時,可能會導致共用資料中的不一致性,影響其他核心上 CAN 傳輸的正確運作。

 

若要解決此問題,您可以嘗試以下操作:

 

1.在所有核心上啟用資料快取,包括 CPU0。 這將有助於維持所有核心的快取一致性,並最大限度地減少資料不一致的機會。

二.如果在所有核心上啟用資料快取並非一個選項,或仍然造成問題,請考慮使用快取鎖定或快取固定技術。 快取鎖定可讓您鎖定特定的快取行,確保它們保留在快取中,而且不會被驅除。 這可以幫助維持核心之間的資料一致性。 但是,這種方法可能會產生效能影響,因為它可能會限制快取的有效性。

三.調查您的多核心設定中是否存在快取一致性通訊協定問題。 確定快取一致性通訊協定已正確設定並按預期運作。

4. 檢查 CAN EVAL_BDPS_DRIVER實現,確保其正確處理多核心通訊。EVAL_BDPS_DRIVER設計可能無法正確處理快取旁路場景或多核心通信,從而導致觀察到的問題。

 

總而言之,您遇到的問題可能與快取一致性和多核心通訊有關。 在所有核心上啟用資料快取、使用快取鎖定技術或研究快取一致性協定和 CAN EVAL_BDPS_DRIVER實作可以幫助解決問題。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Inquire-about-cache-issues/m-p/681411

0
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,

謝謝。請問在哪裡可以找到有關快取一致性協定和 CAN EVAL_BDPS_DRIVER的參考資料?

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Inquire-about-cache-issues/m-p/683182

0