Skip to content

Commit 24b259f

Browse files
committed
sysbuild: Add radio image for FW loader
Add a possibility to select radio image for the FW loader. Ref: NCSDK-33237 Signed-off-by: Tomasz Chyrowicz <[email protected]>
1 parent e831b34 commit 24b259f

File tree

4 files changed

+107
-0
lines changed

4 files changed

+107
-0
lines changed

sysbuild/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,13 @@ function(${SYSBUILD_CURRENT_MODULE_NAME}_pre_cmake)
352352
add_dependencies(${SB_CONFIG_FIRMWARE_LOADER_IMAGE_NAME} ${image})
353353
sysbuild_add_dependencies(FLASH ${SB_CONFIG_FIRMWARE_LOADER_IMAGE_NAME} ${image})
354354
endif()
355+
356+
if(SB_CONFIG_FIRMWARE_LOADER_RADIO AND NOT SB_CONFIG_FIRMWARE_LOADER_RADIO_IMAGE_NONE)
357+
if(NOT ${image} STREQUAL ${SB_CONFIG_FIRMWARE_LOADER_RADIO_IMAGE_NAME})
358+
add_dependencies(${SB_CONFIG_FIRMWARE_LOADER_RADIO_IMAGE_NAME} ${image})
359+
sysbuild_add_dependencies(FLASH ${SB_CONFIG_FIRMWARE_LOADER_RADIO_IMAGE_NAME} ${image})
360+
endif()
361+
endif()
355362
endforeach()
356363
endif()
357364

@@ -1050,5 +1057,6 @@ include(${CMAKE_CURRENT_LIST_DIR}/flprcore.cmake)
10501057
include(${CMAKE_CURRENT_LIST_DIR}/pprcore.cmake)
10511058
include(${CMAKE_CURRENT_LIST_DIR}/secureboot.cmake)
10521059
include(${CMAKE_CURRENT_LIST_DIR}/mcuboot.cmake)
1060+
include(${CMAKE_CURRENT_LIST_DIR}/firmware_loader_radio.cmake)
10531061

10541062
store_ncs_vars()
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#
2+
# Copyright (c) 2025 Nordic Semiconductor
3+
#
4+
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
#
6+
7+
menu "Network core configuration"
8+
depends on SUPPORT_NETCORE
9+
10+
config SUPPORT_FIRMWARE_LOADER_IPC_RADIO
11+
bool
12+
default y
13+
14+
choice FIRMWARE_LOADER_RADIO
15+
prompt "Firmware loader radio image"
16+
default FIRMWARE_LOADER_RADIO_IMAGE_IPC_RADIO if FIRMWARE_LOADER_IMAGE_BLE_MCUMGR
17+
default FIRMWARE_LOADER_RADIO_IMAGE_IPC_RADIO if NRF_DEFAULT_IPC_RADIO && NETCORE_REMOTE_BOARD_TARGET_CPUCLUSTER != ""
18+
default FIRMWARE_LOADER_RADIO_IMAGE_NONE if NRF_DEFAULT_EMPTY && NETCORE_REMOTE_BOARD_TARGET_CPUCLUSTER != ""
19+
depends on MCUBOOT_MODE_FIRMWARE_UPDATER
20+
help
21+
Select the firmware loader radio image to include in the build.
22+
23+
config FIRMWARE_LOADER_RADIO_IMAGE_NONE
24+
bool "None"
25+
help
26+
Do not include a firmware loader radio image in the build.
27+
28+
menuconfig FIRMWARE_LOADER_RADIO_IMAGE_IPC_RADIO
29+
bool "ipc_radio"
30+
depends on SUPPORT_FIRMWARE_LOADER_IPC_RADIO
31+
help
32+
Include the IPC Radio firmware loader image as the firmware loader radio image to use.
33+
34+
if FIRMWARE_LOADER_RADIO_IMAGE_IPC_RADIO
35+
36+
config FIRMWARE_LOADER_RADIO_IMAGE_IPC_RADIO_BT_HCI_IPC
37+
bool "HCI serialization for Bluetooth"
38+
default y
39+
help
40+
Use HCI serialization for Bluetooth.
41+
42+
endif # FIRMWARE_LOADER_RADIO_IMAGE_IPC_RADIO
43+
44+
endchoice
45+
46+
config FIRMWARE_LOADER_RADIO_IMAGE_NAME
47+
string
48+
default "fw_loader_ipc_radio" if FIRMWARE_LOADER_RADIO_IMAGE_IPC_RADIO_BT_HCI_IPC
49+
help
50+
Name of firmware loader radio image.
51+
52+
config FIRMWARE_LOADER_RADIO_IMAGE_PATH
53+
string
54+
default "$(ZEPHYR_NRF_MODULE_DIR)/applications/ipc_radio" if FIRMWARE_LOADER_RADIO_IMAGE_IPC_RADIO
55+
help
56+
Source directory of firmware loader image.
57+
58+
config FIRMWARE_LOADER_RADIO_BOARD
59+
string
60+
default "$(BOARD)/nrf54h20/cpurad" if SOC_NRF54H20
61+
default "$(BOARD)/nrf54l15/cpurad" if SOC_NRF54L15
62+
help
63+
Board for firmware loader radio image.
64+
65+
endmenu

