在 XC888 微 Controller 上编程,我想在外部存储器 xdata
中保存一些数据的缓冲区。
我是这样做的(只是一个例子,我去掉了不必要的代码):
头文件.h
extern ubyte xdata rec_buffer[32];
函数.c
ubyte xdata rec_buffer[32] = {0};
void foo()
{
//Option 1
rec_buffer[0] = 0xFF; // Doesn't work
//Option 2
ubyte xdata *ptr_buf = rec_buffer;
ptr_buf[0] = 0xFF // Doesn't work
}
所以我无法弄清楚我在这里缺少什么。在这两种情况下,都没有数据写入缓冲区。 (用调试器检查过)。我还检查了指针指向它的地址 --> 它实际上指向外部存储器(地址
0x000000
,但应该没有错)。当我在没有在
xdata
中定义缓冲区的情况下执行此操作时,它完全正常。我究竟做错了什么?是否有一些特殊的方式我必须写入 xdata?
最佳答案
XRAM 不应该在 0xF000
(不是 0x000000
)吗?根据此处的图 7:
http://www.keil.com/dd/docs/datashts/infineon/xc88xclm_ds.pdf
链接器配置是否错误?
关于C51 编译器 - 写入 xdata,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15100820/