Skip to content

Commit ddc25b4

Browse files
Jordan Yatescarlescufi
authored andcommitted
linker: aarch32: simplify memory region generation
Simplify the linker script by using the helper macros introduced in <linker/devicetree_regions.h>. The conditional checks on the Kconfig symbols are discarded as their default values are typically set via the status="okay" property of the nodes, and hence the behaviour doesn't change. Signed-off-by: Jordan Yates <[email protected]>
1 parent 3979eda commit ddc25b4

File tree

1 file changed

+10
-35
lines changed
  • include/arch/arm/aarch32/cortex_m/scripts

1 file changed

+10
-35
lines changed

include/arch/arm/aarch32/cortex_m/scripts/linker.ld

Lines changed: 10 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include <linker/sections.h>
1616
#include <devicetree.h>
1717

18+
#include <linker/devicetree_regions.h>
1819
#include <linker/linker-defs.h>
1920
#include <linker/linker-tool.h>
2021

@@ -66,21 +67,6 @@
6667
#define RAM_ADDR CONFIG_SRAM_BASE_ADDRESS
6768
#endif
6869

69-
#if DT_NODE_HAS_STATUS(DT_CHOSEN(zephyr_ccm), okay)
70-
#define CCM_SIZE DT_REG_SIZE(DT_CHOSEN(zephyr_ccm))
71-
#define CCM_ADDR DT_REG_ADDR(DT_CHOSEN(zephyr_ccm))
72-
#endif
73-
74-
#if DT_NODE_HAS_STATUS(DT_CHOSEN(zephyr_itcm), okay)
75-
#define ITCM_SIZE DT_REG_SIZE(DT_CHOSEN(zephyr_itcm))
76-
#define ITCM_ADDR DT_REG_ADDR(DT_CHOSEN(zephyr_itcm))
77-
#endif
78-
79-
#if DT_NODE_HAS_STATUS(DT_CHOSEN(zephyr_dtcm), okay)
80-
#define DTCM_SIZE DT_REG_SIZE(DT_CHOSEN(zephyr_dtcm))
81-
#define DTCM_ADDR DT_REG_ADDR(DT_CHOSEN(zephyr_dtcm))
82-
#endif
83-
8470
#if defined(CONFIG_CUSTOM_SECTION_ALIGN)
8571
_region_min_align = CONFIG_CUSTOM_SECTION_MIN_ALIGN_SIZE;
8672
#else
@@ -109,32 +95,21 @@ MEMORY
10995
FLASH (rx) : ORIGIN = ROM_ADDR, LENGTH = ROM_SIZE
11096
#ifdef CONFIG_HAS_TI_CCFG
11197
FLASH_CCFG (rwx): ORIGIN = CCFG_ADDR, LENGTH = CCFG_SIZE
112-
#endif
113-
#if DT_NODE_HAS_STATUS(DT_CHOSEN(zephyr_ccm), okay)
114-
CCM (rw) : ORIGIN = CCM_ADDR, LENGTH = CCM_SIZE
115-
#endif
116-
#if DT_NODE_HAS_STATUS(DT_CHOSEN(zephyr_itcm), okay)
117-
ITCM (rw) : ORIGIN = ITCM_ADDR, LENGTH = ITCM_SIZE
118-
#endif
119-
#if DT_NODE_HAS_STATUS(DT_CHOSEN(zephyr_dtcm), okay)
120-
DTCM (rw) : ORIGIN = DTCM_ADDR, LENGTH = DTCM_SIZE
12198
#endif
12299
SRAM (wx) : ORIGIN = RAM_ADDR, LENGTH = RAM_SIZE
100+
/* Data & Instruction Tightly Coupled Memory */
101+
DT_REGION_FROM_NODE_STATUS_OKAY(ITCM, rw, DT_CHOSEN(zephyr_itcm))
102+
DT_REGION_FROM_NODE_STATUS_OKAY(DTCM, rw, DT_CHOSEN(zephyr_dtcm))
103+
/* STM32 Core Coupled Memory */
104+
DT_REGION_FROM_NODE_STATUS_OKAY(CCM, rw, DT_CHOSEN(zephyr_ccm))
123105
#ifdef CONFIG_BT_STM32_IPM
124106
SRAM1 (rw) : ORIGIN = RAM1_ADDR, LENGTH = RAM1_SIZE
125107
SRAM2 (rw) : ORIGIN = RAM2_ADDR, LENGTH = RAM2_SIZE
126108
#endif
127-
#ifdef CONFIG_MEMC_STM32_SDRAM
128-
#if DT_NODE_HAS_STATUS(DT_NODELABEL(sdram1), okay)
129-
SDRAM1 (rw) : ORIGIN = DT_REG_ADDR(DT_NODELABEL(sdram1)), LENGTH = DT_REG_SIZE(DT_NODELABEL(sdram1))
130-
#endif
131-
#if DT_NODE_HAS_STATUS(DT_NODELABEL(sdram2), okay)
132-
SDRAM2 (rw) : ORIGIN = DT_REG_ADDR(DT_NODELABEL(sdram2)), LENGTH = DT_REG_SIZE(DT_NODELABEL(sdram2))
133-
#endif
134-
#endif
135-
#ifdef CONFIG_STM32_BACKUP_SRAM
136-
BACKUP_SRAM (rw) : ORIGIN = DT_REG_ADDR(DT_NODELABEL(backup_sram)), LENGTH = DT_REG_SIZE(DT_NODELABEL(backup_sram))
137-
#endif
109+
/* STM32 alternate RAM configurations */
110+
DT_REGION_FROM_NODE_STATUS_OKAY(SDRAM1, rw, DT_NODELABEL(sdram1))
111+
DT_REGION_FROM_NODE_STATUS_OKAY(SDRAM2, rw, DT_NODELABEL(sdram2))
112+
DT_REGION_FROM_NODE_STATUS_OKAY(BACKUP_SRAM, rw, DT_NODELABEL(backup_sram))
138113
/* Used by and documented in include/linker/intlist.ld */
139114
IDT_LIST (wx) : ORIGIN = (RAM_ADDR + RAM_SIZE), LENGTH = 2K
140115
}

0 commit comments

Comments
 (0)