⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p30f6014.gld

📁 一份学习微星公司出品的pic或dspic系列单片机或dsp芯片的源程序
💻 GLD
📖 第 1 页 / 共 4 页
字号:
/*
** Linker Script for p30f6014
*/

OUTPUT_ARCH("pic30")
EXTERN(__resetPRI)
EXTERN(__resetALT)


/*
** Memory Regions
*/
MEMORY
{
  data  (a!xr) : ORIGIN = 0x800,    LENGTH = 8096
  program (xr) : ORIGIN = 0x100,    LENGTH = ((48K * 2) - 0x100)
  reset        : ORIGIN = 0,        LENGTH = (4)
  ivt          : ORIGIN = 0x04,     LENGTH = (62 * 2)
  aivt         : ORIGIN = 0x84,     LENGTH = (62 * 2)
  __FOSC       : ORIGIN = 0xF80000, LENGTH = (2)
  __FWDT       : ORIGIN = 0xF80002, LENGTH = (2)
  __FBORPOR    : ORIGIN = 0xF80004, LENGTH = (2)
  __CONFIG4    : ORIGIN = 0xF80006, LENGTH = (2)
  __CONFIG5    : ORIGIN = 0xF80008, LENGTH = (2)
  __FGS        : ORIGIN = 0xF8000A, LENGTH = (2)
  eedata       : ORIGIN = 0x7FF000, LENGTH = (4096)

/* On this device, the highest 96 bytes of data memory */
/* are reserved for the ICE4000 emulator. To disable   */
/* support for ICE4000, and recover 96 bytes of data   */
/* memory, uncomment the following line.               */
/* data  (a!xr) : ORIGIN = 0x800,    LENGTH = 8192     */

}


/*
** Base Memory Addresses - Program Memory
*/
__RESET_BASE  = 0;        /* Reset Instruction                */
__IVT_BASE    = 0x04;     /* Interrupt Vector Table           */
__AIVT_BASE   = 0x84;     /* Alternate Interrupt Vector Table */
__CODE_BASE   = 0x100;    /* Handles, User Code, Library Code */


/*
** Base Memory Addresses - Data Memory
*/
__SFR_BASE    = 0;        /* Memory-mapped SFRs                 */
__DATA_BASE   = 0x800;    /* X and General Purpose Data Memory  */
__YDATA_BASE  = 0x1800;   /* Y Data Memory for DSP Instructions */


/*
** ==================== Section Map ======================
*/

