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

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

設備:TC387QP, 任務處理, 勞特巴赫

問題解釋:當我使用緩存的 LMU0 RAM(0x90040000--0x9005FFFF)進行數據/BSS 全局變量時,存在兩個問題。

1. 對於 DATA ram,如果我在代碼中定義了具有 C 代碼下面的初始值的數組或結構,並且沒有覆寫數組的指令,但我們發現在正常操作期間無法成功複製數組(通常應在 _c_init_entry 中複製入門 vlaue),並且我確認通過任務生成的複製表完全正確。

C 代碼:揮發性浮動 32 測試記憶體 [15] = {415.8, 415.8, 415.8, 415.8, 415.8, 415.8, 415.8, 415.8, 415.8, 415.8, 415.8, 415.8, 415.8, 415.8, 415.8};

軌跡 32 是手錶:揮發性浮動 32 測試 _ 記憶體 [15] = {415.8, 415.8, 415.8, 415.8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

二.對於 BSS ram,如果我在代碼中定義一個大的結構變量,並且我們遇到一個問題,即在任何重置後,結構的某些元素無法清除為零(例如 wdg 逾時,目標重置中的 trace32 或其他)。 結構的大多數元素都可以清除為零,但總是有一些元素無法清除。

當我們使用它們時,我們是否必須注意緩存內存?

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Cached-LMU0-RAM-initialization-issue/td-p/674748

4 回應
Translation_Bot
Community Manager
Community Manager
Community Manager

您可以提供在緩存 LMU0 RAM 中使用 BSS RAM 和數據 RAM 的代碼嗎? 我打算在我的方面進行測試。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Cached-LMU0-RAM-initialization-issue/m-p/675535

0
Translation_Bot
Community Manager
Community Manager
Community Manager

對不起,我真的無法發布密碼。 但我有更多關於此的信息。 如果我在 _c_init _entry 中添加一個中斷點。當 PC 運行到這裡,並且我禁用緩存,並讓 PC 繼續進行時,我上面提到的問題都會消失。順便說一句,我們確實在 LMU RAM0 中使用過多的 RAM

這就是為什麼我在最後一篇文章中提到了。 我懷疑緩存的 RAM 是否會影響這一點。

Cached.png

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Cached-LMU0-RAM-initialization-issue/m-p/676284

0
Translation_Bot
Community Manager
Community Manager
Community Manager

似乎緩存機制對 RAM 陣列的初始化有影響。 您可以為此問題實現解決方法嗎?

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Cached-LMU0-RAM-initialization-issue/m-p/677399

0
Translation_Bot
Community Manager
Community Manager
Community Manager

@brinkdong 寫道:

設備:TC387QP, 任務處理, 勞特巴赫

問題解釋:當我使用緩存的 LMU0 RAM(0x90040000--0x9005FFFF)進行數據/BSS 全局變量時,存在兩個問題。

1. 對於 DATA ram,如果我在代碼中定義了具有 C 代碼下面的初始值的數組或結構,並且沒有覆寫數組的指令,但我們發現在正常操作期間無法成功複製數組(通常應在 _c_init_entry 中複製入門 vlaue),並且我確認通過任務生成的複製表完全正確。紅色下載

C 代碼:揮發性浮動 32 測試記憶體 [15] = {415.8, 415.8, 415.8, 415.8, 415.8, 415.8, 415.8, 415.8, 415.8, 415.8, 415.8, 415.8, 415.8, 415.8, 415.8};

軌跡 32 是手錶:揮發性浮動 32 測試 _ 記憶體 [15] = {415.8, 415.8, 415.8, 415.8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

二.對於 BSS ram,如果我在代碼中定義一個大的結構變量,並且我們遇到一個問題,即在任何重置後,結構的某些元素無法清除為零(例如 wdg 逾時,目標重置中的 trace32 或其他)。 結構的大多數元素都可以清除為零,但總是有一些元素無法清除。

當我們使用它們時,我們是否必須注意緩存內存?


  1. 對於具有初始值的全局變量(例如數組 Test_Ram),啟動期間的初始化順序至關重要。 確保這些變數的初始化是在啟動序列中的適當階段完成(通常在執行主函數之前)。 驗證連結器檔案,以確認初始化區段是否正確放置在記憶體中。

  2.  

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/Cached-LMU0-RAM-initialization-issue/m-p/677545

0