单片机型号STC15F2K60s2

编译环境keil4

系统win7

模式:small

错误:ERROR L107: ADDRESS SPACE OVERFLOW

 

这个错误意思,提示地址超出

keil4 编译提示 ERROR L107: ADDRESS SPACE OVERFLOW

又去看了一遍数据手册

keil4 编译提示 ERROR L107: ADDRESS SPACE OVERFLOW

不应该是两k吗,为啥用了130就超出了

认真看了一下

keil4 编译提示 ERROR L107: ADDRESS SPACE OVERFLOW

2k其实是内部256+内部扩展的1792

内部256又分为,高128,低128,具体可以看下面这张图

keil4 编译提示 ERROR L107: ADDRESS SPACE OVERFLOW

正常情况下定义,编译器都是分配在低128字节,所以应该不超过128就可以

但是实际测试的时候data极限值为129,也可以编译通过,这就很奇怪了

看一下keil连接文件.m51

keil4 编译提示 ERROR L107: ADDRESS SPACE OVERFLOW

豁然开朗,还有一个堆栈。(内部不要使用过多,不然堆栈太小,程序可能会炸)

要想把变量定义在高128,加一个关键字idata就可以了

定义在内部扩展的RAM,加xdata

或者可以修改编译模式

相关文章: