C51 WARNING L6: XDATA SPACE MEMORY OVERLAP

简介:
最近在公司写个小程序,用C51,这个东东可是以前没有用过,不过都是C,问题倒还是不大,就是需要注意一下C51的特殊语法就好了。

话说这一天编译出现了下面的警告信息:

WARNING L6: XDATA SPACE MEMORY OVERLAP

虽说警告信息不影响运行,但是放在那里总是不爽,而且是个隐患。于是请教了一下公司同事,把这个问题给解决了。

从字面上的意思来看,这个警告信息说的是xdata空间的内存被覆盖了。C51对于片外变量,可以使用xdata关键字来标识,对于这些变量的操作,当然要比片内变量要慢一点,但是胜在空间比内部变量的空间要大得多,所以在大多数情况下都是使用xdata变量空间的.

那么xdata空间的内存被覆盖到底是什么意思呢,原来是C51在定义xdata区域变量的时候,可以使用关键字"_at_"来直接定义某个变量的地址,这一般是用来定义硬件地址的。这样看来,这个警告信息的意思就比较明确了,就是编译器发现两个被指定了地址的变量使用了同一个地址空间。

譬如我的错误就是定义了一个变量,其地址在0x8000,这是一个数组,长度为16,然后又定义了一个变量,其地址在0x800A,这下明白了吧,第一个变量的起始地址是0x8000,长度16,结束地址就是0x800F,正好包括了0x800A这个地址,所以导致上述的警告信息。

既然知道了原因,解决起来就简单了,只要修改变量的地址,使之不发生冲突就好了。





本文转自 tywali 51CTO博客,原文链接:http://blog.51cto.com/lancelot/200021,如需转载请自行联系原作者
目录
相关文章
HALCON error #1302: Wrong value of control parameter: 2 in operator affine_trans_region
HALCON error #1302: Wrong value of control parameter: 2 in operator affine_trans_region
|
6月前
|
算法 C# C++
HALCON error #1201: Wrong type of control parameter: 1 in operator threshold
HALCON error #1201: Wrong type of control parameter: 1 in operator threshold
|
编译器
relocation value does not fit in 26 bits (offset: 0x10, type: 1)
relocation value does not fit in 26 bits (offset: 0x10, type: 1)
144 0
|
Python
解决办法:RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96
解决办法:RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96
136 0
成功解决ValueError: numpy.ufunc size changed, may indicate binary incompatibility. Expected 216 from C h
成功解决ValueError: numpy.ufunc size changed, may indicate binary incompatibility. Expected 216 from C h
成功解决ValueError: numpy.ufunc size changed, may indicate binary incompatibility. Expected 216 from C h
|
XML JavaScript 前端开发
|
PyTorch 算法框架/工具
A trap of parameter ‘size_average’ in pytorch 详解
pytorch的入门教程中有这样的一句: 1 2 3 4 5 loss = torch.nn.
1746 0