📄 bl 24fj64ga004.gld
字号:
/*
** Linker script outline for PIC24F bootloader (for PIC24FJ64GA004 device)
*/
OUTPUT_ARCH("24FJ64GA004")
EXTERN(__resetPRI)
EXTERN(__resetALT)
/*
** Memory Regions
*/
MEMORY
{
data (a!xr) : ORIGIN = 0x800, LENGTH = 0x2000
reset : ORIGIN = 0x0, LENGTH = 0x4
ivt : ORIGIN = 0x4, LENGTH = 0xFC
aivt : ORIGIN = 0x104, LENGTH = 0xFC
program (xr) : ORIGIN = 0x400, LENGTH = 0x800 /*start & length of BL*/
config2 : ORIGIN = 0xABFC, LENGTH = 0x2
config1 : ORIGIN = 0xABFE, LENGTH = 0x2
}
__CONFIG2 = 0xABFC;
__CONFIG1 = 0xABFE;
__IVT_BASE = 0x4;
__AIVT_BASE = 0x104;
__DATA_BASE = 0x800;
__CODE_BASE = 0x400; /* starting location of bootloader */
/*
** ==================== Section Map ======================
*/
SECTIONS
{
/*
** ========== Program Memory ==========
*/
/*
** Reset Instruction
*/
.reset :
{
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
**
** This section must not be assigned to __CODE_BASE,
** because CodeGuard(tm) sections may be located there.
*/
.text :
{
*(.init);
*(.handle);
*(.libc) *(.libm) *(.libdsp); /* keep together in this order */
*(.lib*);
*(.text);
} >program
/*
** Configuration Words
*/
__CONFIG2 :
{ *(__CONFIG2.sec) } >config2
__CONFIG1 :
{ *(__CONFIG1.sec) } >config1
/*
** =========== 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
/*
** Other sections in data memory are not explicitly mapped.
** Instead they are allocated according to their section
** attributes, which is most efficient.
**
** If a specific arrangement of sections is required
** (other than what can be achieved using attributes)
** additional sections may be defined here. See chapter
** 10.5 in the MPLAB ASM30/LINK30 User's Guide (DS51317)
** for more information.
*/
/*
** ========== 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
{
/*
** 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(__Interrupt4) ? ABSOLUTE(__Interrupt4) :
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(__SPI1ErrInterrupt) ? ABSOLUTE(__SPI1ErrInterrupt) :
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(__ADC1Interrupt) ? ABSOLUTE(__ADC1Interrupt) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt14) ? ABSOLUTE(__Interrupt14) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt15) ? ABSOLUTE(__Interrupt15) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__SI2C1Interrupt) ? ABSOLUTE(__SI2C1Interrupt) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__MI2C1Interrupt) ? ABSOLUTE(__MI2C1Interrupt) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__CompInterrupt) ? ABSOLUTE(__CompInterrupt) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__CNInterrupt) ? ABSOLUTE(__CNInterrupt) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__INT1Interrupt) ? ABSOLUTE(__INT1Interrupt) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt21) ? ABSOLUTE(__Interrupt21) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt22) ? ABSOLUTE(__Interrupt22) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt23) ? ABSOLUTE(__Interrupt23) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt24) ? ABSOLUTE(__Interrupt24) :
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(__SPI2ErrInterrupt) ? ABSOLUTE(__SPI2ErrInterrupt) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__SPI2Interrupt) ? ABSOLUTE(__SPI2Interrupt) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt34) ? ABSOLUTE(__Interrupt34) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt35) ? ABSOLUTE(__Interrupt35) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt36) ? ABSOLUTE(__Interrupt36) :
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(__Interrupt40) ? ABSOLUTE(__Interrupt40) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__OC5Interrupt) ? ABSOLUTE(__OC5Interrupt) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt42) ? ABSOLUTE(__Interrupt42) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt43) ? ABSOLUTE(__Interrupt43) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt44) ? ABSOLUTE(__Interrupt44) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__PMPInterrupt) ? ABSOLUTE(__PMPInterrupt) :
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(__SI2C2Interrupt) ? ABSOLUTE(__SI2C2Interrupt) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__MI2C2Interrupt) ? ABSOLUTE(__MI2C2Interrupt) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt51) ? ABSOLUTE(__Interrupt51) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt52) ? ABSOLUTE(__Interrupt52) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt53) ? ABSOLUTE(__Interrupt53) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt54) ? ABSOLUTE(__Interrupt54) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt55) ? ABSOLUTE(__Interrupt55) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt56) ? ABSOLUTE(__Interrupt56) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt57) ? ABSOLUTE(__Interrupt57) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt58) ? ABSOLUTE(__Interrupt58) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt59) ? ABSOLUTE(__Interrupt59) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt60) ? ABSOLUTE(__Interrupt60) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt61) ? ABSOLUTE(__Interrupt61) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__RTCCInterrupt) ? ABSOLUTE(__RTCCInterrupt) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt63) ? ABSOLUTE(__Interrupt63) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt64) ? ABSOLUTE(__Interrupt64) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__U1ErrInterrupt) ? ABSOLUTE(__U1ErrInterrupt) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__U2ErrInterrupt) ? ABSOLUTE(__U2ErrInterrupt) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__CRCInterrupt) ? ABSOLUTE(__CRCInterrupt) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt68) ? ABSOLUTE(__Interrupt68) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt69) ? ABSOLUTE(__Interrupt69) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt70) ? ABSOLUTE(__Interrupt70) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt71) ? ABSOLUTE(__Interrupt71) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__LVDInterrupt) ? ABSOLUTE(__LVDInterrupt) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt73) ? ABSOLUTE(__Interrupt73) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt74) ? ABSOLUTE(__Interrupt74) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt75) ? ABSOLUTE(__Interrupt75) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt76) ? ABSOLUTE(__Interrupt76) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt77) ? ABSOLUTE(__Interrupt77) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt78) ? ABSOLUTE(__Interrupt78) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt79) ? ABSOLUTE(__Interrupt79) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt80) ? ABSOLUTE(__Interrupt80) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt81) ? ABSOLUTE(__Interrupt81) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt82) ? ABSOLUTE(__Interrupt82) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt83) ? ABSOLUTE(__Interrupt83) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt84) ? ABSOLUTE(__Interrupt84) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt85) ? ABSOLUTE(__Interrupt85) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt86) ? ABSOLUTE(__Interrupt86) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt87) ? ABSOLUTE(__Interrupt87) :
ABSOLUTE(__DefaultInterrupt));
LONG( DEFINED(__Interrupt88) ? ABSOLUTE(__Interrupt88) :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -