找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10589|回復(fù): 2
收起左側(cè)

*** ERROR L107: ADDRESS SPACE OVERFLOW解決方案

[復(fù)制鏈接]
ID:70976 發(fā)表于 2014-12-25 01:09 | 顯示全部樓層 |閱讀模式


解決方案:

1.右鍵單擊Target選擇“Options for Target'Target1'”就會出來一個框,在memory model中選擇compact:variables in pdata 就可以了。

“Keil Cx51編譯器提供三條編譯模式控制命令:SMALL,COMPACT,LARGE,它們對變量存儲器空間的影響如下。
SMALL:所有變量都被定義在8051單片機(jī)的片內(nèi)RAM中,對這種變量的訪問速度最快。另外,堆棧也必須位于片內(nèi)RAM中,而堆棧的長度是很重要的,實際棧長取決與不同函數(shù)的嵌套深度。采用SMALL編譯模式與定義變量時指定data存儲器類型具有相同效果。

COMPACT:所有變量被定義在分頁尋址的片外XRAM中,每一頁片外XRAM的長度為256字節(jié)。這時對變量的訪問是通過寄存器間接尋址(MOVX @R0,MOVX @R1)進(jìn)行的,變量的低8位地址由R0和R1確定,變量的高8位地址由P2口確定。采用這種模式時,必須適當(dāng)改變配置文件STARTUP.A51中的參數(shù):PDATASTART和PDATALEN;同時還必須對uVision2的“Options選項/BL51 Locator 標(biāo)簽頁/Pdata框”中鍵入合適的地址參數(shù),以確保P2口能輸出所需要的高8位地址。采用COMPACT編譯模式與定義變量時指定pdata存儲器類型具有相同效果。

LARGE:所有變量被定義在片外XRAM中(最大可達(dá)64KB),使用數(shù)據(jù)指針DPTR來間接訪問變量(MOVX @DPTR),這種編譯模式對數(shù)據(jù)訪問的效率最低,而且將增加程序的代碼長度。采用LARGE編譯模式與定義變量時指定xdata存儲器類型具有相同效果!



相關(guān)帖子

回復(fù)

使用道具 舉報

ID:67573 發(fā)表于 2014-12-25 13:58 | 顯示全部樓層
謝謝分享!
回復(fù)

使用道具 舉報

ID:73082 發(fā)表于 2015-2-18 04:11 來自觸屏版 | 顯示全部樓層
應(yīng)該間接尋址(idata,)如at89s52采用直接尋址只能訪問前128個尋址單位,后面128必須使用idata間接尋址,如果使用上述方法,由于變量沒有唄定義在ram中,程序執(zhí)行可能會有問題
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表