1、 文檔目標(biāo)
記錄Error編號(hào)為L(zhǎng)6220E的Link錯(cuò)誤并給予解決方案,供相關(guān)同事參考解決此類問題。
2、 問題場(chǎng)景
客戶在使用STM32F1的項(xiàng)目編譯時(shí)遇到下列報(bào)錯(cuò)Error: L6220E: Load region LR_IROM1 size(65552 bytes)。

圖2-1
3、軟硬件環(huán)境
1)、軟件版本:MDK5.38
2)、電腦環(huán)境:Windows 11
3)、外設(shè)硬件:無
4、解決方法
1)、原因1:分配給此負(fù)載區(qū)域的數(shù)據(jù)過多。一個(gè)加載區(qū)域可以由多個(gè)執(zhí)行區(qū)域組成,這些執(zhí)行區(qū)域包含一個(gè)或多個(gè) RO、RW、XO 或 ZI 數(shù)據(jù)部分
解決方案1.1:目標(biāo)設(shè)備參考手冊(cè)中的內(nèi)存映射詳細(xì)信息,查看是否有可能增加為此負(fù)載區(qū)域定義的最大允許大小,例如,特定內(nèi)部閃存或 RAM 內(nèi)存區(qū)域中仍有剩余空間。如果是,請(qǐng)?jiān)?uVision 的"Options for Target - Target"”中修改如下圖4-1所示或您自己的散點(diǎn)文件中增加為此加載區(qū)域定義的大小。

圖4-1
解決方案1.2:檢查 uVision 自動(dòng)生成的鏈接器分散文件或您自己的分散文件,看看是否可以將此特定加載區(qū)域的某些執(zhí)行區(qū)域的分配更改為另一個(gè)加載區(qū)域
解決方案1.3:提高代碼的優(yōu)化等級(jí),將Arm 編譯器優(yōu)化級(jí)別更改為 -O3、-Oz 或 -Omin,以便 Arm 編譯器生成較小的代碼大小,在某些情況下可能會(huì)解決此鏈接器錯(cuò)誤。
2)、原因2:如果 .在此負(fù)載區(qū)域中使用/分配任何部分,具體取決于算法用于填充此類 .任何部分,鏈接器生成的內(nèi)容(如填充物和貼面)都可能過度填充該區(qū)域,從而導(dǎo)致此鏈接器錯(cuò)誤 L6220E。
解決方案 2.1:使用--any_contingencylinker 選項(xiàng),以防止鏈接器將區(qū)域填充到最大值。
解決方案 2.2:使用執(zhí)行區(qū)域?qū)傩?a target="_blank">ANY_SIZE max_size指定 Armlink 可以用未分配的部分填充的區(qū)域中的最大大小。
3)、原因3:如果某些數(shù)據(jù)故意放置在特定地址/位置(靠近此特定加載區(qū)域的末尾),則在某些情況下可能會(huì)導(dǎo)致此鏈接器錯(cuò)誤 L6220E,本文對(duì)此進(jìn)行了介紹ARMLINK:L6220E ...超出限制,如果將數(shù)據(jù)放在閃存末尾
注:原因2與原因3暫未遇到,均為原因1所導(dǎo)致的錯(cuò)誤,檢查內(nèi)存分配大小即可解決,提高優(yōu)化等級(jí)也可行。
以上參考原廠說明鏈接:錯(cuò)誤:L6220E:加載區(qū)域 xxx 大?。▁xx 字節(jié))超出限制(xxx 字節(jié)) (arm.com)

首頁 > 資源中心 > FAQ
