Where is the xdata stored and where is code stored?
The Problem that I am facing is , when I do
unsigned char xdata buff[300]; void func() { ........... ..... .. }
the results of running this application suggests that xdata buff has overwritten the function func.
The Map file shows the following addresses * * * * * * * X D A T A M E M O R Y ** * * * * * XDATA 0000H 012CH UNIT ?XD?DEMO XDATA 012CH 000AH UNIT _XDATA_GROUP_
* * * * * * * C O D E M E M O R Y * * * * * * * CODE 0000H 0003H ABSOLUTE 0003H 00FDH *** GAP *** CODE 0100H 03C7H UNIT ?PR?_FUNC?DEMO CODE 04C7H 0131H UNIT ?C_INITSEG
Which shows the base addresses of XD?DEMO of 300 bytes and the function func to be the same !!!
Also in the code segment, a gap of 256 bytes has been left before the function func. Hence if the xdata buff size is kept 256 bytes, there is no problem. Only when I exceed this limit , there are problems.
Let me know where is xdata stored and where is the code segment? Are they overlapping? How can I declare an external data buffer of 300 bytes?
Regards, Gaurav
"it is fine if they are relative addresses"
I said you should think of them as "relative" (in quotes) addresses - be careful not to read too much into that!
Again, you really need to study those documents to really understand what's going on...