Keil編譯出現“Error: L6406W: No space in execution regions with .ANY selector match Section"的解決辦法

情景:

在編譯Keil工程時,compile編譯能夠通過,但在linking過程中,出現一大串”Error: L6406W: No space in execution regions with .ANY selector match Section“的錯誤。


分析:

這個出現的原因是因爲芯片RAM空間不足,無法執行程序。通常RAM的空間會比較小,ROM空間相對較大。


解決辦法:

兩個思路,一個是擴大RAM,二是減少需要存在RAM裏的內容:

1. 嘗試修改”Target Options“中右側RAM的Size,但這個要先查看芯片文檔,找到文檔中描述的RAM大小,把Size調成最大值。

但是我的這個工程還是不行,看來是預存的數據量太大了。


2. 如果第一種方法還是不行,那就只能嘗試把一些數據類的變量定義爲靜態,這樣就可以利用ROM的存儲空間了。找到工程中存儲數據的部分,發現是大量的float數組。這種情況會佔用大量的空間,所以要在float聲明的前面加一個”const“,轉換爲靜態變量。

這樣我的就可以通過了,成功生成了hex文件。


3. 如果第二種方法還是不行,那就只能修改代碼的數據結構了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章