Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
if(CONFIG_NCS_BM)
zephyr_include_directories(include)

include(cmake/merge_app_softdevice.cmake)
include(cmake/version.cmake)

add_subdirectory(drivers)
Expand Down
9 changes: 9 additions & 0 deletions Kconfig.nrf_bm
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,13 @@ rsource "samples/Kconfig"
rsource "subsys/Kconfig"
# zephyr-keep-sorted-stop

config PROGRAM_SOFTDEVICE_WITH_APP
bool "Program SoftDevice together with application (none MCUboot board variant)"
depends on !BOOTLOADER_MCUBOOT
depends on SOFTDEVICE
default y

config SOFTDEVICE_FILE
string "SoftDevice file (DO NOT ALTER)"

endif # NCS_BM
22 changes: 18 additions & 4 deletions boards/nordic/bm_nrf54l15dk/Kconfig.sysbuild
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,17 @@
config PARTITION_MANAGER
default n

if BOARD_BM_NRF54L15DK_NRF54L05_CPUAPP_S115_SOFTDEVICE || \
BOARD_BM_NRF54L15DK_NRF54L10_CPUAPP_S115_SOFTDEVICE || \
BOARD_BM_NRF54L15DK_NRF54L15_CPUAPP_S115_SOFTDEVICE || \
BOARD_BM_NRF54L15DK_NRF54L05_CPUAPP_S115_SOFTDEVICE_MCUBOOT || \
BOARD_BM_NRF54L15DK_NRF54L10_CPUAPP_S115_SOFTDEVICE_MCUBOOT || \
BOARD_BM_NRF54L15DK_NRF54L15_CPUAPP_S115_SOFTDEVICE_MCUBOOT

choice SOFTDEVICE_SELECTION
default SOFTDEVICE_S115
endchoice

if BOARD_BM_NRF54L15DK_NRF54L05_CPUAPP_S115_SOFTDEVICE_MCUBOOT || \
BOARD_BM_NRF54L15DK_NRF54L10_CPUAPP_S115_SOFTDEVICE_MCUBOOT || \
BOARD_BM_NRF54L15DK_NRF54L15_CPUAPP_S115_SOFTDEVICE_MCUBOOT
Expand All @@ -15,10 +26,6 @@ choice BM_BOOTLOADER
default BM_BOOTLOADER_MCUBOOT
endchoice

choice SOFTDEVICE_SELECTION
default SOFTDEVICE_S115
endchoice

choice BM_FIRMWARE_LOADER
default BM_FIRMWARE_LOADER_BT_MCUMGR
endchoice
Expand All @@ -29,3 +36,10 @@ config BM_BOOTLOADER_MCUBOOT_FIRMWARE_LOADER_ENTRANCE_BOOT_MODE
endif # BOARD_BM_NRF54L15DK_NRF54L05_CPUAPP_S115_SOFTDEVICE_MCUBOOT ||
# BOARD_BM_NRF54L15DK_NRF54L10_CPUAPP_S115_SOFTDEVICE_MCUBOOT ||
# BOARD_BM_NRF54L15DK_NRF54L15_CPUAPP_S115_SOFTDEVICE_MCUBOOT

endif # BOARD_BM_NRF54L15DK_NRF54L05_CPUAPP_S115_SOFTDEVICE ||
# BOARD_BM_NRF54L15DK_NRF54L10_CPUAPP_S115_SOFTDEVICE ||
# BOARD_BM_NRF54L15DK_NRF54L15_CPUAPP_S115_SOFTDEVICE ||
# BOARD_BM_NRF54L15DK_NRF54L05_CPUAPP_S115_SOFTDEVICE_MCUBOOT ||
# BOARD_BM_NRF54L15DK_NRF54L10_CPUAPP_S115_SOFTDEVICE_MCUBOOT ||
# BOARD_BM_NRF54L15DK_NRF54L15_CPUAPP_S115_SOFTDEVICE_MCUBOOT
1 change: 0 additions & 1 deletion cmake/flash_metadata.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ if(CONFIG_BOOT_FIRMWARE_LOADER)
${CMAKE_BINARY_DIR}/../softdevice.signed.hex
${sysbuild_dir}/flash_metadata.hex
DEPENDS
${ZEPHYR_BINARY_DIR}/${KERNEL_NAME}.hex
flash_metadata_generation
signed_softdevice_target
${ZEPHYR_BINARY_DIR}/${KERNEL_NAME}.hex
Expand Down
33 changes: 33 additions & 0 deletions cmake/merge_app_softdevice.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#
# Copyright (c) 2025 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
#

if(CONFIG_PROGRAM_SOFTDEVICE_WITH_APP)
add_custom_target(app_softdevice_merged
ALL
DEPENDS ${ZEPHYR_BINARY_DIR}/${KERNEL_NAME}_softdevice_merged.hex
)

add_custom_command(OUTPUT ${ZEPHYR_BINARY_DIR}/${KERNEL_NAME}_softdevice_merged.hex
COMMAND
${PYTHON_EXECUTABLE}
${ZEPHYR_BASE}/scripts/build/mergehex.py
-o ${ZEPHYR_BINARY_DIR}/${KERNEL_NAME}_softdevice_merged.hex
${ZEPHYR_BINARY_DIR}/${KERNEL_NAME}.hex
${CONFIG_SOFTDEVICE_FILE}
DEPENDS
${ZEPHYR_BINARY_DIR}/${KERNEL_NAME}.hex
${CONFIG_SOFTDEVICE_FILE}
)

