PRM File

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 .

Listing: Linker PRM file for MC9S12ZVH64 derivative - <derivative>.prm

/* 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.