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

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager


我目前正在使用具有 4 個 CPU 的 TC297 芯片,但我只使用 CPU0 進行程序處理。

現在我遇到了一個問題。 編譯程序時,我收到一個錯誤:
************************************************************** 錯誤:xxx.elf 部分 '.heap' 不適用於區域 'dsram1'
錯誤:區域 'dsram1' 溢出了 -1024 字節收集 2.exe: 錯誤

ld 返回 1 個退出狀態

製作文件:目標 'xxx.elf' 的 148 個食譜
製作失敗:*** [xxx.elf] 錯誤 1
(xxx 這意味著我的項目的名稱)
**************************************************************

1. 所以我認為這是由程序中的堆疊溢引起的。 我的猜測是正確的嗎?
二.如果我的猜測是正確的,我可以通過增加 SRAM 區域來解決這個問題嗎?
也就是說,將 0x7000 000 更改為 0x601C 3000

maps.png
三. 在哪裡修改 SRAM 的內存分配? 我應該修改配置文件,我可以在哪裡找到它,還是我應該通過 IDE 修改它?

感謝支持我的工程師,祝您最好!

2 回應
Translation_Bot
Community Manager
Community Manager
Community Manager

首先,您應該檢查「.heap」部分的大小,並確定代碼的哪些部分正在使用堆中的內存。 然後,您可以修改連結器腳本 (.lsl) 以增加堆的大小或將其分配到不同的記憶體位置。

0
Translation_Bot
Community Manager
Community Manager
Community Manager

非常感謝您的答案!

先決條
件:我幾乎從未在整個代碼中使用 malloc 函數,並且代碼之前可以正常運行。
現在其他同事已經修改了幾個模塊,但沒有使用 malloc,他們將有新的本地變量和全局變量。

1.我猜這可能會影響 SRAM 內存,並不完全是由於堆的原因。 我猜 HighTec 編譯提示的錯誤不一定是正確的。 也許是因為堆疊空間?

二.所以我認為您對於增加堆積空間是對的。 你能告訴我這是哪個 .lsl 文件,因為有很多 .lsl 我的項目中的文件。我需要如何修改內部內容? 請給我一個例子。

0