set_target_properties(runners_yaml_props_target PROPERTIES "hex_file"
"${ZEPHYR_BINARY_DIR}/${KERNEL_NAME}_softdevice_merged.hex"
)
set(BYPRODUCT_KERNEL_APP_SD_HEX_NAME
"${ZEPHYR_BINARY_DIR}/${KERNEL_NAME}_softdevice_merged.hex"
CACHE FILEPATH "Application with SoftDevice hex file" FORCE
)
Comment on lines +25 to +31
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we don't need another merged file like this no


endif()
1 change: 1 addition & 0 deletions scripts/ci/license_allow_list.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ Apache-2.0: |
^nrf-bm/drivers/flash/soc_flash_nrf_rram.c
^nrf-bm/subsys/storage/flash_map/
^nrf-bm/lib/zephyr_queue/src/queue.c
^nrf-bm/sysbuild/image_configurations/MAIN_image_default.cmake
^nrf-bm/subsys/mgmt/mcumgr/CMakeLists.txt
^nrf-bm/subsys/mgmt/mcumgr/Kconfig
^nrf-bm/subsys/mgmt/mcumgr/grp/CMakeLists.txt
Expand Down
2 changes: 1 addition & 1 deletion subsys/softdevice/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ config SOFTDEVICE_QOS_CHANNEL_SURVEY_REPORT
if SOFTDEVICE

config SOFTDEVICE_S115
bool
bool "s115 SoftDevice"
depends on SOC_SERIES_NRF54LX
select SOFTDEVICE_PERIPHERAL
select SOFTDEVICE_DATA_LENGTH_UPDATE
Expand Down
31 changes: 28 additions & 3 deletions sysbuild/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,25 @@ function(${SYSBUILD_CURRENT_MODULE_NAME}_pre_cmake)
endif()
endif()
endforeach()

if(SB_CONFIG_SOFTDEVICE_NONE)
set_config_bool(${DEFAULT_IMAGE} CONFIG_SOFTDEVICE n)

if(NOT DEFINED SB_CONFIG_BM_BOOTLOADER_NONE AND NOT DEFINED SB_CONFIG_BM_FIRMWARE_LOADER_NONE)
set_config_bool(${SB_CONFIG_BM_FIRMWARE_LOADER_IMAGE_NAME} CONFIG_SOFTDEVICE n)
endif()
else()
foreach(option SOFTDEVICE_S115)
if(SB_CONFIG_${option})
set_config_bool(${DEFAULT_IMAGE} CONFIG_${option} y)

if(NOT DEFINED SB_CONFIG_BM_BOOTLOADER_NONE AND NOT DEFINED SB_CONFIG_BM_FIRMWARE_LOADER_NONE AND NOT DEFINED SB_CONFIG_BM_FIRMWARE_LOADER_UART_MCUMGR)
set_config_bool(${SB_CONFIG_BM_FIRMWARE_LOADER_IMAGE_NAME} CONFIG_${option} y)
endif()
break()
endif()
endforeach()
endif()
endfunction()

function(${SYSBUILD_CURRENT_MODULE_NAME}_post_cmake)
Expand All @@ -174,12 +193,18 @@ function(${SYSBUILD_CURRENT_MODULE_NAME}_post_cmake)

cmake_parse_arguments(PRE_CMAKE "" "" "IMAGES" ${ARGN})

if(NOT SB_CONFIG_SOFTDEVICE_NONE)
set(check_targets mcuboot;installer;${SB_CONFIG_BM_FIRMWARE_LOADER_IMAGE_NAME};${DEFAULT_IMAGE})
if(NOT DEFINED SB_CONFIG_BM_BOOTLOADER_NONE)
set(check_targets mcuboot;${DEFAULT_IMAGE})
set(dependency_targets ${SB_CONFIG_SOFTDEVICE_FILE})
set(production_targets mcuboot;${SB_CONFIG_BM_FIRMWARE_LOADER_IMAGE_NAME};${DEFAULT_IMAGE})
set(production_targets mcuboot;${DEFAULT_IMAGE})
set(production_files)

if(NOT DEFINED SB_CONFIG_BM_FIRMWARE_LOADER_NONE)
list(APPEND check_targets installer)
list(APPEND check_targets ${SB_CONFIG_BM_FIRMWARE_LOADER_IMAGE_NAME})
list(APPEND production_targets ${SB_CONFIG_BM_FIRMWARE_LOADER_IMAGE_NAME})
endif()

foreach(image ${check_targets})
sysbuild_get(${image}_kernel_bin_name IMAGE ${image} VAR CONFIG_KERNEL_BIN_NAME KCONFIG)
sysbuild_get(${image}_binary_dir IMAGE ${image} VAR APPLICATION_BINARY_DIR CACHE)
Expand Down
2 changes: 2 additions & 0 deletions sysbuild/image_configurations/MAIN_image_default.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,5 @@ if(SB_CONFIG_BM_BOOTLOADER_MCUBOOT)
set_config_bool(${ZCMAKE_APPLICATION} CONFIG_MCUBOOT_BOOTLOADER_MODE_SINGLE_APP y)
endif()
endif()

set_config_string(${ZCMAKE_APPLICATION} CONFIG_SOFTDEVICE_FILE "${SB_CONFIG_SOFTDEVICE_FILE}")
Loading