30
30
MEMORY
31
31
{
32
32
FLASH (rx) : ORIGIN = 0x8006000, LENGTH = 0x178000
33
- RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x40000
33
+ RAM (rwx) : ORIGIN = 0x20000004, LENGTH = 0x3fffc
34
+ BOOTLOADER_RESET_REGION (rwx) : ORIGIN = 0x20000000, LENGTH = 0x4
34
35
}
35
36
36
37
ENTRY (Reset_Handler )
@@ -48,6 +49,13 @@ SECTIONS
48
49
__Vectors_Size = __Vectors_End - __Vectors;
49
50
__lma_ramfuncs_start__ = .;
50
51
} > FLASH
52
+ .bootloader_reset_section (NOLOAD) :
53
+ {
54
+ __ResetReasonStart__ = .;
55
+ . = . + 4;
56
+ . = ALIGN (4);
57
+ __ResetReasonEnd__ = .;
58
+ } > BOOTLOADER_RESET_REGION
51
59
52
60
.stack (NOLOAD) :
53
61
{
@@ -59,31 +67,33 @@ SECTIONS
59
67
PROVIDE (__stack = __StackTop);
60
68
} > RAM
61
69
62
-
63
- .noinit (NOLOAD) :
64
- {
65
- *(.noinit*);
66
- } > RAM
67
-
68
70
.bss :
69
71
{
70
72
. = ALIGN (4);
71
73
__bss_start__ = .;
72
74
*(SORT_BY_ALIGNMENT(.bss*))
73
75
*(COMMON)
74
- . = ALIGN (4 );
76
+ . = ALIGN (32 );
75
77
__bss_end__ = .;
76
78
} > RAM
77
79
80
+
81
+ .noinit (NOLOAD) :
82
+ {
83
+ *(.noinit*);
84
+ . = ALIGN (32);
85
+ } > RAM
86
+
87
+
78
88
text_application_ram :
79
89
{
80
- . = ALIGN (4 );
90
+ . = ALIGN (32 );
81
91
__vma_ramfuncs_start__ = .;
82
92
__text_application_ram_start__ = .;
83
93
84
94
*(text_application_ram)
85
95
86
- . = ALIGN (4 );
96
+ . = ALIGN (32 );
87
97
__vma_ramfuncs_end__ = .;
88
98
__text_application_ram_end__ = .;
89
99
} > RAM AT > FLASH
@@ -196,16 +206,24 @@ SECTIONS
196
206
KEEP(*(SORT(.fini_array.*)))
197
207
KEEP(*(.fini_array))
198
208
PROVIDE_HIDDEN (__fini_array_end = .);
209
+ . = ALIGN (4);
210
+ *(SEGGER_RTT)
199
211
200
212
. = ALIGN (4);
201
213
/* All data end */
202
214
__data_end__ = .;
203
215
204
216
} > RAM AT > FLASH
217
+
218
+
219
+ /* Calculate heap size based on RAM limits. */
220
+ heap_limit = ORIGIN (RAM) + LENGTH (RAM); /* End of RAM */
221
+ heap_size = heap_limit - __HeapBase;
205
222
.memory_manager_heap (NOLOAD) :
206
223
{
207
224
. = ALIGN (8);
208
225
__HeapBase = .;
226
+ . += heap_size;
209
227
__end__ = .;
210
228
end = __end__;
211
229
_end = __end__;
@@ -214,7 +232,7 @@ SECTIONS
214
232
} > RAM
215
233
216
234
__heap_size = __HeapLimit - __HeapBase;
217
- __ram_end__ = 0x20000000 + 0x40000 ;
235
+ __ram_end__ = 0x20000004 + 0x3fffc ;
218
236
__main_flash_end__ = 0x8006000 + 0x178000;
219
237
220
238
/* This is where we handle flash storage blocks. We use dummy sections for finding the configured
0 commit comments