88 #define MBED_APP_SIZE 0x80000
99#endif
1010
11+ #if !defined(MBED_RAM_START)
12+ #define MBED_RAM_START 0x10000000
13+ #endif
14+
15+ #if !defined(MBED_RAM_SIZE)
16+ #define MBED_RAM_SIZE 0x00008000
17+ #endif
18+
1119#if !defined(MBED_BOOT_STACK_SIZE)
1220 #define MBED_BOOT_STACK_SIZE 0x400
1321#endif
1422
15- #define Stack_Size MBED_BOOT_STACK_SIZE
23+ ; 8_byte_aligned(49 vect * 4 bytes) = 8_byte_aligned(0xC4) = 0xC8
24+ #define VECTOR_SIZE 0xC8
25+
26+ #define RAM_FIXED_SIZE (MBED_BOOT_STACK_SIZE+VECTOR_SIZE+0x20)
1627
1728LR_IROM1 MBED_APP_START MBED_APP_SIZE { ; load region size_region
1829 ER_IROM0 MBED_APP_START 0x2FC { ; load address = execution address
@@ -28,20 +39,21 @@ LR_IROM1 MBED_APP_START MBED_APP_SIZE { ; load region size_region
2839 }
2940 ; 8_byte_aligned(49 vect * 4 bytes) = 8_byte_aligned(0xC4) = 0xC8
3041 ; 32KB (RAM size) - 0xC8 (NIVT) - 32 (topmost 32 bytes used by IAP functions) = 0x7F18
31- RW_IRAM1 0x100000C8 0x7F18-Stack_Size {
32- .ANY1 (+RW +ZI)
42+ RW_IRAM1 (MBED_RAM_START+VECTOR_SIZE) (MBED_RAM_SIZE-VECTOR_SIZE-0x20) { ; RW data
43+ .ANY (+RW +ZI)
3344 }
34- ARM_LIB_STACK (0x100000C8+0x7F18) EMPTY -Stack_Size { ; stack
45+ ARM_LIB_HEAP AlignExpr(+0, 16) EMPTY (MBED_RAM_SIZE-RAM_FIXED_SIZE+MBED_RAM_START-AlignExpr(ImageLimit(RW_IRAM1), 16)) {
3546 }
36- RW_IRAM2 0x2007C000 0x4000 { ; RW data, ETH RAM
47+ RW_IRAM2 0x2007C000 0x4000 { ; RW data, USB RAM
3748 .ANY (AHBSRAM0)
38- .ANY2 (+RW +ZI)
3949 }
4050 RW_IRAM3 0x20080000 0x4000 { ; RW data, ETH RAM
4151 .ANY (AHBSRAM1)
42- .ANY3 (+RW +ZI)
4352 }
4453 RW_IRAM4 0x40038000 0x0800 { ; RW data, CAN RAM
4554 .ANY (CANRAM)
4655 }
56+
57+ ARM_LIB_STACK (MBED_RAM_START+MBED_RAM_SIZE) EMPTY -MBED_BOOT_STACK_SIZE { ; stack
58+ }
4759}
0 commit comments