SECTIONS
{

  /*
  ** ================== Program Memory =====================
  */

  /*
  ** Reset Instruction
  */
  .reset __RESET_BASE :
  {
        SHORT(ABSOLUTE(__reset));
        SHORT(0x04);
        SHORT((ABSOLUTE(__reset) >> 16) & 0x7F);
        SHORT(0);
  } >reset


  /*
  ** Interrupt Vector Tables
  **
  ** The primary and alternate tables are loaded
  ** here, between sections .reset and .text.
  ** Vector table source code appears below.
  */

  /*
  ** User Code and Library Code
  */
  .text __CODE_BASE :
  {
        *(.handle);
        *(.libc) *(.libm) *(.libdsp);  /* keep together in this order */
        *(.lib*);
        *(.text);
  } >program

  /*
  ** User-Defined Section in Program Memory
  **
  ** note: can specify an address using
  **       the following syntax:
  **
  **       usercode 0x1234 :
  **         {
  **           *(usercode);
  **         } >program
  */
  usercode :
  {
        *(usercode);
  } >program


  /*
  ** ================ Configuration Memory ================
  */


  /*
  ** Configuration Fuses
  */
  __FOSC :
  { *(__FOSC.sec)    } >__FOSC
  __FWDT :
  { *(__FWDT.sec)    } >__FWDT
  __FBORPOR :
  { *(__FBORPOR.sec) } >__FBORPOR
  __CONFIG4 :
  { *(__CONFIG4.sec) } >__CONFIG4
  __CONFIG5 :
  { *(__CONFIG5.sec) } >__CONFIG5
  __FGS :
  { *(__FGS.sec)     } >__FGS


  /*
  ** User-Defined Section in Data Flash Memory
  **
  ** note: can specify an address using
  **       the following syntax:
  **
  **       user_eedata 0x7FF000 :
  **         {
  **           *(user_eedata);
  **         } >eedata
  */
  user_eedata :
  {
        *(user_eedata);
  } >eedata


  /*
  ** ==================== Data Memory ===================
  */

  /* 
  ** ICD Debug Exec
  **
  ** This section provides optional storage for
  ** the ICD2 debugger. Define a global symbol
  ** named __ICD2RAM to enable ICD2. This section
  ** must be loaded at data address 0x800.
  */ 
  .icd __DATA_BASE (NOLOAD): 
  { 
    . += (DEFINED (__ICD2RAM) ? 0x50 : 0 ); 
  } > data 


  /*
  ** User-Defined Section in Data Memory
  **
  ** note: can specify an address using
  **       the following syntax:
  **
  **       userdata 0x1234 :
  **         {
  **           *(userdata);
  **         } >data
  */
  userdata :
  {
        *(userdata);
  } >data


  /*
  ** ===================== Debug Info ====================
  */

  .comment        0 : { *(.comment) }

  /*
  ** DWARF-2
  */
  .debug_info     0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }
  .debug_abbrev   0 : { *(.debug_abbrev) }
  .debug_line     0 : { *(.debug_line) }
  .debug_frame    0 : { *(.debug_frame) }
  .debug_str      0 : { *(.debug_str) }
  .debug_loc      0 : { *(.debug_loc) }
  .debug_macinfo  0 : { *(.debug_macinfo) }
  .debug_pubnames 0 : { *(.debug_pubnames) }
  .debug_ranges   0 : { *(.debug_ranges) }
  .debug_aranges  0 : { *(.debug_aranges) }

} /* SECTIONS */

