C51编译器 - 写入xdata

Tob*_*oby 4 c embedded microcontroller 8051

在XC888微控制器上编程,我想为外部存储器中的某些数据保存缓冲区xdata.

我这样做(只是一个例子,我摆脱了不必要的代码):

Header.h

extern ubyte xdata rec_buffer[32];
Run Code Online (Sandbox Code Playgroud)

Function.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
}
Run Code Online (Sandbox Code Playgroud)

所以我无法弄清楚我在这里缺少什么.在这两种情况下,都没有数据写入缓冲区.(使用调试器检查).我还检查了指针指向它的地址 - >它实际上指向外部存储器(地址0x000000,但应该没有任何问题).

当我这样做而没有定义缓冲区时,xdata它的工作完全正常.我究竟做错了什么?有什么特别的方法我必须写入xdata吗?

Mar*_*son 5

XRAM 0xF000不应该(不0x000000)?根据图7这里:

http://www.keil.com/dd/docs/datashts/infineon/xc88xclm_ds.pdf

链接器配置是否在某处错误?