Skip to content

Commit ddd1063

Browse files
RobinKastbergkartben
authored andcommitted
soc: stm32: handle CCM in LINKER_GENERATOR
Currently, the soc/stm32/ccm.ld is not handled in CMAKE_LINKER_GENERATOR. This commit adds support, making STM32 supportable by alternative linkers such as AC6 and IAR. This commit also renames a variable to match all other LOADADDR symbols. Signed-off-by: Robin Kastberg <[email protected]>
1 parent 5f77138 commit ddd1063

File tree

5 files changed

+12
-5
lines changed

5 files changed

+12
-5
lines changed

include/zephyr/linker/linker-defs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ extern char __gcov_bss_size[];
161161
extern char _end[];
162162

163163
#if (DT_NODE_HAS_STATUS_OKAY(DT_CHOSEN(zephyr_ccm)))
164-
extern char __ccm_data_rom_start[];
164+
extern char __ccm_data_load_start[];
165165
extern char __ccm_start[];
166166
extern char __ccm_data_start[];
167167
extern char __ccm_data_end[];

kernel/xip.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ void z_data_copy(void)
3232
__ramfunc_end - __ramfunc_region_start);
3333
#endif /* CONFIG_ARCH_HAS_RAMFUNC_SUPPORT */
3434
#if DT_NODE_HAS_STATUS_OKAY(DT_CHOSEN(zephyr_ccm))
35-
z_early_memcpy(&__ccm_data_start, &__ccm_data_rom_start,
35+
z_early_memcpy(&__ccm_data_start, &__ccm_data_load_start,
3636
__ccm_data_end - __ccm_data_start);
3737
#endif
3838
#if DT_NODE_HAS_STATUS_OKAY(DT_CHOSEN(zephyr_itcm))

samples/boards/st/ccm/src/main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ int main(void)
125125
printf("Initialised DATA area : [%p, %p)\n",
126126
&__ccm_data_start, &__ccm_data_end);
127127
printf("Start of DATA in FLASH : %p\n",
128-
&__ccm_data_rom_start);
128+
&__ccm_data_load_start);
129129

130130
check_initial_var_values();
131131

soc/st/stm32/common/CMakeLists.txt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,14 @@ zephyr_sources(
77
soc_config.c
88
)
99

10-
zephyr_linker_sources_ifdef(CONFIG_STM32_CCM SECTIONS ccm.ld)
10+
if(DEFINED CONFIG_STM32_CCM)
11+
zephyr_linker_group(NAME CCM_REGION VMA CCM LMA ROM_REGION)
12+
zephyr_linker_section(NAME .ccm_bss GROUP CCM_REGION SUBALIGN 4 TYPE BSS )
13+
zephyr_linker_section(NAME .ccm_noinit GROUP CCM_REGION SUBALIGN 4 TYPE NOLOAD NOINIT)
14+
zephyr_linker_section(NAME .ccm_data GROUP CCM_REGION SUBALIGN 4)
15+
16+
zephyr_linker_sources(SECTIONS ccm.ld)
17+
endif()
1118

1219
zephyr_sources_ifdef(CONFIG_STM32_BACKUP_SRAM stm32_backup_sram.c)
1320
zephyr_linker_sources_ifdef(CONFIG_STM32_BACKUP_SRAM SECTIONS stm32_backup_sram.ld)

soc/st/stm32/common/ccm.ld

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@ GROUP_START(CCM)
2929

3030
__ccm_end = .;
3131

32-
__ccm_data_rom_start = LOADADDR(_CCM_DATA_SECTION_NAME);
32+
__ccm_data_load_start = LOADADDR(_CCM_DATA_SECTION_NAME);
3333

3434
GROUP_END(CCM)

0 commit comments

Comments
 (0)