mirror of
https://github.com/apache/nuttx.git
synced 2026-03-23 14:05:12 +08:00
boards/arm/stm32: Fix CMake build for protected mode on stm32f4discovery
- Added support for multiple linker scripts preprocessing in CMake - Changed kernel/CMakeLists.txt to use target_sources for nuttx_user - Added KEEP() directive in user-space.ld for .userspace section - Removed hardcoded -funwind-tables to fix binary size bloat - Updated memory regions: ksram/usram 4KB→16KB, xsram 104KB→80KB - Enabled CONFIG_ARCH_FPU, CONFIG_STM32_CCMEXCLUDE, adjusted heap size Fixes protected mode CMake build for stm32f4discovery:kostest configuration. Signed-off-by: Bartosz <bartol2205@gmail.com>
This commit is contained in:
committed by
Donny(董九柱)
parent
a7567677a8
commit
fe184f79f3
@@ -628,18 +628,22 @@ process_all_directory_romfs()
|
||||
# Get linker script to use
|
||||
get_property(ldscript GLOBAL PROPERTY LD_SCRIPT)
|
||||
|
||||
# Pre-compile linker script
|
||||
# Pre-compile linker script(s)
|
||||
if(NOT CONFIG_ARCH_SIM)
|
||||
get_filename_component(LD_SCRIPT_NAME ${ldscript} NAME)
|
||||
set(LD_SCRIPT_TMP "${CMAKE_BINARY_DIR}/${LD_SCRIPT_NAME}.tmp")
|
||||
set(ldscript_tmp_list)
|
||||
foreach(ld ${ldscript})
|
||||
get_filename_component(LD_SCRIPT_NAME ${ld} NAME)
|
||||
set(LD_SCRIPT_TMP "${CMAKE_BINARY_DIR}/${LD_SCRIPT_NAME}.tmp")
|
||||
|
||||
nuttx_generate_preprocess_target(SOURCE_FILE ${ldscript} TARGET_FILE
|
||||
${LD_SCRIPT_TMP})
|
||||
nuttx_generate_preprocess_target(SOURCE_FILE ${ld} TARGET_FILE
|
||||
${LD_SCRIPT_TMP})
|
||||
|
||||
add_custom_target(ldscript_tmp DEPENDS ${LD_SCRIPT_TMP})
|
||||
add_dependencies(nuttx ldscript_tmp)
|
||||
add_custom_target(ldscript_tmp_${LD_SCRIPT_NAME} DEPENDS ${LD_SCRIPT_TMP})
|
||||
add_dependencies(nuttx ldscript_tmp_${LD_SCRIPT_NAME})
|
||||
|
||||
set(ldscript ${LD_SCRIPT_TMP})
|
||||
list(APPEND ldscript_tmp_list -T ${LD_SCRIPT_TMP})
|
||||
endforeach()
|
||||
set(ldscript ${ldscript_tmp_list})
|
||||
endif()
|
||||
|
||||
# Perform link
|
||||
@@ -679,7 +683,6 @@ if(NOT CONFIG_ARCH_SIM)
|
||||
target_link_libraries(
|
||||
nuttx
|
||||
PRIVATE ${NUTTX_EXTRA_FLAGS}
|
||||
-T
|
||||
${ldscript}
|
||||
$<$<NOT:$<BOOL:${DISABLE_LINK_GROUP}>>:-Wl,--start-group>
|
||||
${nuttx_libs}
|
||||
@@ -811,14 +814,19 @@ if(CONFIG_BUILD_PROTECTED)
|
||||
|
||||
get_property(user_ldscript GLOBAL PROPERTY LD_SCRIPT_USER)
|
||||
|
||||
# Pre-compile linker script
|
||||
get_filename_component(LD_SCRIPT_USER_NAME ${user_ldscript} NAME)
|
||||
set(LD_SCRIPT_USER_TMP "${CMAKE_BINARY_DIR}/${LD_SCRIPT_USER_NAME}.tmp")
|
||||
nuttx_generate_preprocess_target(SOURCE_FILE ${user_ldscript} TARGET_FILE
|
||||
${LD_SCRIPT_USER_TMP})
|
||||
add_custom_target(user_ldscript_tmp DEPENDS ${LD_SCRIPT_USER_TMP})
|
||||
add_dependencies(nuttx_user user_ldscript_tmp)
|
||||
set(user_ldscript ${LD_SCRIPT_USER_TMP})
|
||||
# Pre-compile linker script(s)
|
||||
set(user_ldscript_tmp_list)
|
||||
foreach(ldscript ${user_ldscript})
|
||||
get_filename_component(LD_SCRIPT_USER_NAME ${ldscript} NAME)
|
||||
set(LD_SCRIPT_USER_TMP "${CMAKE_BINARY_DIR}/${LD_SCRIPT_USER_NAME}.tmp")
|
||||
nuttx_generate_preprocess_target(SOURCE_FILE ${ldscript} TARGET_FILE
|
||||
${LD_SCRIPT_USER_TMP})
|
||||
add_custom_target(user_ldscript_tmp_${LD_SCRIPT_USER_NAME}
|
||||
DEPENDS ${LD_SCRIPT_USER_TMP})
|
||||
add_dependencies(nuttx_user user_ldscript_tmp_${LD_SCRIPT_USER_NAME})
|
||||
list(APPEND user_ldscript_tmp_list -T ${LD_SCRIPT_USER_TMP})
|
||||
endforeach()
|
||||
set(user_ldscript ${user_ldscript_tmp_list})
|
||||
|
||||
# reset link options that don't fit userspace
|
||||
get_target_property(nuttx_user_LINK_OPTIONS nuttx_user LINK_OPTIONS)
|
||||
@@ -848,8 +856,7 @@ if(CONFIG_BUILD_PROTECTED)
|
||||
|
||||
target_link_libraries(
|
||||
nuttx_user
|
||||
PRIVATE -T
|
||||
${user_ldscript}
|
||||
PRIVATE ${user_ldscript}
|
||||
$<$<NOT:$<BOOL:${DISABLE_LINK_GROUP}>>:-Wl,--start-group>
|
||||
${nuttx_system_libs}
|
||||
${nuttx_apps_libs}
|
||||
|
||||
Reference in New Issue
Block a user