If you are using the CodeWarrior IDE to manage your project, a pre-configured PRM file for a particular derivative is already set up, as the following listing displays .
/* This is a linker parameter file for the MC9S12ZVH64 */ NAMES END /* CodeWarrior will pass all the needed files to the linker by command line. But here you may add your own files too. */ SEGMENTS /* Here all RAM/ROM areas of the device are listed. Used in PLACEMENT below. */ /* Register space */ / * IO_SEG = PAGED 0x000000 TO 0x000FFF; intentionally not defined */ /* RAM */ RAM = READ_WRITE 0x001000 TO 0x001FFF; /* EEPROM */ EEPROM = READ_ONLY 0x100000 TO 0x100FFF; /* non-paged FLASHs */ ROM = READ_ONLY 0xFF0000 TO 0xFFFDFF; /* VECTORS = READ_ONLY 0xFFFE00 TO 0xFFFFFF; intentionally not defined: used for VECTOR commands below */ //OSVECTORS = READ_ONLY 0xFFFE10 TO 0xFFFFFF; /* OSEK interrupt vectors (use your vector.o) */ END PLACEMENT /* here all predefined and user segments are placed into the SEGMENTS defined above. */ _PRESTART, /* Used in HIWARE format: jump to _Startup at the code start */ STARTUP, /* startup data structures */ ROM_VAR, /* constant variables */ STRINGS, /* string literals */ VIRTUAL_TABLE_SEGMENT, /* C++ virtual table segment */ //.ostext, /* OSEK */ NON_BANKED, /* runtime routines which must not be banked */ DEFAULT_ROM, COPY INTO ROM; //.stackstart, /* eventually used for OSEK kernel awareness: Main-Stack Start */ SSTACK, /* allocate stack first to avoid overwriting variables on overflow */ //.stackend, /* eventually used for OSEK kernel awareness: Main-Stack End */ DEFAULT_RAM INTO RAM; //.vectors INTO OSVECTORS; /* OSEK */ END ENTRIES /* keep the following unreferenced variables */ /* OSEK: always allocate the vector table and all dependent objects */ //_vectab OsBuildNumber _OsOrtiStackStart _OsOrtiStart END STACKSIZE 0x100 VECTOR 0 _Startup /* reset vector: this is the default entry point for a C/C++ application. */ //VECTOR 0 Entry /* reset vector: this is the default entry point for an Assembly application. */ //INIT Entry /* for assembly applications: that this is as well the initialization entry point */
The Linker PRM file allocates memory for the stack and the sections named in the assembly source code files. If the sections in the source code are not specifically referenced in the PLACEMENT section, then these sections are included in DEFAULT_ROM or DEFAULT_RAM.
The STACKSIZE entry is used to set the stack size. The size of the stack for this project is 80 bytes. Some entries in the Linker PRM file may be commented-out by the IDE, as are the three last items in the <derivative>.prm file in Linker PRM file for MC9S12ZVH64 derivative - <derivative>.prm.