找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 80394|回复: 20
打印 上一主题 下一主题
收起左侧

*** ERROR L107: ADDRESS SPACE OVERFLOW keil错误的解决方法

  [复制链接]
跳转到指定楼层
楼主
今天遇到一个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的问题.

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶4 踩
回复

使用道具 举报

来自 2#
ID:367145 发表于 2018-7-24 12:11 | 只看该作者
我就是这个问题,程序编译没有问题,是正确的。可就是不能产生.hex文件


Rebuild target 'Target 1'
assembling STARTUP.A51...
compiling Text1.c...
linking...
*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   CODE   
    SEGMENT: ?PR?SHUTTER_CLOCK?TEXT1
    LENGTH:  02E7H
*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   CODE   
    SEGMENT: ?PR?KEY_SCAN?TEXT1
    LENGTH:  0286H

就是这种问题一大堆
回复

使用道具 举报

来自 3#
ID:330957 发表于 2018-9-27 15:07 | 只看该作者
我遇到了这个问题后,我发现是RAM不够,一般的话。有data、idata、pdata以及xdata。data的话,就是低128(片内)字节;idata的话,就是256个(片内)字节。起始data就是idata的一部分。pdata以及xdata是片外RAM的,那就得看单片机的手册进行操作。例如STC12C5A60S2的话,要用内部扩展的话,是要用到xdata的,即unsigned char xdata a[256],那么这就去了256个字节了。内部扩张的。
也就是说,当你编译后,发现data已经是大于128了,同时伴随着报错。那你就得使用xdata或者pdata了。

评分

参与人数 1黑币 +60 收起 理由
admin + 60 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:43559 发表于 2015-3-20 18:15 | 只看该作者
遇到同样问题。感谢分享。
回复

使用道具 举报

5#
ID:43559 发表于 2015-3-20 19:43 | 只看该作者
     选择Large模式,编译是通过了。可是程序不好使了。生成的HEX文件烧录进单片机也不干活了。又试了下选择Compact模式编译,一样不干活。只有Small模式的hex文件好用。
这个谁懂?
回复

使用道具 举报

6#
ID:88625 发表于 2015-8-20 09:41 | 只看该作者
同样问题,完美解决!谢谢楼主!!特地注册来回复
回复

使用道具 举报

7#
ID:88990 发表于 2015-8-28 09:02 | 只看该作者
mybigapple 发表于 2015-3-20 19:43
选择Large模式,编译是通过了。可是程序不好使了。生成的HEX文件烧录进单片机也不干活了。又试了下选 ...

large模式就是默认将所有变量都存于外部RAM,small模式是在内部ram。
回复

使用道具 举报

8#
ID:95180 发表于 2015-11-9 16:23 | 只看该作者
mybigapple 发表于 2015-3-20 19:43
选择Large模式,编译是通过了。可是程序不好使了。生成的HEX文件烧录进单片机也不干活了。又试了下选 ...

对,我也是遇到这样的问题了,
回复

使用道具 举报

9#
ID:110050 发表于 2016-5-14 13:38 | 只看该作者
楼主 棒棒哒
回复

使用道具 举报

10#
ID:121841 发表于 2016-5-26 21:38 | 只看该作者
谢谢楼主!!!
回复

使用道具 举报

11#
ID:104845 发表于 2016-6-19 09:53 来自手机 | 只看该作者
改成large,连仿真时候也出错,所以还是查找问题吧
回复

使用道具 举报

12#
ID:108662 发表于 2016-11-5 22:25 | 只看该作者
谢谢楼主提供的方法
回复

使用道具 举报

13#
ID:94867 发表于 2018-4-16 19:37 | 只看该作者
是的,同一楼所说
回复

使用道具 举报

14#
ID:339025 发表于 2018-5-27 02:07 | 只看该作者
厉害了,我遇到了
回复

使用道具 举报

15#
ID:372246 发表于 2018-7-16 03:06 | 只看该作者
谢谢楼主 另外功能没实现的可能是程序错误 多找找吧
回复

使用道具 举报

16#
ID:498649 发表于 2019-5-23 19:12 | 只看该作者
感谢楼主,问题解决啦
回复

使用道具 举报

17#
ID:720035 发表于 2020-4-1 10:32 | 只看该作者
受用了  谢谢楼主
回复

使用道具 举报

18#
ID:731626 发表于 2020-4-17 20:01 | 只看该作者
很不错,解决问题了,适用于稍微添加了一点变量时就突然报错的情况
回复

使用道具 举报

19#
ID:446775 发表于 2020-6-19 11:00 | 只看该作者
把变量定义为pdata后,这种办法是针对于变量较少的情况
回复

使用道具 举报

20#
ID:976892 发表于 2021-11-24 21:21 | 只看该作者
mybigapple 发表于 2015-3-20 19:43
选择Large模式,编译是通过了。可是程序不好使了。生成的HEX文件烧录进单片机也不干活了。又试了下选 ...

请问这个问题解决了吗?
回复

使用道具 举报

21#
ID:1013070 发表于 2022-4-3 14:51 | 只看该作者
解决了,谢谢您!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表