ERROR L107: ADDRESS SPACE OVERFLOW keil錯誤的解決方法

qingfeng_96發表於2018-10-31

今天遇到一個keil問題,編譯出現下面提示:最後完美解決,把方法分享給51hei論壇的朋友們

*** ERROR L107: ADDRESS SPACE OVERFLOW

SPACE: DATA

SEGMENT: ?DT?_WRITEONECHAR?DS18B20

LENGTH: 0002H

在百度上查了一些資料,說法不一:

       1、微控制器的RAM 不夠,但變數太多,所以刪掉一些不重要的變數就ok了.
       2、KEIL沒有註冊,只能編譯2K的

   錯誤是記憶體空間溢位,可以改變KEIL的編譯的模式,改為Large模式來達到編譯成功。一般 KEIL在small 模式。small 模式下未指儲存型別的變數預設為data型,即直接定址,只能訪問低 128 個位元組,但這 128 個位元組也不是全為你程式所有,暫存器 R0-R7必須對映到低RAM,要佔去 8 個位元組,如果使用寄存組切換,佔用的更多。所以可以使用 data 區最大為 120 位元組,超出 120 個位元組則必須用 idata 顯示的指定為間接定址,另外堆疊至少要佔用一個位元組,所以你最多能使用 127 上位元組。


  如果以上辦法都沒能解決,最後想了一個辦法,發現是變數太多的緣故,刪除了幾個不重要的變數後完美解決了 ERROR L107: ADDRESS SPACE OVERFLOW的問題.

 

轉載——http://www.51hei.com/bbs/dpj-19920-1.html

相關文章