This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430FR6047: How the IAR create default MPU Segmentation for the memory protection unit?

Part Number: MSP430FR6047


Hi,

I just want to know about the default MPU segmentation in IAR compiler to protect the FRAM memory.

Does it take the input from linker file? I have checked that we can define MPU_B1 and MPU_B2 border in the linker file, but I couldn't understand it completely.

FYI I am not changing the Memory Protection Unit (MPU) option under general option in IAR.

Adding here the linker file on which I am working,

/*****************************************************************************************************************

// ---------------------------------------------------------
// Configuation
//

// -----------------------------------------------
// Stack and heap sizes
//

// Uncomment for command line use
//-D_STACK_SIZE=160
//-D_DATA16_HEAP_SIZE=160
//-D_DATA20_HEAP_SIZE=160
//-g?mpu2_init
//-g__iar_430_ipe_signature

// Define application area
//-D_Appl_Start=0x5000
//-D_Appl_End=0xFF7F
//-D_Flex_Start=0x10000
//-D_Flex_End=0x43FFF
//-D_BSTRP_Start=0x4000
//-D_BSTRP_End=0x4FFF

// -----------------------------------------------
// Define cpu
//

-cmsp430


// -----------------------------------------------
// Support for placing functions in read/write memory
//

-QCODE_I=CODE_ID


// -----------------------------------------------
// Support for thread local storage
//

-QTLS16_I=TLS16_ID


// -----------------------------------------------
// Hardware multiplier location
//

-D__iar_HWMUL=4C0


// ---------------------------------------------------------
// Placement directives
//

// -----------------------------------------------
// RAM memory
//

-Z(DATA)TINYRAM=000A-001F
-Z(DATA)LEARAM=2C00-3AC7
-Z(DATA)LEASTACK=3AC8-3BFF
-Z(DATA)DATA16_I,DATA16_Z,DATA16_N,TLS16_I=1C00-2BFF
-Z(DATA)CODE_I
-Z(DATA)DATA20_I,DATA20_Z,DATA20_N
-Z(DATA)CSTACK+_STACK_SIZE#


// -----------------------------------------------
// FRAM memory
//

// -------------------------------------
// Low memory 0-0FFFF
//

// ---------------------------
// Read/write data in FRAM
//

-Z(CONST)DATA16_P,DATA20_P=4000-4FFF
-Z(DATA)DATA16_HEAP+_DATA16_HEAP_SIZE
-Z(DATA)DATA20_HEAP+_DATA20_HEAP_SIZE

// ---------------------------
// Memory Protection Unit (MPU) border
//

-Z(CONST)MPU_B1

// ---------------------------
// Constant data
//

-Z(CONST)DATA16_C,DATA16_ID,TLS16_ID,DIFUNCT,CHECKSUM=4000-4FFF

// ---------------------------
// Memory Protection Unit (MPU) border
//

-Z(CONST)MPU_B2

// ---------------------------
// Intellectual Property Encapsulation (IPE)
//

-Z(CONST)IPE_B1=4000-4FFF
-Z(DATA)IPEDATA16_N
-Z(CODE)IPECODE16
-Z(CONST)IPEDATA16_C,IPE_B2

// ---------------------------
// Code
//

-Z(CODE)CSTART,ISR_CODE,CODE16=4000-4FFF

// -------------------------------------
// All memory 0-FFFFF
//

// ---------------------------
// Code
//

-P(CODE)CODE=4000-4FFF
-Z(CODE)CODE_PAD

// ---------------------------
// Constant data
//

-Z(CONST)DATA20_C,DATA20_ID,CODE_ID=4000-4FFF
//-Z(CONST)VERSION=43FF0-43FF7
//-Z(CONST)LIB_VERSION=43FF8-43FFF


// -------------------------------------
// Signature memory and interrupt vectors
//

//-Z(CONST)JTAGSIGNATURE=FF80-FF83
//-Z(CONST)BSLSIGNATURE=FF84-FF87
//-Z(CONST)IPESIGNATURE=FF88-FF8F
-Z(CODE)INTVEC=FF90-FFFF
-Z(CODE)RESET=FFFE-FFFF

/*****************************************************************************************************************  

For above linker file how the 3 segments will be defined?

Regards

Piyush

**Attention** This is a public forum