/*
** ================= End of Section Map ================
*/
/*
** Section Map for Interrupt Vector Tables
*/
SECTIONS
{

/*
** Primary Interrupt Vector Table
*/
.ivt __IVT_BASE :
  {
    LONG(DEFINED(__ReservedTrap0
) ? ABSOLUTE(__ReservedTrap0
) :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__OscillatorFail
)? ABSOLUTE(__OscillatorFail
):
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__AddressError
)  ? ABSOLUTE(__AddressError
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__StackError
)    ? ABSOLUTE(__StackError
)    :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__MathError
)     ? ABSOLUTE(__MathError
)     :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__ReservedTrap5
) ? ABSOLUTE(__ReservedTrap5
) :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__ReservedTrap6
) ? ABSOLUTE(__ReservedTrap6
) :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__ReservedTrap7
) ? ABSOLUTE(__ReservedTrap7
) :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__INT0Interrupt
) ? ABSOLUTE(__INT0Interrupt
) :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__IC1Interrupt
)  ? ABSOLUTE(__IC1Interrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__OC1Interrupt
)  ? ABSOLUTE(__OC1Interrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__T1Interrupt
)   ? ABSOLUTE(__T1Interrupt
)   :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__IC2Interrupt
)  ? ABSOLUTE(__IC2Interrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__OC2Interrupt
)  ? ABSOLUTE(__OC2Interrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__T2Interrupt
)   ? ABSOLUTE(__T2Interrupt
)   :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__T3Interrupt
)   ? ABSOLUTE(__T3Interrupt
)   :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__SPI1Interrupt
) ? ABSOLUTE(__SPI1Interrupt
) :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__U1RXInterrupt
) ? ABSOLUTE(__U1RXInterrupt
) :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__U1TXInterrupt
) ? ABSOLUTE(__U1TXInterrupt
) :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__ADCInterrupt
)  ? ABSOLUTE(__ADCInterrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__NVMInterrupt
)  ? ABSOLUTE(__NVMInterrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__SI2CInterrupt
) ? ABSOLUTE(__SI2CInterrupt
) :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__MI2CInterrupt
) ? ABSOLUTE(__MI2CInterrupt
) :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__CNInterrupt
)   ? ABSOLUTE(__CNInterrupt
)   :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__INT1Interrupt
) ? ABSOLUTE(__INT1Interrupt
) :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__IC7Interrupt
)  ? ABSOLUTE(__IC7Interrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__IC8Interrupt
)  ? ABSOLUTE(__IC8Interrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__OC3Interrupt
)  ? ABSOLUTE(__OC3Interrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__OC4Interrupt
)  ? ABSOLUTE(__OC4Interrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__T4Interrupt
)   ? ABSOLUTE(__T4Interrupt
)   :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__T5Interrupt
)   ? ABSOLUTE(__T5Interrupt
)   :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__INT2Interrupt
) ? ABSOLUTE(__INT2Interrupt
) :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__U2RXInterrupt
) ? ABSOLUTE(__U2RXInterrupt
) :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__U2TXInterrupt
) ? ABSOLUTE(__U2TXInterrupt
) :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__SPI2Interrupt
) ? ABSOLUTE(__SPI2Interrupt
) :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__C1Interrupt
)   ? ABSOLUTE(__C1Interrupt
)   :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__IC3Interrupt
)  ? ABSOLUTE(__IC3Interrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__IC4Interrupt
)  ? ABSOLUTE(__IC4Interrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__IC5Interrupt
)  ? ABSOLUTE(__IC5Interrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__IC6Interrupt
)  ? ABSOLUTE(__IC6Interrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__OC5Interrupt
)  ? ABSOLUTE(__OC5Interrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__OC6Interrupt
)  ? ABSOLUTE(__OC6Interrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__OC7Interrupt
)  ? ABSOLUTE(__OC7Interrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__OC8Interrupt
)  ? ABSOLUTE(__OC8Interrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__INT3Interrupt
) ? ABSOLUTE(__INT3Interrupt
) :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__INT4Interrupt
) ? ABSOLUTE(__INT4Interrupt
) :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__C2Interrupt
)   ? ABSOLUTE(__C2Interrupt
)   :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__PWMInterrupt
)  ? ABSOLUTE(__PWMInterrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__QEIInterrupt
)  ? ABSOLUTE(__QEIInterrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__DCIInterrupt
)  ? ABSOLUTE(__DCIInterrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__LVDInterrupt
)  ? ABSOLUTE(__LVDInterrupt
)  :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__FLTAInterrupt
) ? ABSOLUTE(__FLTAInterrupt
) :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__FLTBInterrupt
) ? ABSOLUTE(__FLTBInterrupt
) :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__Interrupt45
)   ? ABSOLUTE(__Interrupt45
)   :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__Interrupt46
)   ? ABSOLUTE(__Interrupt46
)   :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__Interrupt47
)   ? ABSOLUTE(__Interrupt47
)   :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__Interrupt48
)   ? ABSOLUTE(__Interrupt48
)   :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__Interrupt49
)   ? ABSOLUTE(__Interrupt49
)   :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__Interrupt50
)   ? ABSOLUTE(__Interrupt50
)   :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__Interrupt51
)   ? ABSOLUTE(__Interrupt51
)   :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__Interrupt52
)   ? ABSOLUTE(__Interrupt52
)   :
         ABSOLUTE(__DefaultInterrupt));
    LONG(DEFINED(__Interrupt53
)   ? ABSOLUTE(__Interrupt53
)   :
         ABSOLUTE(__DefaultInterrupt));
  } >ivt


