Hi,
I have 2 pieces of software that both independently work correctly. When combined, however, they don't seem to get on. I think my problem is concerned with memory space corruption. ie. one module's data overwriting the other's.
Here are some excerpts from the appropriate .LST files:
MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 2404 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = 1024 ---- PDATA SIZE = ---- ---- DATA SIZE = 2 114 IDATA SIZE = 37 ---- BIT SIZE = 1 2 END OF MODULE INFORMATION. MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 894 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = ---- 23 IDATA SIZE = ---- 44 BIT SIZE = ---- ---- END OF MODULE INFORMATION. MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 326 ---- CONSTANT SIZE = 328 ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = ---- 18 IDATA SIZE = ---- 36 BIT SIZE = ---- ---- END OF MODULE INFORMATION.
Can anybody please explain for me the difference between static and overlayable memory allocations? I'd like to know from the above how I can tell if I have filled either the DATA or IDATA memory spaces. How would I be certain that I am experiencing memory space corruption? My processor is an AT89C51AC2.
Regards, Murray R. Van Luyn.
The documentation will tell if printf() has limitations.
A printf() that does not use a general stack for the parameters will not be limited by the stack size. But it will have other limitations. For example number of registers and number of fixed memory locations that may be used.