sysbuild/Kconfig.sysbuild

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,3 +94,4 @@ rsource "Kconfig.lwm2m_carrier"
9494
rsource "Kconfig.cracen"
9595
rsource "Kconfig.tfm"
9696
rsource "Kconfig.firmware_loader"
97+
rsource "Kconfig.firmware_loader_radio"
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Copyright (c) 2025 Nordic Semiconductor
2+
#
3+
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
4+
5+
# Include network core image if enabled
6+
if(SB_CONFIG_SUPPORT_NETCORE AND NOT SB_CONFIG_FIRMWARE_LOADER_RADIO_IMAGE_NONE AND DEFINED
7+
SB_CONFIG_FIRMWARE_LOADER_RADIO_IMAGE_NAME)
8+
ExternalZephyrProject_Add(
9+
APPLICATION ${SB_CONFIG_FIRMWARE_LOADER_RADIO_IMAGE_NAME}
10+
SOURCE_DIR ${SB_CONFIG_FIRMWARE_LOADER_RADIO_IMAGE_PATH}
11+
APP_TYPE FIRMWARE_LOADER
12+
BOARD ${SB_CONFIG_FIRMWARE_LOADER_RADIO_BOARD}
13+
BOARD_REVISION ${BOARD_REVISION}
14+
)
15+
16+
# Include ipc_radio overlays if ipc_radio is enabled.
17+
if(SB_CONFIG_FIRMWARE_LOADER_RADIO_IMAGE_IPC_RADIO)
18+
if(SB_CONFIG_FIRMWARE_LOADER_RADIO_IMAGE_IPC_RADIO_BT_HCI_IPC)
19+
add_overlay_config(
20+
${SB_CONFIG_FIRMWARE_LOADER_RADIO_IMAGE_NAME}
21+
${SB_CONFIG_FIRMWARE_LOADER_RADIO_IMAGE_PATH}/overlay-bt_hci_ipc.conf
22+
)
23+
endif()
24+
25+
# Check if the FW loader defines a custom overlay file for ipc_radio image
26+
if(EXISTS "${SB_CONFIG_FIRMWARE_LOADER_IMAGE_PATH}/sysbuild/ipc_radio.conf")
27+
add_overlay_config(
28+
${SB_CONFIG_FIRMWARE_LOADER_RADIO_IMAGE_NAME}
29+
${SB_CONFIG_FIRMWARE_LOADER_IMAGE_PATH}/sysbuild/ipc_radio.conf
30+
)
31+
endif()
32+
endif()
33+
endif()

0 commit comments

Comments
 (0)