Skip to content

Commit ac9c14d

Browse files
sylvioalvesnashif
authored andcommitted
soc: esp32: linker script clean up
This PR removes common-rom.ld section so that logging sections can now be mapped into RAM area. Signed-off-by: Sylvio Alves <[email protected]>
1 parent c6f6dd0 commit ac9c14d

File tree

3 files changed

+20
-75
lines changed

3 files changed

+20
-75
lines changed

soc/xtensa/esp32/Kconfig.defconfig

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ if BOOTLOADER_MCUBOOT
99
config HAS_FLASH_LOAD_OFFSET
1010
default y
1111

12-
config XIP
13-
default y
14-
1512
config MCUBOOT_GENERATE_UNSIGNED_IMAGE
1613
default y
1714

soc/xtensa/esp32/Kconfig.soc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ config SOC_ESP32
1010
select ARCH_HAS_GDBSTUB
1111
select ARCH_SUPPORTS_COREDUMP
1212
select PINCTRL
13+
select XIP
1314

1415
if SOC_ESP32
1516

soc/xtensa/esp32/linker.ld

Lines changed: 19 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -142,66 +142,6 @@ SECTIONS
142142
{
143143
_rodata_start = ABSOLUTE(.);
144144

145-
#ifdef CONFIG_USERSPACE
146-
Z_LINK_ITERABLE_ALIGNED(z_object_assignment, 4);
147-
#endif
148-
149-
#if defined(CONFIG_NET_SOCKETS)
150-
Z_LINK_ITERABLE_ALIGNED(net_socket_register, 4);
151-
#endif
152-
153-
#if defined(CONFIG_NET_L2_PPP)
154-
Z_LINK_ITERABLE_ALIGNED(ppp_protocol_handler, 4);
155-
#endif
156-
157-
Z_LINK_ITERABLE_ALIGNED(bt_l2cap_fixed_chan, 4);
158-
159-
#if defined(CONFIG_BT_BREDR)
160-
Z_LINK_ITERABLE_ALIGNED(bt_l2cap_br_fixed_chan, 4);
161-
#endif
162-
163-
#if defined(CONFIG_BT_CONN)
164-
Z_LINK_ITERABLE_ALIGNED(bt_conn_cb, 4)
165-
#endif
166-
167-
Z_LINK_ITERABLE_ALIGNED(bt_gatt_service_static, 4);
168-
169-
#if defined(CONFIG_BT_MESH)
170-
Z_LINK_ITERABLE_ALIGNED(bt_mesh_subnet_cb, 4);
171-
Z_LINK_ITERABLE_ALIGNED(bt_mesh_app_key_cb, 4);
172-
Z_LINK_ITERABLE_ALIGNED(bt_mesh_hb_cb, 4);
173-
#endif
174-
175-
#if defined(CONFIG_BT_MESH_FRIEND)
176-
Z_LINK_ITERABLE_ALIGNED(bt_mesh_friend_cb, 4);
177-
#endif
178-
179-
#if defined(CONFIG_BT_MESH_LOW_POWER)
180-
Z_LINK_ITERABLE_ALIGNED(bt_mesh_lpn_cb, 4);
181-
#endif
182-
183-
#if defined(CONFIG_BT_MESH_PROXY)
184-
Z_LINK_ITERABLE_ALIGNED(bt_mesh_proxy_cb, 4);
185-
#endif
186-
187-
#if defined(CONFIG_EC_HOST_CMD)
188-
Z_LINK_ITERABLE_ALIGNED(ec_host_cmd_handler, 4);
189-
#endif
190-
191-
#if defined(CONFIG_SETTINGS)
192-
Z_LINK_ITERABLE_ALIGNED(settings_handler_static, 4);
193-
#endif
194-
195-
Z_LINK_ITERABLE_ALIGNED(k_p4wq_initparam, 4);
196-
197-
Z_LINK_ITERABLE_ALIGNED(shell, 4);
198-
199-
Z_LINK_ITERABLE_ALIGNED(tracing_backend, 4)
200-
201-
__esp_shell_root_cmds_start = .;
202-
KEEP(*(SORT(.shell_root_cmd_*)));
203-
__esp_shell_root_cmds_end = .;
204-
205145
. = ALIGN(4);
206146
#include <snippets-rodata.ld>
207147

@@ -238,6 +178,19 @@ SECTIONS
238178
_rodata_end = ABSOLUTE(.);
239179
} GROUP_DATA_LINK_IN(RODATA_REGION, ROMABLE_REGION)
240180

181+
/* Flash segments (rodata and text) should be mapped in virtual address space by providing VMA.
182+
* Executing directly from LMA is not possible. */
183+
#pragma push_macro("GROUP_ROM_LINK_IN")
184+
#undef GROUP_ROM_LINK_IN
185+
#define GROUP_ROM_LINK_IN(vregion, lregion) > RODATA_REGION AT > lregion
186+
#include "linker/common-rom/common-rom-kernel-devices.ld"
187+
#include "linker/common-rom/common-rom-cpp.ld"
188+
#include "linker/common-rom/common-rom-net.ld"
189+
#include "linker/common-rom/common-rom-bt.ld"
190+
#include "linker/common-rom/common-rom-debug.ld"
191+
#include "linker/common-rom/common-rom-misc.ld"
192+
#pragma pop_macro("GROUP_ROM_LINK_IN")
193+
241194
_image_dram_start = LOADADDR(".dram0.data");
242195
_image_dram_size = LOADADDR(".dummy.dram.data") + SIZEOF(".dummy.dram.data") - _image_dram_start;
243196
_image_dram_vaddr = ADDR(".dram0.data");
@@ -283,22 +236,16 @@ SECTIONS
283236
_dram_data_end = ABSOLUTE(.);
284237
} GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION)
285238

286-
#pragma push_macro("GROUP_ROM_LINK_IN")
287-
#pragma push_macro("ITERABLE_SECTION_ROM")
288-
#undef GROUP_ROM_LINK_IN
289-
#undef ITERABLE_SECTION_ROM
290-
#define GROUP_ROM_LINK_IN GROUP_DATA_LINK_IN
291-
#define ITERABLE_SECTION_ROM(x,y)
292-
#include <linker/common-rom.ld>
293-
#pragma pop_macro("GROUP_ROM_LINK_IN")
294-
#pragma pop_macro("ITERABLE_SECTION_ROM")
295-
296239
#include <snippets-data-sections.ld>
297240
#include <linker/common-ram.ld>
298241
#include <snippets-ram-sections.ld>
299242

300-
__shell_root_cmds_start = __esp_shell_root_cmds_start;
301-
__shell_root_cmds_end = __esp_shell_root_cmds_end;
243+
/* logging sections should be placed in RAM area to avoid flash cache disabled issues */
244+
#pragma push_macro("GROUP_ROM_LINK_IN")
245+
#undef GROUP_ROM_LINK_IN
246+
#define GROUP_ROM_LINK_IN GROUP_DATA_LINK_IN
247+
#include "linker/common-rom/common-rom-logging.ld"
248+
#pragma pop_macro("GROUP_ROM_LINK_IN")
302249

303250
.dummy.dram.data :
304251
{

0 commit comments

Comments
 (0)