-
-
Notifications
You must be signed in to change notification settings - Fork 212
/
Copy path0032-RP2040-adapt-linker-script-to-mbed.patch
100 lines (93 loc) · 3.43 KB
/
0032-RP2040-adapt-linker-script-to-mbed.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
From 84c75cfecf704381769e84c42acb822efd5b6d9a Mon Sep 17 00:00:00 2001
From: Martino Facchin <m.facchin@arduino.cc>
Date: Fri, 5 Mar 2021 17:01:18 +0100
Subject: [PATCH 032/110] RP2040: adapt linker script to mbed
---
.../TOOLCHAIN_GCC_ARM/memmap_default.ld | 16 ++++++++++++----
.../rp2_common/pico_standard_link/crt0.S | 14 --------------
targets/targets.json | 1 -
3 files changed, 12 insertions(+), 19 deletions(-)
diff --git a/targets/TARGET_RASPBERRYPI/TARGET_RP2040/TOOLCHAIN_GCC_ARM/memmap_default.ld b/targets/TARGET_RASPBERRYPI/TARGET_RP2040/TOOLCHAIN_GCC_ARM/memmap_default.ld
index fb2ff6d18a..d92bd42107 100644
--- a/targets/TARGET_RASPBERRYPI/TARGET_RP2040/TOOLCHAIN_GCC_ARM/memmap_default.ld
+++ b/targets/TARGET_RASPBERRYPI/TARGET_RP2040/TOOLCHAIN_GCC_ARM/memmap_default.ld
@@ -21,6 +21,12 @@
__stack (== StackTop)
*/
+#if !defined(MBED_CONF_TARGET_BOOT_STACK_SIZE)
+ /* This value is normally defined by the tools
+ to 0x1000 for bare metal and 0x400 for RTOS */
+ #define MBED_CONF_TARGET_BOOT_STACK_SIZE 0x400
+#endif
+
MEMORY
{
FLASH(rx) : ORIGIN = 0x10000000, LENGTH = 2048k
@@ -208,8 +214,9 @@ SECTIONS
.heap (COPY):
{
__end__ = .;
- end = __end__;
+ PROVIDE(end = .);
*(.heap*)
+ . = ORIGIN(RAM) + LENGTH(RAM) - MBED_CONF_TARGET_BOOT_STACK_SIZE;
__HeapLimit = .;
} > RAM
@@ -226,19 +233,20 @@ SECTIONS
{
*(.stack1*)
} > SCRATCH_X
+
.stack_dummy (COPY):
{
*(.stack*)
- } > SCRATCH_Y
+ } > RAM
.flash_end : {
__flash_binary_end = .;
} > FLASH
/* stack limit is poorly named, but historically is maximum heap ptr */
- __StackLimit = ORIGIN(RAM) + LENGTH(RAM);
+ __StackTop = ORIGIN(RAM) + LENGTH(RAM);
+ __StackLimit = __StackTop - MBED_CONF_TARGET_BOOT_STACK_SIZE;
__StackOneTop = ORIGIN(SCRATCH_X) + LENGTH(SCRATCH_X);
- __StackTop = ORIGIN(SCRATCH_Y) + LENGTH(SCRATCH_Y);
__StackOneBottom = __StackOneTop - SIZEOF(.stack1_dummy);
__StackBottom = __StackTop - SIZEOF(.stack_dummy);
PROVIDE(__stack = __StackTop);
diff --git a/targets/TARGET_RASPBERRYPI/TARGET_RP2040/pico-sdk/rp2_common/pico_standard_link/crt0.S b/targets/TARGET_RASPBERRYPI/TARGET_RP2040/pico-sdk/rp2_common/pico_standard_link/crt0.S
index 38de608634..3f90b95ee2 100644
--- a/targets/TARGET_RASPBERRYPI/TARGET_RP2040/pico-sdk/rp2_common/pico_standard_link/crt0.S
+++ b/targets/TARGET_RASPBERRYPI/TARGET_RP2040/pico-sdk/rp2_common/pico_standard_link/crt0.S
@@ -313,17 +313,3 @@ __get_current_exception:
mrs r0, ipsr
uxtb r0, r0
bx lr
-
-// ----------------------------------------------------------------------------
-// Stack/heap dummies to set size
-
-.section .stack
-// align to allow for memory protection (although this alignment is pretty much ignored by linker script)
-.align 5
- .equ StackSize, PICO_STACK_SIZE
-.space StackSize
-
-.section .heap
-.align 2
- .equ HeapSize, PICO_HEAP_SIZE
-.space HeapSize
diff --git a/targets/targets.json b/targets/targets.json
index 7859268c9c..9af3c2335e 100644
--- a/targets/targets.json
+++ b/targets/targets.json
@@ -8988,7 +8988,6 @@
"NANO_RP2040_CONNECT": {
"inherits": ["RP2040"],
"macros_add": [
- "PICO_HEAP_SIZE=0x30000",
"PICO_NO_BINARY_INFO=1",
"MBED_MPU_CUSTOM",
"PICO_TIME_DEFAULT_ALARM_POOL_DISABLED",
--
2.34.1