标题: ERROR L107: ADDRESS SPACE OVERFLOW keil编译单片机程序错误 [打印本页]

作者: xujing    时间: 2017-4-22 10:35
标题: ERROR L107: ADDRESS SPACE OVERFLOW keil编译单片机程序错误
keil编译提示错误:ERROR L107: ADDRESS SPACE OVERFLOW
我用的是STC89c52的芯片 但我感觉程序也没多大啊  我实验了一下,我原本定义了四个char 型数组 去掉一个再编译就没问题 不去掉就显示如图那样 ,这个芯片我查了官方的手册,显示是8k flash 523字节的ram 感觉应该不会超出? 就多了一个char 型数组就超出了吗?而且无论这个数组是全局变量还是局部变量都编译不通过,我按网上说的是512字节的ram空间不够了然后 memory model里选择large variables in xdata  可以编译 但下载后没反应
作者: xujing    时间: 2017-4-22 13:20
我知道怎么解决了
作者: admin    时间: 2017-4-22 15:36
xujing 发表于 2017-4-22 13:20
我知道怎么解决了

楼主能分享下怎么解决的吗?
作者: xujing    时间: 2017-4-22 16:52
admin 发表于 2017-4-22 15:36
楼主能分享下怎么解决的吗?

这是编译成功的 Program Size: data=107.1 xdata=0 code=2156
这是编译不成功的 Program Size: data=125.1 xdata=0 code=2176
我这个芯片手册说是512字节的ram,我的keil 4 中默认设置small:variables in DATA的
默认定义的变量都存储在直接寻址区也就是前128字节,我按网上说的设置成large:variables in XDATA,程序可以编译,但下载后没反应,所以只能删掉一个数组了。我之前找到可以在定义的变量的前面加idata指定放在间接寻址区,我下课回去再试试 。

作者: fefen0    时间: 2017-4-22 17:03
增加idata 即可。
作者: fefen0    时间: 2017-4-22 17:05
其实哈有一个办法,增加官方的元件库,也可以解决。
作者: xujing    时间: 2017-4-22 17:13
fefen0 发表于 2017-4-22 17:05
其实哈有一个办法,增加官方的元件库,也可以解决。

我加了stc的芯片 编译结果还是这样 我现在有点怀疑官方手册上的512字节ram是怎么分配的
作者: fefen0    时间: 2017-4-22 17:53
xujing 发表于 2017-4-22 17:13
我加了stc的芯片 编译结果还是这样 我现在有点怀疑官方手册上的512字节ram是怎么分配的

还要看你的KEIL版本。
作者: 越快乐越堕落    时间: 2017-7-3 21:02
编译时选的型号问题,换一个容量大的单片机就可以解决。
作者: jhy123    时间: 2017-7-4 20:38
看你的KEIL版本




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1