This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Address space overflow - am I really using 1k internal RAM ?

I am working with a DS89c450 and uVision3.

My simple C code project consists of just the ds89c450, no other devices. I have the
memory Model set to small (variables in DATA) Code ROM size set to 64K, and the option boxes
for "Use on chip ROM (0x0-0xFFFF)" and "Use on chip XRAM (0x0-0x3FF) bot checked.

I'm compiling what I think is relatively small program that doesn't use a tremendous amount
of RAM, but I am still getting the Address Space Overflow error L107 - referring to the
DATA space.

It is not clear to me whether or not I am really using the 1K internal RAM. I can remove
a single 1 byte variable and compile fine. I then look in the M51 listing file and the
DATA amounts only total about 120 bytes.

How I be sure the compiler is really using the internal 1K RAM ... and have it place whatever
variables can't fit elsewhere there ?

Thanks

Parents Reply Children
  • All my concerns are resolved. It was the use of the XDATA qualifier in declaring a
    variable.

    And, yes, it does require a bit being set. I believe the compiler does that for you
    in the startup code if you run the ide. Otherwise, I believe the bit is in the PMR
    register (DME1 or DME0) and you must add it to your start up module.

    It has to be set prior to jumping into C main( ) as the start up code may need to
    initialize data, etc.