Project.old2.prm 8.26 KB
Newer Older
崔立宝's avatar
崔立宝 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
/* This is a linker parameter file for the MC9S12XHY128 */

/*
This file is setup to use the HCS12X core only.
If you plan to also use the XGATE in your project, best create a new project with the
'New Project Wizard' (File|New... menu in the CodeWarrior IDE) and choose the appropriate
project parameters.
*/

NAMES
    /* CodeWarrior will pass all the needed files to the linker by command line. But here you may add your additional files */
END

SEGMENTS /* here all RAM/ROM areas of the device are listed. Used in PLACEMENT below. All addresses are 'logical' */
/* Register space  */
/*    IO_SEG        = PAGED                            0x0000 TO   0x07FF; intentionally not defined */

/* non-paged RAM */
      RAM           = READ_WRITE  DATA_NEAR            0x2000 TO   0x3FFF; 

/* non-banked FLASH */
      ROM_4000      = READ_ONLY   DATA_NEAR IBCC_NEAR  0x4000 TO   0x7FFF;  //16K
      //ROM_C000    = READ_ONLY   DATA_NEAR IBCC_NEAR  0xC000 TO   0xFEFF;  //15.75K
      ROM_C000      = READ_ONLY   DATA_NEAR IBCC_NEAR  0xC000 TO   0xFAFF;  //14.75K
    //VECTORS       = READ_ONLY                        0xFF00 TO   0xFFFF;  /*intentionally not defined: used for VECTOR commands below */
    //OSVECTORS     = READ_ONLY                        0xFF10 TO   0xFFFF;  /* OSEK interrupt vectors (use your vector.o) */

/* paged EEPROM                                        0x0800 TO   0x0BFF; addressed through EPAGE */
      EEPROM_00     = READ_ONLY   DATA_FAR IBCC_FAR  0x000800 TO 0x000BFF; //1K
      EEPROM_01     = READ_ONLY   DATA_FAR IBCC_FAR  0x010800 TO 0x010BFF; //1K
      EEPROM_02     = READ_ONLY   DATA_FAR IBCC_FAR  0x020800 TO 0x020BFF; //1K
      EEPROM_03     = READ_ONLY   DATA_FAR IBCC_FAR  0x030800 TO 0x030BFF; //1K
      EEPROM_04     = READ_ONLY   DATA_FAR IBCC_FAR  0x040800 TO 0x040BFF; //1K
      EEPROM_05     = READ_ONLY   DATA_FAR IBCC_FAR  0x050800 TO 0x050BFF; //1K
      EEPROM_06     = READ_ONLY   DATA_FAR IBCC_FAR  0x060800 TO 0x060BFF; //1K
      EEPROM_07     = READ_ONLY   DATA_FAR IBCC_FAR  0x070800 TO 0x070BFF; //1K

/* paged RAM:                                          0x1000 TO   0x1FFF; addressed through RPAGE */
/*    RAM_FE        = READ_WRITE                     0xFE1000 TO 0xFE1FFF; intentionally not defined: equivalent to RAM: 0x2000..0x2FFF */
/*    RAM_FF        = READ_WRITE                     0xFF1000 TO 0xFF1FFF; intentionally not defined: equivalent to RAM: 0x3000..0x3FFF */
      RAM_FD        = READ_WRITE  DATA_FAR           0xFD1000 TO 0xFD1FFF;
/* paged FLASH:                                        0x8000 TO   0xBFFF; addressed through PPAGE */
      PAGE_F0       = READ_ONLY   DATA_FAR IBCC_FAR  0xF08000 TO 0xF0BFFF; 
      PAGE_F1       = READ_ONLY   DATA_FAR IBCC_FAR  0xF18000 TO 0xF1BFFF; 
      PAGE_F2       = READ_ONLY   DATA_FAR IBCC_FAR  0xF28000 TO 0xF2BFFF; 
      PAGE_F3       = READ_ONLY   DATA_FAR IBCC_FAR  0xF38000 TO 0xF3BFFF; 
      PAGE_F4       = READ_ONLY   DATA_FAR IBCC_FAR  0xF48000 TO 0xF4BFFF; 
      PAGE_F5       = READ_ONLY   DATA_FAR IBCC_FAR  0xF58000 TO 0xF5BFFF; 
      PAGE_F6       = READ_ONLY   DATA_FAR IBCC_FAR  0xF68000 TO 0xF6BFFF; 
      PAGE_F7       = READ_ONLY   DATA_FAR IBCC_FAR  0xF78000 TO 0xF7BFFF;
      
     //PAGE_F8     = READ_ONLY   DATA_FAR IBCC_FAR  0xF88000 TO 0xF8BFFF; //16K 
      PAGE_F8       = READ_ONLY   DATA_FAR IBCC_FAR  0xF88000 TO 0xF89FFF; //8K
    //BOOT_PAGE_F8  = READ_ONLY   DATA_FAR IBCC_FAR  0xF8A000 TO 0xF8BFFF; //8K   (Resvered for Bootloader)
    
     PAGE_F9       = READ_ONLY   DATA_FAR IBCC_FAR  0xF98000 TO 0xF9BFFF; //16K
     PAGE_FA       = READ_ONLY   DATA_FAR IBCC_FAR  0xFA8000 TO 0xFABFFF; //16K
      
     // GLOBOL_40K    = READ_ONLY                      0x7E4000'G TO 0x7EDFFF'G; 
      /* 40 kByte global address range covering PAGE_F9..PAGE_FB */ 
      PAGE_FB       = READ_ONLY   DATA_FAR IBCC_FAR  0xFBA000 TO 0xFBBFFF; //8K
      PAGE_FC       = READ_ONLY   DATA_FAR IBCC_FAR  0xFC8000 TO 0xFCBFFF; //16K
