?? p30f4011.gld
字號:
/*
** Linker Script for 30f4011
*/
OUTPUT_ARCH("30f4011")
EXTERN(__resetPRI)
EXTERN(__resetALT)
/*
** Memory Regions
*/
MEMORY
{
data (a!xr) : ORIGIN = 0x800, LENGTH = 2048
program (xr) : ORIGIN = 0x100, LENGTH = ((16K * 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 = 0x7FFC00, LENGTH = (1024)
}
__NO_HANDLES = 1; /* Suppress handles on this device */
/*
** Config Word Addresses
*/
__FOSC = 0xF80000;
__FWDT = 0xF80002;
__FBORPOR = 0xF80004;
__CONFIG4 = 0xF80006;
__CONFIG5 = 0xF80008;
__FGS = 0xF8000A;
/*
** 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 = 0x0C00; /* 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 0x7FFC00 :
** {
** *(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
) :
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -