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
Is there a .MAP file? Heap/Stack space?
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.