We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hallo, I have written in my experimental(!) code a global variable : int idata arr[60]; The stack is explicitly assigned to internal memory space (memory type : idata - 256 byte maximum). But I got in the *.m51-File an error message. IGNORED SEGMENTS: ?STACK *** ERROR L123: ABSOLUTE DATA/IDATA SEGMENT DOES NOT FIT MODULE: TIMER01.OBJ (TIMER01) FROM: 0088H TO: 0089H *** ERROR L107: ADDRESS SPACE OVERFLOW BL51 BANKED LINKER/LOCATER V4.02 05/02/2001 11:10:58 PAGE 2 SPACE: IDATA SEGMENT: ?STACK LENGTH: 0001H *** ERROR L107: ADDRESS SPACE OVERFLOW SPACE: IDATA SEGMENT: ?STACK LENGTH: 0001H *** ERROR L119: REFERENCE MADE TO ERRONEOUS SEGMENT SEGMENT: ?C_C51STARTUP MODULE: C:\MYFILES\LIB\C51S.LIB (?C_STARTUP) ADDRESS: 4042H I don't understand why the stack can not be placed in the upper memory (0x80 to 0xFF)? The memory type of the stack is idata (0x00 - 0xFF). If I have located a variable in the upper 128 bytes of internal RAM like this: int idata var _at_ 0x81; I have got also the error messages! But why? I thought if I use the memory type idata, then I can use all the lower and the upper internal RAM. Best Regards.