2005-11-15 09:29 PM
Problem with STACKTOP in .prm file
2005-11-14 10:50 PM
Excuse me, but i don't understand why appears this error..
L1206: .stack overlaps with a segment which appear in the PLACEMENT block in linker messages help for this error is writting this ''The stack is defined trough the command STACKTOP, and the specified initial value is inside of a segment, which is used in the PLACEMENT block. This is not allowed, because the stack may overlap with some allocated objects''. But in CST7 help there's an example for the stacktop command that is in opposition with the linker error........: ''When the stack is defined trough a STACKTOP command associated with the placement of the .stack section, the stack is supposed to start at the specified address, and is defined down to the start address of the segment, where .stack has been placed. Example SEGMENTS MY_STK = NO_INIT 0xB00 TO 0xBFF; MY_RAM = READ_WRITE 0xA00 TO 0xAFF; MY_ROM = READ_ONLY 0x800 TO 0x9FF; END PLACEMENT DEFAULT_ROM INTO MY_ROM; DEFAULT_RAM INTO MY_RAM; SSTACK INTO MY_STK; END STACKTOP 0xB7E In the previous example, the stack pointer will be defined from address 0xB7E down to address 0xB00''. Now, my .prm file is this: /* MEMORY LOCATION SETTING ***************************************************/ /* STACK INITIALIZATION ******************************************************/ STACKTOP 0x1FF SEGMENTS BITS_RAM = READ_WRITE 0x0050 TO 0x00FF; MY_STACK = NO_INIT 0x0100 TO 0x01FF; BYTE_RAM = READ_WRITE 0x0200 TO 0x044F; USER_ROM = READ_ONLY 0x8000 TO 0xFFDF; END PLACEMENT STACK_SEG INTO MY_STACK; then the STACK overlaps the STACK_SEG....,but for the CST7 help this is an exactly instruction ,but for the linker is an error L1206. What's the error?what i can do for resolving this problem? I need of the stack and of the stack_seg.... But is possible don't initialize the stack in .prm without error in stack assembly operations?If i comments the STACKTOP command is an error? Thanks for who help me... :-[ [ This message was edited by: liotro78 on 15-11-2005 12:23 ]2005-11-15 03:22 AM
Hi Liotro78,
I think you can not change the stackpointer out of the defined range only by redefining the top of the stack. In an example which I have tested with the ST7VD (simulator) the stackpointer is unchanged when I only set the STACKTOP in the .prm-file. The hard wired top of the stack is usually 0x1FF. That's the address where the stackpointer will be set to with the command RSP. I'am even not shure, if the SP works out of the range of 0x100 to 0x1FF. By the way: This problem with the stackpointer is not new. You'll find a statement of the ''Moderator Setler'' at the end of the discussion Zero page - problem compile with MetrowerksRegards WoRo2005-11-15 04:14 AM
Excuse me woro,
but if i have an ''out of allocation space in ZRAM segment'' i can increase the ZRAM memory over the 0FFh address? i can overlap a part of the stack address? ex. ZRAM = READ_WRITE 0x0050 TO 0x015F MY_STACK = NO_INIT 0x0160 TO 0x01FF i can do it???2005-11-15 09:29 PM
Liotro78,
you must not expand the ZRAM to an area above 0xFF. All the variables in the area of the ZRAM (0x00 ... 0xFF) you can address with the short addressing mode. That means you can use some commands with less programming code and less execution time (have a look at the To use the area up from 0x100 you should define a new SECTION in your .prm-file e.g. MY_RAM2 = READ_WRITE 0x100 TO 0x15F;. For further good information see the diskussion Zero page - problem compile with Metrowerksof this forum. In my opinion the STACKTOP feature of the compiler is dispensable and a relict from the motorola's past of Metrowerks. I really can't see any need to use it with a ST7 µC!! Regards WoRo