/*
** Alternate Interrupt Vector Table
*/
.aivt __AIVT_BASE :
  {
    LONG(DEFINED(__AltReservedTrap0
) ? ABSOLUTE(__AltReservedTrap0
) :
        (DEFINED(__ReservedTrap0
)    ? ABSOLUTE(__ReservedTrap0
)    :
         ABSOLUTE(__DefaultInterrupt)));
    LONG(DEFINED(__AltOscillatorFail
)? ABSOLUTE(__AltOscillatorFail
):
        (DEFINED(__OscillatorFail
)   ? ABSOLUTE(__OscillatorFail
)   :
         ABSOLUTE(__DefaultInterrupt)));
    LONG(DEFINED(__AltAddressError
)  ? ABSOLUTE(__AltAddressError
)  :
        (DEFINED(__AddressError
)     ? ABSOLUTE(__AddressError
)     :
         ABSOLUTE(__DefaultInterrupt)));
    LONG(DEFINED(__AltStackError
)    ? ABSOLUTE(__AltStackError
)    :
        (DEFINED(__StackError
)       ? ABSOLUTE(__StackError
)       :
         ABSOLUTE(__DefaultInterrupt)));
    LONG(DEFINED(__AltMathError
)     ? ABSOLUTE(__AltMathError
)     :
        (DEFINED(__MathError
)        ? ABSOLUTE(__MathError
)        :
         ABSOLUTE(__DefaultInterrupt)));
    LONG(DEFINED(__AltReservedTrap5
) ? ABSOLUTE(__AltReservedTrap5
) :
        (DEFINED(__ReservedTrap5
)    ? ABSOLUTE(__ReservedTrap5
)    :
         ABSOLUTE(__DefaultInterrupt)));
    LONG(DEFINED(__AltReservedTrap6
) ? ABSOLUTE(__AltReservedTrap6
) :
        (DEFINED(__ReservedTrap6
)    ? ABSOLUTE(__ReservedTrap6
)    :
         ABSOLUTE(__DefaultInterrupt)));
    LONG(DEFINED(__AltReservedTrap7
) ? ABSOLUTE(__AltReservedTrap7
) :
        (DEFINED(__ReservedTrap7
)    ? ABSOLUTE(__ReservedTrap7
)    :
         ABSOLUTE(__DefaultInterrupt)));
    LONG(DEFINED(__AltINT0Interrupt
) ? ABSOLUTE(__AltINT0Interrupt
) :
        (DEFINED(__INT0Interrupt
)    ? ABSOLUTE(__INT0Interrupt
)    :
         ABSOLUTE(__DefaultInterrupt)));
    LONG(DEFINED(__AltIC1Interrupt
)  ? ABSOLUTE(__AltIC1Interrupt
)  :
        (DEFINED(__IC1Interrupt
)     ? ABSOLUTE(__IC1Interrupt
)     :
         ABSOLUTE(__DefaultInterrupt)));
    LONG(DEFINED(__AltOC1Interrupt
)  ? ABSOLUTE(__AltOC1Interrupt
)  :
        (DEFINED(__OC1Interrupt
)     ? ABSOLUTE(__OC1Interrupt
)     :
         ABSOLUTE(__DefaultInterrupt)));
    LONG(DEFINED(__AltT1Interrupt
)   ? ABSOLUTE(__AltT1Interrupt
)   :
        (DEFINED(__T1Interrupt
)      ? ABSOLUTE(__T1Interrupt
)      :
         ABSOLUTE(__DefaultInterrupt)));
    LONG(DEFINED(__AltIC2Interrupt
)  ? ABSOLUTE(__AltIC2Interrupt
)  :
        (DEFINED(__IC2Interrupt
)     ? ABSOLUTE(__IC2Interrupt
)     :
         ABSOLUTE(__DefaultInterrupt)));
    LONG(DEFINED(__AltOC2Interrupt
)  ? ABSOLUTE(__AltOC2Interrupt
)  :
        (DEFINED(__OC2Interrupt
)     ? ABSOLUTE(__OC2Interrupt
)     :
         ABSOLUTE(__DefaultInterrupt)));
    LONG(DEFINED(__AltT2Interrupt
)   ? ABSOLUTE(__AltT2Interrupt
)   :
        (DEFINED(__T2Interrupt
)      ? ABSOLUTE(__T2Interrupt
)      :
         ABSOLUTE(__DefaultInterrupt)));
    LONG(DEFINED(__AltT3Interrupt
)   ? ABSOLUTE(__AltT3Interrupt
)   :
        (DEFINED(__T3Interrupt
)      ? ABSOLUTE(__T3Interrupt
)      :
         ABSOLUTE(__DefaultInterrupt)));
    LONG(DEFINED(__AltSPI1Interrupt
) ? ABSOLUTE(__AltSPI1Interrupt
) :

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -