1+ /* Linker script to configure memory regions.
2+ *
3+ * SPDX-License-Identifier: BSD-3-Clause
4+ ******************************************************************************
5+ * @attention
6+ *
7+ * Copyright (c) 2016-2020 STMicroelectronics.
8+ * All rights reserved.
9+ *
10+ * This software component is licensed by ST under BSD 3-Clause license,
11+ * the "License"; You may not use this file except in compliance with the
12+ * License. You may obtain a copy of the License at:
13+ * opensource.org/licenses/BSD-3-Clause
14+ *
15+ ******************************************************************************
16+ */
17+
118if (!isdefinedsymbol(MBED_APP_START)) { define symbol MBED_APP_START = 0x08000000; }
219if (!isdefinedsymbol(MBED_APP_SIZE)) { define symbol MBED_APP_SIZE = 0x100000; }
320
@@ -6,35 +23,45 @@ define symbol __intvec_start__ = MBED_APP_START;
623define symbol __region_ROM_start__ = MBED_APP_START;
724define symbol __region_ROM_end__ = MBED_APP_START + MBED_APP_SIZE - 1;
825
26+ if (!isdefinedsymbol(MBED_CONF_TARGET_BOOT_STACK_SIZE)) {
27+ define symbol MBED_CONF_TARGET_BOOT_STACK_SIZE = 0x400;
28+ }
29+
930/* [RAM = 96kb + 32kb = 0x20000] */
10- /* Vector table dynamic copy: Total: 98 vectors = 392 bytes (0x188) to be reserved in RAM */
31+ /* Vector table dynamic copy: Total: 98 vectors * 4 = 392 bytes (0x188) to be reserved in RAM */
1132define symbol __NVIC_start__ = 0x10000000;
12- define symbol __NVIC_end__ = 0x10000187; /* Aligned on 8 bytes (392 = 49 x 8) */
13- define symbol __region_SRAM2_start__ = 0x10000188;
33+ define symbol __NVIC_end__ = 0x10000187;
34+ define symbol __region_CSTACK_start__ = 0x10000188;
35+ define symbol __region_CSTACK_end__ = __region_CSTACK_start__ + MBED_CONF_TARGET_BOOT_STACK_SIZE;
36+ define symbol __region_SRAM2_start__ = __region_CSTACK_end__;
1437define symbol __region_SRAM2_end__ = 0x10007FFF;
15- define symbol __region_SRAM1_start__ = 0x20000000;
38+ define symbol __region_CRASH_DATA_RAM_start__ = 0x20000000;
39+ define symbol __region_CRASH_DATA_RAM_end__ = 0x200000FF;
40+ define symbol __region_SRAM1_start__ = 0x20000100;
1641define symbol __region_SRAM1_end__ = 0x20017FFF;
1742
1843/* Memory regions */
1944define memory mem with size = 4G;
2045define region ROM_region = mem:[from __region_ROM_start__ to __region_ROM_end__];
21- define region SRAM2_region = mem:[from __region_SRAM2_start__ to __region_SRAM2_end__];
22- define region SRAM1_region = mem:[from __region_SRAM1_start__ to __region_SRAM1_end__];
46+ define region CSTACK_region = mem:[from __region_CSTACK_start__ to __region_CSTACK_end__];
47+ define region CRASH_DATA_RAM_region = mem:[from __region_CRASH_DATA_RAM_start__ to __region_CRASH_DATA_RAM_end__];
48+ define region RAM_region = mem:[from __region_SRAM2_start__ to __region_SRAM2_end__]
49+ | mem:[from __region_SRAM1_start__ to __region_SRAM1_end__];
2350
24- if (!isdefinedsymbol(MBED_CONF_TARGET_BOOT_STACK_SIZE)) {
25- define symbol MBED_CONF_TARGET_BOOT_STACK_SIZE = 0x400 ;
26- }
51+ /* Define Crash Data Symbols */
52+ define exported symbol __CRASH_DATA_RAM_START__ = __region_CRASH_DATA_RAM_start__ ;
53+ define exported symbol __CRASH_DATA_RAM_END__ = __region_CRASH_DATA_RAM_end__;
2754
2855define symbol __size_cstack__ = MBED_CONF_TARGET_BOOT_STACK_SIZE;
29- define symbol __size_heap__ = 0x8000 ;
56+ define symbol __size_heap__ = 0x10000 ;
3057define block CSTACK with alignment = 8, size = __size_cstack__ { };
31- define block HEAP with alignment = 8, size = __size_heap__ { };
58+ define block HEAP with expanding size, alignment = 8, minimum size = __size_heap__ { };
3259
3360initialize by copy with packing = zeros { readwrite };
3461do not initialize { section .noinit };
3562
3663place at address mem:__intvec_start__ { readonly section .intvec };
3764
3865place in ROM_region { readonly };
39- place in SRAM1_region { readwrite, block HEAP };
40- place in SRAM2_region { block CSTACK };
66+ place in CSTACK_region { block CSTACK };
67+ place in RAM_region { block HEAP, readwrite, zeroinit };
0 commit comments