2021-08-25

关于Keil中error:ADDRESS SPACE OVERFLOWTOC的解决方法

*** ERROR L107: ADDRESS SPACE OVERFLOW
SPACE: DATA
SEGMENT: ?DT?_UARTRXMONITOR?UART
LENGTH: 0001H
*** ERROR L107: ADDRESS SPACE OVERFLOW
SPACE: DATA
SEGMENT: ?DT?UARTDRIVER?UART
LENGTH: 0001H
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
SYMBOL: _UARTACTION
MODULE: Uart.obj (UART)
*** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
SYMBOL: CNTRXD
SEGMENT: ?DT?UART
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL: _UARTACTION
MODULE: Uart.obj (UART)
ADDRESS: 11B0H
Program Size: data=166.3 xdata=136 code=4739
Target not created

这种问题一般是属于data空间不够用,解决方法有以下两种,前两种主要总结网络的解决方法,其中第二种是我所遇到这种情况做出简洁一些的解决方法。

一、更改Memory Model

在keil中点击魔法棒(即Target1右边第一个图标)
然后在Memory Model上面选择除DATA以外的任意一个
然而这种做法又会带来一个新的问题:降低程序的运行速度,而code代码也会加大。因为一个局部变量被存放在xdata空间,汇编语言访问xdata空间代码大小要比访问data空间的代码大,变量一旦很多,程序的代码会逐渐增大;

二、优化代码

根据自己要求设置变量的空间。在运行速度和代码大小之间取得适合自己的情况。然后也可以在魔法棒中点击C51去设置优化等级让软件帮你优化,不过一般来说优化等级默认是8,最大等级是9.虽然不一定有用,不过一旦遇到可以用这种方法节省一下时间。
在魔法棒中点击C51,然后在level中选择优化等级即可
另外这里设置优化等级其实也适用于debug的时候。在大家使用debug的时候可能会遇到无法设置断点的情况,这是因为keil这个软件将大家的代码进行了优化,这个时候大家可以按照上面的方法降低优化等级即可。但选择的优化的等级不要过低,不然就会出现上面data不够用的情况。

这是我参考网上这种错误的解决方法的网址,大家如果有什么看不明白的地方可以打开链接参考一下。
http://blog.sina.com.cn/s/blog_69d693150101d847.html#commonComment
最后,这是我第一次写贴子,如果写的不好请大家轻点喷。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值