diff --git a/samples/subsys/ipc/ipc_service/icmsg/CMakeLists.txt b/samples/subsys/ipc/ipc_service/icmsg/CMakeLists.txt index 7fdf33f9621..70141d2f0e0 100644 --- a/samples/subsys/ipc/ipc_service/icmsg/CMakeLists.txt +++ b/samples/subsys/ipc/ipc_service/icmsg/CMakeLists.txt @@ -11,7 +11,9 @@ find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) if(NOT CONFIG_BOARD_NRF5340DK_NRF5340_CPUAPP AND NOT CONFIG_BOARD_NRF5340BSIM_NRF5340_CPUAPP AND NOT CONFIG_BOARD_STM32H747I_DISCO AND - NOT CONFIG_BOARD_NRF54L15DK_NRF54L15_CPUAPP) + NOT CONFIG_BOARD_NRF54H20DK_NRF54H20_CPUAPP AND + NOT CONFIG_BOARD_NRF54L15DK_NRF54L15_CPUAPP AND + NOT CONFIG_BOARD_NRF54LM20DK_NRF54LM20A_CPUAPP) message(FATAL_ERROR "${BOARD} is not supported for this sample") endif() diff --git a/samples/subsys/ipc/ipc_service/icmsg/Kconfig.sysbuild b/samples/subsys/ipc/ipc_service/icmsg/Kconfig.sysbuild index 8ef1b70793b..f90397d2330 100644 --- a/samples/subsys/ipc/ipc_service/icmsg/Kconfig.sysbuild +++ b/samples/subsys/ipc/ipc_service/icmsg/Kconfig.sysbuild @@ -5,8 +5,10 @@ source "share/sysbuild/Kconfig" config REMOTE_BOARD -string + string "The board used for remote target" default "nrf5340dk/nrf5340/cpunet" if $(BOARD) = "nrf5340dk" default "nrf5340bsim/nrf5340/cpunet" if $(BOARD) = "nrf5340bsim" + default "nrf54h20dk/nrf54h20/cpuppr" if BOARD_NRF54H20DK_NRF54H20_CPUAPP default "nrf54l15dk/nrf54l15/cpuflpr" if $(BOARD) = "nrf54l15dk" + default "nrf54lm20dk/nrf54lm20a/cpuflpr" if $(BOARD) = "nrf54lm20dk" default "stm32h747i_disco/stm32h747xx/m4" if $(BOARD) = "stm32h747i_disco" diff --git a/samples/subsys/ipc/ipc_service/icmsg/boards/nrf54h20dk_nrf54h20_cpuapp.overlay b/samples/subsys/ipc/ipc_service/icmsg/boards/nrf54h20dk_nrf54h20_cpuapp.overlay new file mode 100644 index 00000000000..422711c24a8 --- /dev/null +++ b/samples/subsys/ipc/ipc_service/icmsg/boards/nrf54h20dk_nrf54h20_cpuapp.overlay @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor ASA + * SPDX-License-Identifier: Apache-2.0 + */ + +/* Replace default ipc0 instance */ +/delete-node/ &ipc0; + +ipc0: &cpuapp_cpuppr_ipc { + status = "okay"; +}; + +&cpuppr_vevif { + status = "okay"; +}; + +&cpuapp_bellboard { + status = "okay"; +}; + +/ { + chosen { + /delete-property/ zephyr,bt-hci; + }; +}; diff --git a/samples/subsys/ipc/ipc_service/icmsg/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay b/samples/subsys/ipc/ipc_service/icmsg/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay new file mode 100644 index 00000000000..33afb300d78 --- /dev/null +++ b/samples/subsys/ipc/ipc_service/icmsg/boards/nrf54lm20dk_nrf54lm20a_cpuapp.overlay @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + soc { + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + + sram_rx: memory@20057c00 { + reg = <0x20057c00 0x8000>; + }; + + sram_tx: memory@2005fc00 { + reg = <0x2005fc00 0x8000>; + }; + }; + }; + + ipc { + ipc0: ipc0 { + compatible = "zephyr,ipc-icmsg"; + dcache-alignment = <32>; + tx-region = <&sram_tx>; + rx-region = <&sram_rx>; + mboxes = <&cpuapp_vevif_rx 20>, <&cpuapp_vevif_tx 21>; + mbox-names = "rx", "tx"; + status = "okay"; + }; + }; +}; + +&cpuapp_vevif_rx { + status = "okay"; +}; + +&cpuapp_vevif_tx { + status = "okay"; +}; diff --git a/samples/subsys/ipc/ipc_service/icmsg/boards/nrf54lm20dk_nrf54lm20a_cpuapp_icbmsg.overlay b/samples/subsys/ipc/ipc_service/icmsg/boards/nrf54lm20dk_nrf54lm20a_cpuapp_icbmsg.overlay new file mode 100644 index 00000000000..c2f345bfcb2 --- /dev/null +++ b/samples/subsys/ipc/ipc_service/icmsg/boards/nrf54lm20dk_nrf54lm20a_cpuapp_icbmsg.overlay @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + soc { + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + + sram_rx: memory@20057c00 { + reg = <0x20057c00 0x8000>; + }; + + sram_tx: memory@2005fc00 { + reg = <0x2005fc00 0x8000>; + }; + }; + }; + + ipc { + ipc0: ipc0 { + compatible = "zephyr,ipc-icbmsg"; + dcache-alignment = <32>; + tx-region = <&sram_tx>; + rx-region = <&sram_rx>; + tx-blocks = <16>; + rx-blocks = <18>; + mboxes = <&cpuapp_vevif_rx 20>, <&cpuapp_vevif_tx 21>; + mbox-names = "rx", "tx"; + status = "okay"; + }; + }; +}; + +&cpuapp_vevif_rx { + status = "okay"; +}; + +&cpuapp_vevif_tx { + status = "okay"; +}; diff --git a/samples/subsys/ipc/ipc_service/icmsg/remote/boards/nrf54h20dk_nrf54h20_cpuppr.conf b/samples/subsys/ipc/ipc_service/icmsg/remote/boards/nrf54h20dk_nrf54h20_cpuppr.conf new file mode 100644 index 00000000000..3c17c5e7e70 --- /dev/null +++ b/samples/subsys/ipc/ipc_service/icmsg/remote/boards/nrf54h20dk_nrf54h20_cpuppr.conf @@ -0,0 +1,17 @@ +# +# Copyright (c) 2025 Nordic Semiconductor ASA +# +# SPDX-License-Identifier: Apache-2.0 +# +################################################################################ + +CONFIG_LOG=y +CONFIG_LOG_MODE_MINIMAL=y +CONFIG_ASSERT=n +CONFIG_LOG_BACKEND_UART=n + +CONFIG_BOOT_BANNER=n +CONFIG_EARLY_CONSOLE=y +CONFIG_HEAP_MEM_POOL_SIZE=1024 + +CONFIG_SIZE_OPTIMIZATIONS=y diff --git a/samples/subsys/ipc/ipc_service/icmsg/remote/boards/nrf54h20dk_nrf54h20_cpuppr.overlay b/samples/subsys/ipc/ipc_service/icmsg/remote/boards/nrf54h20dk_nrf54h20_cpuppr.overlay new file mode 100644 index 00000000000..cf5c3cbc2e4 --- /dev/null +++ b/samples/subsys/ipc/ipc_service/icmsg/remote/boards/nrf54h20dk_nrf54h20_cpuppr.overlay @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor ASA + * SPDX-License-Identifier: Apache-2.0 + */ + +ipc0: &cpuapp_cpuppr_ipc { + status = "okay"; +}; + +&cpuppr_vevif { + status = "okay"; +}; + +&cpuapp_bellboard { + status = "okay"; +}; + +&uart135 { + /delete-property/ hw-flow-control; +}; diff --git a/samples/subsys/ipc/ipc_service/icmsg/remote/boards/nrf54lm20dk_nrf54lm20a_cpuflpr.overlay b/samples/subsys/ipc/ipc_service/icmsg/remote/boards/nrf54lm20dk_nrf54lm20a_cpuflpr.overlay new file mode 100644 index 00000000000..7aa2e5fa557 --- /dev/null +++ b/samples/subsys/ipc/ipc_service/icmsg/remote/boards/nrf54lm20dk_nrf54lm20a_cpuflpr.overlay @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + soc { + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + + sram_tx: memory@20057c00 { + reg = <0x20057c00 0x8000>; + }; + + sram_rx: memory@2005fc00 { + reg = <0x2005fc00 0x8000>; + }; + }; + }; + + ipc { + ipc0: ipc0 { + compatible = "zephyr,ipc-icmsg"; + dcache-alignment = <32>; + tx-region = <&sram_tx>; + rx-region = <&sram_rx>; + mboxes = <&cpuflpr_vevif_rx 21>, <&cpuflpr_vevif_tx 20>; + mbox-names = "rx", "tx"; + status = "okay"; + }; + }; +}; + +&cpuflpr_vevif_rx { + status = "okay"; +}; + +&cpuflpr_vevif_tx { + status = "okay"; +}; + +&uart30 { + /delete-property/ hw-flow-control; +}; diff --git a/samples/subsys/ipc/ipc_service/icmsg/remote/boards/nrf54lm20dk_nrf54lm20a_cpuflpr_icbmsg.overlay b/samples/subsys/ipc/ipc_service/icmsg/remote/boards/nrf54lm20dk_nrf54lm20a_cpuflpr_icbmsg.overlay new file mode 100644 index 00000000000..3c79d1ae9d6 --- /dev/null +++ b/samples/subsys/ipc/ipc_service/icmsg/remote/boards/nrf54lm20dk_nrf54lm20a_cpuflpr_icbmsg.overlay @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2025 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/ { + soc { + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + + sram_tx: memory@20057c00 { + reg = <0x20057c00 0x8000>; + }; + + sram_rx: memory@2005fc00 { + reg = <0x2005fc00 0x8000>; + }; + }; + }; + + ipc { + ipc0: ipc0 { + compatible = "zephyr,ipc-icbmsg"; + dcache-alignment = <32>; + tx-region = <&sram_tx>; + rx-region = <&sram_rx>; + tx-blocks = <18>; + rx-blocks = <16>; + mboxes = <&cpuflpr_vevif_rx 21>, <&cpuflpr_vevif_tx 20>; + mbox-names = "rx", "tx"; + status = "okay"; + }; + }; +}; + +&cpuflpr_vevif_rx { + status = "okay"; +}; + +&cpuflpr_vevif_tx { + status = "okay"; +}; + +&uart30 { + /delete-property/ hw-flow-control; +}; diff --git a/samples/subsys/ipc/ipc_service/icmsg/sample.yaml b/samples/subsys/ipc/ipc_service/icmsg/sample.yaml index fae6b067b39..aecee8a1076 100644 --- a/samples/subsys/ipc/ipc_service/icmsg/sample.yaml +++ b/samples/subsys/ipc/ipc_service/icmsg/sample.yaml @@ -2,6 +2,8 @@ sample: name: IPC Service example integration (icmsg backend) common: timeout: 30 + tags: ipc + sysbuild: true tests: sample.ipc.icmsg: platform_allow: @@ -10,8 +12,6 @@ tests: integration_platforms: - nrf5340dk/nrf5340/cpuapp - nrf5340bsim/nrf5340/cpuapp - tags: ipc - sysbuild: true harness: console harness_config: type: multi_line @@ -24,13 +24,15 @@ tests: - "host: Received" - "host: IPC-service HOST demo ended" - sample.ipc.icmsg.nrf54l15: - platform_allow: nrf54l15dk/nrf54l15/cpuapp + sample.ipc.icmsg.nrf54l: + platform_allow: + - nrf54l15dk/nrf54l15/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuapp integration_platforms: - nrf54l15dk/nrf54l15/cpuapp - tags: ipc - extra_args: icmsg_SNIPPET=nordic-flpr - sysbuild: true + - nrf54lm20dk/nrf54lm20a/cpuapp + extra_args: + - icmsg_SNIPPET=nordic-flpr harness: console harness_config: type: multi_line @@ -43,18 +45,19 @@ tests: - "host: Received" - "host: IPC-service HOST demo ended" - sample.ipc.icmsg.nrf54l15_no_multithreading: - platform_allow: nrf54l15dk/nrf54l15/cpuapp + sample.ipc.icmsg.nrf54l_no_multithreading: + platform_allow: + - nrf54l15dk/nrf54l15/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuapp integration_platforms: - nrf54l15dk/nrf54l15/cpuapp - tags: ipc + - nrf54lm20dk/nrf54lm20a/cpuapp extra_args: - icmsg_SNIPPET=nordic-flpr - icmsg_CONFIG_MULTITHREADING=n - icmsg_CONFIG_LOG_MODE_MINIMAL=y - remote_CONFIG_MULTITHREADING=n - remote_CONFIG_LOG_MODE_MINIMAL=y - sysbuild: true harness: console harness_config: type: multi_line @@ -67,16 +70,17 @@ tests: - "I: Received" - "I: IPC-service HOST demo ended" - sample.ipc.icmsg.nrf54l15_remote_no_multithreading: - platform_allow: nrf54l15dk/nrf54l15/cpuapp + sample.ipc.icmsg.nrf54l_remote_no_multithreading: + platform_allow: + - nrf54l15dk/nrf54l15/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuapp integration_platforms: - nrf54l15dk/nrf54l15/cpuapp - tags: ipc + - nrf54lm20dk/nrf54lm20a/cpuapp extra_args: - icmsg_SNIPPET=nordic-flpr - remote_CONFIG_MULTITHREADING=n - remote_CONFIG_LOG_MODE_MINIMAL=y - sysbuild: true harness: console harness_config: type: multi_line @@ -89,18 +93,59 @@ tests: - "host: Received" - "host: IPC-service HOST demo ended" - sample.ipc.icbmsg.nrf54l15: - platform_allow: nrf54l15dk/nrf54l15/cpuapp + sample.ipc.icmsg.nrf54h20: + platform_allow: + - nrf54h20dk/nrf54h20/cpuapp + integration_platforms: + - nrf54h20dk/nrf54h20/cpuapp + extra_args: + - icmsg_SNIPPET=nordic-ppr + harness: console + harness_config: + type: multi_line + ordered: false + regex: + - "host: IPC-service HOST demo started" + - "host: Ep bounded" + - "host: Perform sends for" + - "host: Sent" + - "host: Received" + - "host: IPC-service HOST demo ended" + + sample.ipc.icmsg.nrf54h20_remote_no_multithreading: + platform_allow: + - nrf54h20dk/nrf54h20/cpuapp + integration_platforms: + - nrf54h20dk/nrf54h20/cpuapp + extra_args: + - icmsg_SNIPPET=nordic-ppr + - remote_CONFIG_MULTITHREADING=n + - remote_CONFIG_LOG_MODE_MINIMAL=y + harness: console + harness_config: + type: multi_line + ordered: false + regex: + - "host: IPC-service HOST demo started" + - "host: Ep bounded" + - "host: Perform sends for" + - "host: Sent" + - "host: Received" + - "host: IPC-service HOST demo ended" + + sample.ipc.icbmsg.nrf54l: + platform_allow: + - nrf54l15dk/nrf54l15/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuapp integration_platforms: - nrf54l15dk/nrf54l15/cpuapp - tags: ipc + - nrf54lm20dk/nrf54lm20a/cpuapp extra_args: - icmsg_SNIPPET=nordic-flpr - icmsg_CONFIG_IPC_SERVICE_BACKEND_ICBMSG_NUM_EP=1 - - icmsg_DTC_OVERLAY_FILE="boards/nrf54l15dk_nrf54l15_cpuapp_icbmsg.overlay" + - icmsg_FILE_SUFFIX=icbmsg - remote_CONFIG_IPC_SERVICE_BACKEND_ICBMSG_NUM_EP=1 - - remote_DTC_OVERLAY_FILE="boards/nrf54l15dk_nrf54l15_cpuflpr_icbmsg.overlay" - sysbuild: true + - remote_FILE_SUFFIX=icbmsg harness: console harness_config: type: multi_line @@ -113,22 +158,23 @@ tests: - "host: Received" - "host: IPC-service HOST demo ended" - sample.ipc.icbmsg.nrf54l15_no_multithreading: - platform_allow: nrf54l15dk/nrf54l15/cpuapp + sample.ipc.icbmsg.nrf54l_no_multithreading: + platform_allow: + - nrf54l15dk/nrf54l15/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuapp integration_platforms: - nrf54l15dk/nrf54l15/cpuapp - tags: ipc + - nrf54lm20dk/nrf54lm20a/cpuapp extra_args: - icmsg_SNIPPET=nordic-flpr - icmsg_CONFIG_IPC_SERVICE_BACKEND_ICBMSG_NUM_EP=1 - - icmsg_DTC_OVERLAY_FILE="boards/nrf54l15dk_nrf54l15_cpuapp_icbmsg.overlay" + - icmsg_FILE_SUFFIX=icbmsg - icmsg_CONFIG_MULTITHREADING=n - icmsg_CONFIG_LOG_MODE_MINIMAL=y - remote_CONFIG_IPC_SERVICE_BACKEND_ICBMSG_NUM_EP=1 - - remote_DTC_OVERLAY_FILE="boards/nrf54l15dk_nrf54l15_cpuflpr_icbmsg.overlay" + - remote_FILE_SUFFIX=icbmsg - remote_CONFIG_MULTITHREADING=n - remote_CONFIG_LOG_MODE_MINIMAL=y - sysbuild: true harness: console harness_config: type: multi_line @@ -141,20 +187,21 @@ tests: - "I: Received" - "I: IPC-service HOST demo ended" - sample.ipc.icbmsg.nrf54l15_remote_no_multithreading: - platform_allow: nrf54l15dk/nrf54l15/cpuapp + sample.ipc.icbmsg.nrf54l_remote_no_multithreading: + platform_allow: + - nrf54l15dk/nrf54l15/cpuapp + - nrf54lm20dk/nrf54lm20a/cpuapp integration_platforms: - nrf54l15dk/nrf54l15/cpuapp - tags: ipc + - nrf54lm20dk/nrf54lm20a/cpuapp extra_args: - icmsg_SNIPPET=nordic-flpr - icmsg_CONFIG_IPC_SERVICE_BACKEND_ICBMSG_NUM_EP=1 - - icmsg_DTC_OVERLAY_FILE="boards/nrf54l15dk_nrf54l15_cpuapp_icbmsg.overlay" + - icmsg_FILE_SUFFIX=icbmsg - remote_CONFIG_IPC_SERVICE_BACKEND_ICBMSG_NUM_EP=1 - - remote_DTC_OVERLAY_FILE="boards/nrf54l15dk_nrf54l15_cpuflpr_icbmsg.overlay" + - remote_FILE_SUFFIX=icbmsg - remote_CONFIG_MULTITHREADING=n - remote_CONFIG_LOG_MODE_MINIMAL=y - sysbuild: true harness: console harness_config: type: multi_line diff --git a/samples/subsys/ipc/ipc_service/icmsg/sysbuild.cmake b/samples/subsys/ipc/ipc_service/icmsg/sysbuild.cmake index 305c85cc3eb..98d21e30833 100644 --- a/samples/subsys/ipc/ipc_service/icmsg/sysbuild.cmake +++ b/samples/subsys/ipc/ipc_service/icmsg/sysbuild.cmake @@ -11,6 +11,7 @@ ExternalZephyrProject_Add( APPLICATION remote SOURCE_DIR ${APP_DIR}/remote BOARD ${SB_CONFIG_REMOTE_BOARD} + BOARD_REVISION ${BOARD_REVISION} ) native_simulator_set_child_images(${DEFAULT_IMAGE} remote)