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