/*****************************************************************************/ /* application_lnk_msp430f5529.cmd */ /* Application Linker Script - MSP430F5529 (CGT v20.x ELF) */ /* */ /* RAM VECTOR TABLE LAYOUT: */ /* 0x2400 - 0x247F (128B) — RAM vector table (SYSRIVECT) */ /* 0x2480 - 0x43FF — Stack, .bss, .data */ /* */ /* FLASH LAYOUT: */ /* 0x4400 - 0xBE7F (~30KB) — Application code */ /* 0xBE80 - 0xBEFF (128B) — App flash vector table */ /* 0xBEFE (2B) — App reset vector (bootloader reads this) */ /* 0xBF00 - 0xBFFF (256B) — FOTA metadata */ /* 0xC000 - 0xFF7F (16KB) — Bootloader (do not touch) */ /* 0xFF80 - 0xFFFF (128B) — Real CPU vectors (bootloader owns) */ /*****************************************************************************/ -c -stack 0x0400 -heap 0x0200 /*--------------------------------------------------------------------------*/ /* CRITICAL: device I/O symbol definitions (FCTL1, WDTCTL, P1DIR etc.) */ /*--------------------------------------------------------------------------*/ -l msp430f5529.cmd MEMORY { SFR : origin = 0x0000, length = 0x0010 PERIPHERALS_8BIT : origin = 0x0010, length = 0x00F0 PERIPHERALS_16BIT : origin = 0x0100, length = 0x0100 /*------------------------------------------------------------------------ * RAM: starts at 0x2480 — first 128 bytes (0x2400-0x247F) are * reserved for the RAM vector table used with SYSRIVECT. * The app writes ISR addresses there in app_init_ram_vectors(). *------------------------------------------------------------------------*/ RAM : origin = 0x2480, length = 0x1F80 /* ~8KB - 128B */ INFOD : origin = 0x1800, length = 0x0080 INFOC : origin = 0x1880, length = 0x0080 INFOB : origin = 0x1900, length = 0x0080 INFOA : origin = 0x1980, length = 0x0080 /* Application code */ APP_FLASH : origin = 0x4400, length = 0x7A80 /* ~30KB */ /* App flash vector table — ISR addresses placed here by linker */ /* Bootloader reads 0xBEFE (.reset entry) to know where app starts */ APP_INT00 : origin = 0xBE80, length = 0x0002 APP_INT01 : origin = 0xBE82, length = 0x0002 APP_INT02 : origin = 0xBE84, length = 0x0002 APP_INT03 : origin = 0xBE86, length = 0x0002 APP_INT04 : origin = 0xBE88, length = 0x0002 APP_INT05 : origin = 0xBE8A, length = 0x0002 APP_INT06 : origin = 0xBE8C, length = 0x0002 APP_INT07 : origin = 0xBE8E, length = 0x0002 APP_INT08 : origin = 0xBE90, length = 0x0002 APP_INT09 : origin = 0xBE92, length = 0x0002 APP_INT10 : origin = 0xBE94, length = 0x0002 APP_INT11 : origin = 0xBE96, length = 0x0002 APP_INT12 : origin = 0xBE98, length = 0x0002 APP_INT13 : origin = 0xBE9A, length = 0x0002 APP_INT14 : origin = 0xBE9C, length = 0x0002 APP_INT15 : origin = 0xBE9E, length = 0x0002 APP_INT16 : origin = 0xBEA0, length = 0x0002 APP_INT17 : origin = 0xBEA2, length = 0x0002 APP_INT18 : origin = 0xBEA4, length = 0x0002 APP_INT19 : origin = 0xBEA6, length = 0x0002 APP_INT20 : origin = 0xBEA8, length = 0x0002 APP_INT21 : origin = 0xBEAA, length = 0x0002 APP_INT22 : origin = 0xBEAC, length = 0x0002 APP_INT23 : origin = 0xBEAE, length = 0x0002 APP_INT24 : origin = 0xBEB0, length = 0x0002 APP_INT25 : origin = 0xBEB2, length = 0x0002 APP_INT26 : origin = 0xBEB4, length = 0x0002 APP_INT27 : origin = 0xBEB6, length = 0x0002 APP_INT28 : origin = 0xBEB8, length = 0x0002 APP_INT29 : origin = 0xBEBA, length = 0x0002 APP_INT30 : origin = 0xBEBC, length = 0x0002 APP_INT31 : origin = 0xBEBE, length = 0x0002 APP_INT32 : origin = 0xBEC0, length = 0x0002 APP_INT33 : origin = 0xBEC2, length = 0x0002 APP_INT34 : origin = 0xBEC4, length = 0x0002 APP_INT35 : origin = 0xBEC6, length = 0x0002 APP_INT36 : origin = 0xBEC8, length = 0x0002 APP_INT37 : origin = 0xBECA, length = 0x0002 APP_INT38 : origin = 0xBECC, length = 0x0002 APP_INT39 : origin = 0xBECE, length = 0x0002 APP_INT40 : origin = 0xBED0, length = 0x0002 APP_INT41 : origin = 0xBED2, length = 0x0002 APP_INT42 : origin = 0xBED4, length = 0x0002 APP_INT43 : origin = 0xBED6, length = 0x0002 APP_INT44 : origin = 0xBED8, length = 0x0002 APP_INT45 : origin = 0xBEDA, length = 0x0002 APP_INT46 : origin = 0xBEDC, length = 0x0002 APP_INT47 : origin = 0xBEDE, length = 0x0002 APP_INT48 : origin = 0xBEE0, length = 0x0002 APP_INT49 : origin = 0xBEE2, length = 0x0002 APP_INT50 : origin = 0xBEE4, length = 0x0002 APP_INT51 : origin = 0xBEE6, length = 0x0002 APP_INT52 : origin = 0xBEE8, length = 0x0002 APP_INT53 : origin = 0xBEEA, length = 0x0002 APP_INT54 : origin = 0xBEEC, length = 0x0002 APP_INT55 : origin = 0xBEEE, length = 0x0002 APP_INT56 : origin = 0xBEF0, length = 0x0002 APP_INT57 : origin = 0xBEF2, length = 0x0002 APP_INT58 : origin = 0xBEF4, length = 0x0002 APP_INT59 : origin = 0xBEF6, length = 0x0002 APP_INT60 : origin = 0xBEF8, length = 0x0002 APP_INT61 : origin = 0xBEFA, length = 0x0002 APP_INT62 : origin = 0xBEFC, length = 0x0002 APP_RESET : origin = 0xBEFE, length = 0x0002 } SECTIONS { .text : {} > APP_FLASH .cinit : {} > APP_FLASH .const : {} > APP_FLASH .cio : {} > APP_FLASH .binit : {} > APP_FLASH .text:_isr : {} > APP_FLASH .pinit : {} > APP_FLASH .init_array : {} > APP_FLASH .mspabi.exidx : {} > APP_FLASH .mspabi.extab : {} > APP_FLASH /* RAM starts at 0x2480 — 0x2400-0x247F is the RAM vector table region */ .bss : {} > RAM .data : {} > RAM .TI.noinit : {} > RAM .stack : {} > RAM (HIGH) .sysmem : {} > RAM .infoA : {} > INFOA .infoB : {} > INFOB .infoC : {} > INFOC .infoD : {} > INFOD /*------------------------------------------------------------------------ * App flash vector table entries * These contain RTS default handler addresses (placed by linker). * app_init_ram_vectors() copies these to RAM then PATCHES the * Timer0_A0 and USCI_A1 slots with our actual ISR addresses. *------------------------------------------------------------------------*/ .int00 : {} > APP_INT00 .int01 : {} > APP_INT01 .int02 : {} > APP_INT02 .int03 : {} > APP_INT03 .int04 : {} > APP_INT04 .int05 : {} > APP_INT05 .int06 : {} > APP_INT06 .int07 : {} > APP_INT07 .int08 : {} > APP_INT08 .int09 : {} > APP_INT09 .int10 : {} > APP_INT10 .int11 : {} > APP_INT11 .int12 : {} > APP_INT12 .int13 : {} > APP_INT13 .int14 : {} > APP_INT14 .int15 : {} > APP_INT15 .int16 : {} > APP_INT16 .int17 : {} > APP_INT17 .int18 : {} > APP_INT18 .int19 : {} > APP_INT19 .int20 : {} > APP_INT20 .int21 : {} > APP_INT21 .int22 : {} > APP_INT22 .int23 : {} > APP_INT23 .int24 : {} > APP_INT24 .int25 : {} > APP_INT25 .int26 : {} > APP_INT26 .int27 : {} > APP_INT27 .int28 : {} > APP_INT28 .int29 : {} > APP_INT29 .int30 : {} > APP_INT30 .int31 : {} > APP_INT31 .int32 : {} > APP_INT32 .int33 : {} > APP_INT33 .int34 : {} > APP_INT34 .int35 : {} > APP_INT35 .int36 : {} > APP_INT36 .int37 : {} > APP_INT37 .int38 : {} > APP_INT38 .int39 : {} > APP_INT39 .int40 : {} > APP_INT40 /* Named vectors with type=VECT_INIT for CGT v20.x */ APP_RTC : { * ( .int41 ) } > APP_INT41 type = VECT_INIT APP_PORT2 : { * ( .int42 ) } > APP_INT42 type = VECT_INIT APP_T2A1 : { * ( .int43 ) } > APP_INT43 type = VECT_INIT APP_T2A0 : { * ( .int44 ) } > APP_INT44 type = VECT_INIT APP_UCB1 : { * ( .int45 ) } > APP_INT45 type = VECT_INIT APP_UCA1 : { * ( .int46 ) } > APP_INT46 type = VECT_INIT APP_PORT1 : { * ( .int47 ) } > APP_INT47 type = VECT_INIT APP_T1A1 : { * ( .int48 ) } > APP_INT48 type = VECT_INIT APP_T1A0 : { * ( .int49 ) } > APP_INT49 type = VECT_INIT APP_DMA : { * ( .int50 ) } > APP_INT50 type = VECT_INIT APP_USB : { * ( .int51 ) } > APP_INT51 type = VECT_INIT APP_T0A1 : { * ( .int52 ) } > APP_INT52 type = VECT_INIT APP_T0A0 : { * ( .int53 ) } > APP_INT53 type = VECT_INIT APP_ADC12 : { * ( .int54 ) } > APP_INT54 type = VECT_INIT APP_UCB0 : { * ( .int55 ) } > APP_INT55 type = VECT_INIT APP_UCA0 : { * ( .int56 ) } > APP_INT56 type = VECT_INIT APP_WDT : { * ( .int57 ) } > APP_INT57 type = VECT_INIT APP_T0B1 : { * ( .int58 ) } > APP_INT58 type = VECT_INIT APP_T0B0 : { * ( .int59 ) } > APP_INT59 type = VECT_INIT APP_COMPB : { * ( .int60 ) } > APP_INT60 type = VECT_INIT APP_UNMI : { * ( .int61 ) } > APP_INT61 type = VECT_INIT APP_SYSNMI : { * ( .int62 ) } > APP_INT62 type = VECT_INIT .reset : {} > APP_RESET /* Bootloader reads 0xBEFE */ }