Created
July 27, 2014 03:32
-
-
Save jotux/b8d7edee3e634da20353 to your computer and use it in GitHub Desktop.
lnk_msp430fr5969.cmd
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
MEMORY | |
{ | |
SFR : origin = 0x0000, length = 0x0010 | |
PERIPHERALS_8BIT : origin = 0x0010, length = 0x00F0 | |
PERIPHERALS_16BIT : origin = 0x0100, length = 0x0100 | |
RAM : origin = 0x1C00, length = 0x0800 | |
INFOA : origin = 0x1980, length = 0x0080 | |
INFOB : origin = 0x1900, length = 0x0080 | |
INFOC : origin = 0x1880, length = 0x0080 | |
INFOD : origin = 0x1800, length = 0x0080 | |
FRAM : origin = 0x4400, length = 0xAB80 | |
FRAM_DATA : origin = 0xEF80, length = 0x1000 | |
FRAM2 : origin = 0x10000,length = 0x4000 | |
JTAGSIGNATURE : origin = 0xFF80, length = 0x0004, fill = 0xFFFF | |
BSLSIGNATURE : origin = 0xFF84, length = 0x0004, fill = 0xFFFF | |
IPESIGNATURE : origin = 0xFF88, length = 0x0008, fill = 0xFFFF | |
INT00 : origin = 0xFF90, length = 0x0002 | |
INT01 : origin = 0xFF92, length = 0x0002 | |
INT02 : origin = 0xFF94, length = 0x0002 | |
INT03 : origin = 0xFF96, length = 0x0002 | |
INT04 : origin = 0xFF98, length = 0x0002 | |
INT05 : origin = 0xFF9A, length = 0x0002 | |
INT06 : origin = 0xFF9C, length = 0x0002 | |
INT07 : origin = 0xFF9E, length = 0x0002 | |
INT08 : origin = 0xFFA0, length = 0x0002 | |
INT09 : origin = 0xFFA2, length = 0x0002 | |
INT10 : origin = 0xFFA4, length = 0x0002 | |
INT11 : origin = 0xFFA6, length = 0x0002 | |
INT12 : origin = 0xFFA8, length = 0x0002 | |
INT13 : origin = 0xFFAA, length = 0x0002 | |
INT14 : origin = 0xFFAC, length = 0x0002 | |
INT15 : origin = 0xFFAE, length = 0x0002 | |
INT16 : origin = 0xFFB0, length = 0x0002 | |
INT17 : origin = 0xFFB2, length = 0x0002 | |
INT18 : origin = 0xFFB4, length = 0x0002 | |
INT19 : origin = 0xFFB6, length = 0x0002 | |
INT20 : origin = 0xFFB8, length = 0x0002 | |
INT21 : origin = 0xFFBA, length = 0x0002 | |
INT22 : origin = 0xFFBC, length = 0x0002 | |
INT23 : origin = 0xFFBE, length = 0x0002 | |
INT24 : origin = 0xFFC0, length = 0x0002 | |
INT25 : origin = 0xFFC2, length = 0x0002 | |
INT26 : origin = 0xFFC4, length = 0x0002 | |
INT27 : origin = 0xFFC6, length = 0x0002 | |
INT28 : origin = 0xFFC8, length = 0x0002 | |
INT29 : origin = 0xFFCA, length = 0x0002 | |
INT30 : origin = 0xFFCC, length = 0x0002 | |
INT31 : origin = 0xFFCE, length = 0x0002 | |
INT32 : origin = 0xFFD0, length = 0x0002 | |
INT33 : origin = 0xFFD2, length = 0x0002 | |
INT34 : origin = 0xFFD4, length = 0x0002 | |
INT35 : origin = 0xFFD6, length = 0x0002 | |
INT36 : origin = 0xFFD8, length = 0x0002 | |
INT37 : origin = 0xFFDA, length = 0x0002 | |
INT38 : origin = 0xFFDC, length = 0x0002 | |
INT39 : origin = 0xFFDE, length = 0x0002 | |
INT40 : origin = 0xFFE0, length = 0x0002 | |
INT41 : origin = 0xFFE2, length = 0x0002 | |
INT42 : origin = 0xFFE4, length = 0x0002 | |
INT43 : origin = 0xFFE6, length = 0x0002 | |
INT44 : origin = 0xFFE8, length = 0x0002 | |
INT45 : origin = 0xFFEA, length = 0x0002 | |
INT46 : origin = 0xFFEC, length = 0x0002 | |
INT47 : origin = 0xFFEE, length = 0x0002 | |
INT48 : origin = 0xFFF0, length = 0x0002 | |
INT49 : origin = 0xFFF2, length = 0x0002 | |
INT50 : origin = 0xFFF4, length = 0x0002 | |
INT51 : origin = 0xFFF6, length = 0x0002 | |
INT52 : origin = 0xFFF8, length = 0x0002 | |
INT53 : origin = 0xFFFA, length = 0x0002 | |
INT54 : origin = 0xFFFC, length = 0x0002 | |
RESET : origin = 0xFFFE, length = 0x0002 | |
} | |
/****************************************************************************/ | |
/* SPECIFY THE SECTIONS ALLOCATION INTO MEMORY */ | |
/****************************************************************************/ | |
SECTIONS | |
{ | |
GROUP(ALL_FRAM) | |
{ | |
GROUP(READ_WRITE_MEMORY) | |
{ | |
.cio : {} /* C I/O BUFFER */ | |
.sysmem : {} /* DYNAMIC MEMORY ALLOCATION AREA */ | |
} ALIGN(0x0400), RUN_START(fram_rw_start) | |
GROUP(READ_ONLY_MEMORY) | |
{ | |
.cinit : {} /* INITIALIZATION TABLES */ | |
.pinit : {} /* C++ CONSTRUCTOR TABLES */ | |
.init_array : {} /* C++ CONSTRUCTOR TABLES */ | |
.mspabi.exidx : {} /* C++ CONSTRUCTOR TABLES */ | |
.mspabi.extab : {} /* C++ CONSTRUCTOR TABLES */ | |
.const : {} /* CONSTANT DATA */ | |
} ALIGN(0x0400), RUN_START(fram_ro_start) | |
GROUP(EXECUTABLE_MEMORY) | |
{ | |
.text : {} /* CODE */ | |
} ALIGN(0x0400), RUN_START(fram_rx_start) | |
GROUP(IPENCAPSULATED_MEMORY) | |
{ | |
.ipestruct : {} /* IPE Data structure */ | |
.ipe : {} /* IPE */ | |
} ALIGN(0x0400), RUN_START(fram_ipe_start) RUN_END(fram_ipe_end) | |
} > FRAM | FRAM2 | |
.jtagsignature : {} > JTAGSIGNATURE /* JTAG SIGNATURE */ | |
.bslsignature : {} > BSLSIGNATURE /* BSL SIGNATURE */ | |
GROUP(SIGNATURE_SHAREDMEMORY) | |
{ | |
.ipesignature : {} /* IPE SIGNATURE */ | |
.jtagpassword : {} /* JTAG PASSWORD */ | |
} > IPESIGNATURE | |
.bss : {} > RAM /* GLOBAL & STATIC VARS */ | |
.data : {} > RAM /* GLOBAL & STATIC VARS */ | |
.stack : {} > RAM (HIGH) /* SOFTWARE SYSTEM STACK */ | |
.fram_data : {} > FRAM_DATA,type = NOINIT | |
.infoA : {} > INFOA /* MSP430 INFO FRAM MEMORY SEGMENTS */ | |
.infoB : {} > INFOB | |
.infoC : {} > INFOC | |
.infoD : {} > INFOD | |
/* MSP430 INTERRUPT VECTORS */ | |
.int00 : {} > INT00 | |
.int01 : {} > INT01 | |
.int02 : {} > INT02 | |
.int03 : {} > INT03 | |
.int04 : {} > INT04 | |
.int05 : {} > INT05 | |
.int06 : {} > INT06 | |
.int07 : {} > INT07 | |
.int08 : {} > INT08 | |
.int09 : {} > INT09 | |
.int10 : {} > INT10 | |
.int11 : {} > INT11 | |
.int12 : {} > INT12 | |
.int13 : {} > INT13 | |
.int14 : {} > INT14 | |
.int15 : {} > INT15 | |
.int16 : {} > INT16 | |
.int17 : {} > INT17 | |
.int18 : {} > INT18 | |
.int19 : {} > INT19 | |
.int20 : {} > INT20 | |
.int21 : {} > INT21 | |
.int22 : {} > INT22 | |
.int23 : {} > INT23 | |
.int24 : {} > INT24 | |
.int25 : {} > INT25 | |
.int26 : {} > INT26 | |
.int27 : {} > INT27 | |
.int28 : {} > INT28 | |
.int29 : {} > INT29 | |
AES256 : { * ( .int30 ) } > INT30 type = VECT_INIT | |
RTC : { * ( .int31 ) } > INT31 type = VECT_INIT | |
PORT4 : { * ( .int32 ) } > INT32 type = VECT_INIT | |
PORT3 : { * ( .int33 ) } > INT33 type = VECT_INIT | |
TIMER3_A1 : { * ( .int34 ) } > INT34 type = VECT_INIT | |
TIMER3_A0 : { * ( .int35 ) } > INT35 type = VECT_INIT | |
PORT2 : { * ( .int36 ) } > INT36 type = VECT_INIT | |
TIMER2_A1 : { * ( .int37 ) } > INT37 type = VECT_INIT | |
TIMER2_A0 : { * ( .int38 ) } > INT38 type = VECT_INIT | |
PORT1 : { * ( .int39 ) } > INT39 type = VECT_INIT | |
TIMER1_A1 : { * ( .int40 ) } > INT40 type = VECT_INIT | |
TIMER1_A0 : { * ( .int41 ) } > INT41 type = VECT_INIT | |
DMA : { * ( .int42 ) } > INT42 type = VECT_INIT | |
USCI_A1 : { * ( .int43 ) } > INT43 type = VECT_INIT | |
TIMER0_A1 : { * ( .int44 ) } > INT44 type = VECT_INIT | |
TIMER0_A0 : { * ( .int45 ) } > INT45 type = VECT_INIT | |
ADC12 : { * ( .int46 ) } > INT46 type = VECT_INIT | |
USCI_B0 : { * ( .int47 ) } > INT47 type = VECT_INIT | |
USCI_A0 : { * ( .int48 ) } > INT48 type = VECT_INIT | |
WDT : { * ( .int49 ) } > INT49 type = VECT_INIT | |
TIMER0_B1 : { * ( .int50 ) } > INT50 type = VECT_INIT | |
TIMER0_B0 : { * ( .int51 ) } > INT51 type = VECT_INIT | |
COMP_E : { * ( .int52 ) } > INT52 type = VECT_INIT | |
UNMI : { * ( .int53 ) } > INT53 type = VECT_INIT | |
SYSNMI : { * ( .int54 ) } > INT54 type = VECT_INIT | |
.reset : {} > RESET /* MSP430 RESET VECTOR */ | |
} | |
/****************************************************************************/ | |
/* MPU/IPE SPECIFIC MEMORY SEGMENT DEFINITONS */ | |
/****************************************************************************/ | |
#ifdef _IPE_ENABLE | |
#define IPE_MPUIPLOCK 0x0080 | |
#define IPE_MPUIPENA 0x0040 | |
#define IPE_MPUIPPUC 0x0020 | |
// Evaluate settings for the control setting of IP Encapsulation | |
#if defined(_IPE_LOCK ) && (defined(_IPE_ASSERTPUC1) && (_IPE_ASSERTPUC1 == 0x08)) | |
fram_ipe_enable_value = (IPE_MPUIPENA | IPE_MPUIPPUC | IPE_MPUIPLOCK); | |
#elif defined(_IPE_LOCK ) | |
fram_ipe_enable_value = (IPE_MPUIPENA | IPE_MPUIPLOCK); | |
#elif (defined(_IPE_ASSERTPUC1) && (_IPE_ASSERTPUC1 == 0x08)) | |
fram_ipe_enable_value = (IPE_MPUIPENA | IPE_MPUIPPUC); | |
#else | |
fram_ipe_enable_value = (IPE_MPUIPENA); | |
#endif | |
// Segment definitions | |
#ifdef _IPE_MANUAL // For custom sizes selected in the GUI | |
fram_ipe_border1 = (_IPE_SEGB1>>4); | |
fram_ipe_border2 = (_IPE_SEGB2>>4); | |
#else // Automated sizes generated by the Linker | |
fram_ipe_border2 = (fram_ipe_end + 0x400)>> 4; | |
fram_ipe_border1 = fram_ipe_start >> 4; | |
#endif | |
fram_ipe_settings_struct_address = Ipe_settingsStruct >> 4; | |
fram_ipe_checksum = ~((fram_ipe_enable_value & fram_ipe_border2 & fram_ipe_border1) | (fram_ipe_enable_value & ~fram_ipe_border2 & ~fram_ipe_border1) | (~fram_ipe_enable_value & fram_ipe_border2 & ~fram_ipe_border1) | (~fram_ipe_enable_value & ~fram_ipe_border2 & fram_ipe_border1)); | |
#endif | |
#ifdef _MPU_ENABLE | |
#define MPUPW (0xA500) /* MPU Access Password */ | |
#define MPUENA (0x0001) /* MPU Enable */ | |
#define MPULOCK (0x0002) /* MPU Lock */ | |
#define MPUSEGIE (0x0010) /* MPU Enable NMI on Segment violation */ | |
__mpu_enable = 1; | |
// Segment definitions | |
#ifdef _MPU_MANUAL // For custom sizes selected in the GUI | |
mpu_segment_border1 = _MPU_SEGB1 >> 4; | |
mpu_segment_border2 = _MPU_SEGB2 >> 4; | |
mpu_sam_value = (_MPU_SAM0 << 12) | (_MPU_SAM3 << 8) | (_MPU_SAM2 << 4) | _MPU_SAM1; | |
#else // Automated sizes generated by Linker | |
mpu_segment_border1 = fram_rx_start >> 4; | |
mpu_segment_border2 = fram_ro_start >> 4; | |
mpu_sam_value = 0x4645; // Info R, Seg3 RX, Seg2 R, Seg1 RW | |
#endif | |
#ifdef _MPU_LOCK | |
#ifdef _MPU_ENABLE_NMI | |
mpu_ctl0_value = MPUPW | MPUENA | MPULOCK | MPUSEGIE; | |
#else | |
mpu_ctl0_value = MPUPW | MPUENA | MPULOCK; | |
#endif | |
#else | |
#ifdef _MPU_ENABLE_NMI | |
mpu_ctl0_value = MPUPW | MPUENA | MPUSEGIE; | |
#else | |
mpu_ctl0_value = MPUPW | MPUENA; | |
#endif | |
#endif | |
#endif | |
/****************************************************************************/ | |
/* INCLUDE PERIPHERALS MEMORY MAP */ | |
/****************************************************************************/ | |
-l msp430fr5969.cmd | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment