I use two different µC (C505 and C164). I use the following compilers: C51: V7.06i / BL51: 5.03 C166: V4.11 / L166: 4.10 (Updates not possible. I couldn't use newer one.)
How can I get information about used RAM (IRAM, XRAM, ...)? = How much RAM do my program needed?
I know that I can use the map files. But that's complicated and not easy and not fast.
Do anybody know an other method? How could I evaluate the map file (to know how many RAM my source code needed)?
Thanks for help
You (or rather: your code) told the compiler and linker that you have more than the usual 1 K of memory available in XRAM address space. You even told the linker exactly where that is. And now you don't "believe" the linker when it reports that very same information back to you.
Hmm... that looks like your right hand doesn't know what the left hand is doing. There's not terribly much anyone but you can do about that.
Finally comment: I found the reason for the unbelieveable xdata value of greater 1kByte.
1st at all - in my project the XDATA is used and defined as 1kByte: Map file:
XDATA (0XFC00-0XFFFF) ... N:0400H SYMBOL XDATALEN = 1024Bytes = 1kByte XRAM ... Program Size: data=247.7 xdata=739 code=32651
Thats completely normaly.
But in the other project (of a college which isn't anymore in the concern) it's defined as the following [this was the one I asked]:
XDATA (0XFD00-0XFFFF, ?XD?NV (0X1100)) PDATA (0XFC00) ... N:0300H SYMBOL XDATALEN = 768 Bytes ... Program Size: data=220.3 xdata=2615 code=32750
The shown value for the used xdata size contains also the EEPROM (NV) size. Therefore a value greater than 1kbyte (1024) is possible. I used the map file to get the information for the xdata(NV) size and could calculated the real used xram size.
Thanks a lot (also for the very sensitive answers).