I am using a P89C669 and I am confused about the internal SRAM. The data sheets say there is 2K of on-board static RAM but the user manual shows that only 768 bytes in the on board XDATA space. However if a P89C669 device is selected as the target processor the dialog box shows a check box labelled "Use On chip XRAM 0x00- 0x6FF" What's the story or is my brain finally going to mush?
Thanks for the info. I have the PK51 kit that allows access to the funky features of the MX51 family, but I can't find a way to access the EDATA memory for storage of variables. (I have run out of XDATA space) The compiler doesn't accept a declaration such as
int edata variable1
I don't actually use this part (just downloaded the data sheet and user manual yesterday when I saw your question), so I'm afraid I can't help much. This "edata" business is an extension unique to the Philips architecture. You'll need to use the CX51 compiler (instead of C51) to get support for the "universal pointers" which seem to be the only way to access this Philips edata from C. PUSH and POP would work, but don't help much in a HLL. The linker manual says EDATA segments are used for near variables. But near isn't listed as a keyword for the compiler. (You could try declaring a near variable anyway, I suppose; maybe it's just an omission in the documentation.) You might be able to use the linker CLASSES ( EDATA () ) directive to move EDATA to proper location. But I'm guessing at this point, since I don't use an MX architecture part.