解决Keil报错error L107: ADDRESS SPACE OVERFLOW问题

项目场景:

请添加图片描述

项目场景:在工作项目上,做一个51内核的单片机,我觉得这个问题平时还是很少会遇到,因为平时学习的开发板,性能都是过剩的,记录一下。


问题描述

提示:这里描述项目中遇到的问题:请添加图片描述

如图:这是写完代码后编译报错的类型,ADDRESS SPACE OVERFLOW直接翻译就是地址空间溢出。
注意看 xdata=2116, code=10598


原因分析:

请添加图片描述

提示:上图,如果不知道自己的芯片的容量,可在keil的工程文件里打开魔法棒Target,1是代码的容量,size 0x8000,也就是32K,2是片外RAM,定义变量的存储在这里。0x800,等于2K。

而我用的单片机片外RAM,也就是xdata的容量只有2K大小,现在编译出来有2216,2216 > 2K,所以编译没有通过。code是代码长度,烧录代码的容量,而我这个单片机有32KB的flash,这个容量还是很充足的。
注意:烧录的容量不是指hex文件大小,单片机里存储的是二进制文件,也就是bin文件的大小。


解决方案:

解决方案:
1,尽量少用全局变量
2,定义的空间,用完了看是否需要释放空间。

例如:我解决的方法是删除多余的全局变量,改动影响不大。
请添加图片描述

结尾

当然,这个情况在学习过程中几乎不会遇到,因为现在学习用的开发板,容量都非常大,性能也很猛,所以遇到这种情况也纯属偶然。

物联沃分享整理
物联沃-IOTWORD物联网 » 解决Keil报错error L107: ADDRESS SPACE OVERFLOW问题

发表评论