Skip to content

Commit f5eada5

Browse files
galakstephanosio
authored andcommitted
cmake: linker: arm: put RAM sections in RAM region
Cleanup RAM layout so that the RAM_REGION is now in the RAM memory region. Put .bss in RAM_REGION. This means we have a proper program header for the RAM region. As part of this extend zephyr_linker_symbol to allow it to take an OBJECT paramater to specify the region to associate a symbol to. Signed-off-by: Kumar Gala <[email protected]>
1 parent 7d1a5f5 commit f5eada5

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

cmake/linker_script/arm/linker.cmake

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ else()
4949
set(rom_start ${RAM_ADDR})
5050
endif()
5151

52-
zephyr_linker_group(NAME RAM_REGION VMA RAM LMA ROM_REGION)
52+
zephyr_linker_group(NAME RAM_REGION VMA RAM LMA RAM)
5353
zephyr_linker_group(NAME TEXT_REGION GROUP ROM_REGION SYMBOL SECTION)
5454
zephyr_linker_group(NAME RODATA_REGION GROUP ROM_REGION)
5555
zephyr_linker_group(NAME DATA_REGION GROUP RAM_REGION SYMBOL SECTION)
@@ -122,7 +122,7 @@ include(${COMMON_ZEPHYR_LINKER_DIR}/common-ram.cmake)
122122
#include(kobject.ld)
123123

124124
if(NOT CONFIG_USERSPACE)
125-
zephyr_linker_section(NAME .bss VMA RAM LMA FLASH TYPE BSS)
125+
zephyr_linker_section(NAME .bss VMA RAM LMA RAM_REGION TYPE BSS)
126126
zephyr_linker_section_configure(SECTION .bss INPUT COMMON)
127127
zephyr_linker_section_configure(SECTION .bss INPUT ".kernel_bss.*")
128128
# As memory is cleared in words only, it is simpler to ensure the BSS
@@ -135,11 +135,11 @@ if(NOT CONFIG_USERSPACE)
135135
zephyr_linker_section_configure(SECTION .noinit INPUT ".kernel_noinit.*")
136136
endif()
137137

138-
zephyr_linker_symbol(SYMBOL __kernel_ram_start EXPR "(@__bss_start@)")
139-
zephyr_linker_symbol(SYMBOL __kernel_ram_end EXPR "(${RAM_ADDR} + ${RAM_SIZE})")
140-
zephyr_linker_symbol(SYMBOL __kernel_ram_size EXPR "(@__kernel_ram_end@ - @__bss_start@)")
141-
zephyr_linker_symbol(SYMBOL _image_ram_start EXPR "(${RAM_ADDR})" SUBALIGN 32) # ToDo calculate 32 correctly
142-
zephyr_linker_symbol(SYMBOL ARM_LIB_STACKHEAP EXPR "(${RAM_ADDR} + ${RAM_SIZE})" SIZE -0x1000)
138+
zephyr_linker_symbol(OBJECT REGION_RAM SYMBOL __kernel_ram_start EXPR "(@__bss_start@)")
139+
zephyr_linker_symbol(OBJECT REGION_RAM SYMBOL __kernel_ram_end EXPR "(${RAM_ADDR} + ${RAM_SIZE})")
140+
zephyr_linker_symbol(OBJECT REGION_RAM SYMBOL __kernel_ram_size EXPR "(@__kernel_ram_end@ - @__bss_start@)")
141+
zephyr_linker_symbol(OBJECT REGION_RAM SYMBOL _image_ram_start EXPR "(${RAM_ADDR})" SUBALIGN 32) # ToDo calculate 32 correctly
142+
zephyr_linker_symbol(OBJECT REGION_RAM SYMBOL ARM_LIB_STACKHEAP EXPR "(${RAM_ADDR} + ${RAM_SIZE})" SIZE -0x1000)
143143

144144
set(VECTOR_ALIGN 4)
145145
if(CONFIG_CPU_CORTEX_M_HAS_VTOR)

cmake/modules/extensions.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4315,7 +4315,7 @@ endfunction()
43154315
# zephyr_linker_symbol(SYMBOL bar EXPR "(@foo@ + 1024)")
43164316
#
43174317
function(zephyr_linker_symbol)
4318-
set(single_args "EXPR;SYMBOL")
4318+
set(single_args "EXPR;SYMBOL;OBJECT")
43194319
cmake_parse_arguments(SYMBOL "" "${single_args}" "" ${ARGN})
43204320

43214321
if(SECTION_UNPARSED_ARGUMENTS)

0 commit comments

Comments
 (0)