/*    PAGE_FD       = READ_ONLY                      0xFD8000 TO 0xFDBFFF; intentionally not defined: equivalent to ROM_4000 */
      PAGE_FE       = READ_ONLY   DATA_FAR IBCC_FAR  0xFE8000 TO 0xFEBFFF; //16K
/*    PAGE_FF       = READ_ONLY                      0xFF8000 TO 0xFFBFFF; intentionally not defined: equivalent to ROM_C000 */
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,                /* eventually OSEK code  */
      NON_BANKED,             /* runtime routines which must not be banked */
      COPY                    /* copy down information: how to initialize variables */
                              /* in case you want to use ROM_4000 here as well, make sure
                                 that all files (incl. library files) are compiled with the
                                 option: -OnB=b */
                        INTO  ROM_C000, ROM_4000;
                        
    //  MAPDATA_ROM       INTO  GLOBOL_40K;
                        
      DEFAULT_ROM       INTO           PAGE_FE,          PAGE_FC, PAGE_FB , PAGE_FA,     PAGE_F9                ;
     
    //.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             /* all variables, the default RAM location */
                        INTO  RAM;//RAM_FD;

      PAGED_RAM         INTO  /* when using banked addressing for variable data, make sure to specify
                                 the option -D__FAR_DATA on the compiler command line */
                              RAM_FD;


      DISTRIBUTE        DISTRIBUTE_INTO
                              ROM_4000,   PAGE_FE,          PAGE_FC, PAGE_FB , PAGE_FA,     PAGE_F9               ;
                              
      CONST_DISTRIBUTE  DISTRIBUTE_INTO
                              ROM_4000,   PAGE_FE,          PAGE_FC, PAGE_FB , PAGE_FA,     PAGE_F9               ;
                              
      DATA_DISTRIBUTE   DISTRIBUTE_INTO
                              RAM;
    //.vectors          INTO  OSVECTORS; /* OSEK vector table */
END


ENTRIES /* keep the following unreferenced variables */
    /* OSEK: always allocate the vector table and all dependent objects */
  //_vectab OsBuildNumber _OsOrtiStackStart _OsOrtiStart
END

STACKSIZE 0x200   /* 0x100   size of the stack (will be allocated in DEFAULT_RAM) */       

/* use these definitions in plane of the vector table ('vectors') above */
VECTOR 0 _Startup /* reset vector: this is the default entry point for a C/C++ application. */  
VECTOR 1 _Startup /* COP reset entry*/ 
VECTOR 2 _Startup /* COP reset entry*/ 
VECTOR 3 _Startup /* COP reset entry*/ 



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


VECTOR ADDRESS  0xFB78  NONUSE1_ISR
VECTOR ADDRESS  0xFB7A  NONUSE2_ISR
VECTOR ADDRESS  0xFB7C  NONUSE3_ISR
VECTOR ADDRESS  0xFB7E  API_ISR             // relocated interrupt table to 0xFB00 in initial routine within main();  

VECTOR ADDRESS  0xFBB0  MSCAN0_TX_ISR       // relocated interrupt table to 0xFB00 in initial routine within main(); 
VECTOR ADDRESS  0xFBB2  MSCAN0_RX_ISR       // relocated interrupt table to 0xFB00 in initial routine within main(); 
//VECTOR ADDRESS  0xFBB4  NONUSE5_ISR
VECTOR ADDRESS  0xFBB6  MSCAN0_WAKEUP_ISR   // relocated interrupt table to 0xFB00 in initial routine within main(); 

              
//VECTOR ADDRESS  0xFBD4  SCI1_ISR            // relocated interrupt table to 0xFB00 in initial routine within main(); 
VECTOR ADDRESS  0xFBD6  SCI0_ISR            // relocated interrupt table to 0xFB00 in initial routine within main();  
VECTOR ADDRESS  0xFBF0  RTI_ISR             // relocated interrupt table to 0xFB00 in initial routine within main(); 
//VECTOR ADDRESS  0xFBA0  Timer0_ONPUT