forked from zephyrproject-rtos/zephyr
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
samples: sysbuild: add hello world for multiple board targets
Add a new "hello world" sample that can be built for multiple board targets. This sample can be used to see if Zephyr boots successfully with _minimal_ configuration on SoCs with multiple cores, or boards with multiple SoCs. The following configurations are provided for now: - nRF5340 DK: cpuapp+cpunet - nRF54H20 DK: cpuapp+cpurad, cpuapp+cpuppr, cpuapp+cpuppr(xip) Note that because of a quoting bug somewhere in the build system, SB_CONFIG_REMOTE_BOARD is specified in .conf files (see the sysbuild/ directory). This should be fixed in the near future. Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
- Loading branch information
Showing
14 changed files
with
174 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# Copyright (c) 2024 Nordic Semiconductor ASA | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
cmake_minimum_required(VERSION 3.20.0) | ||
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) | ||
|
||
project(hello_world) | ||
target_sources(app PRIVATE src/main.c) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# Copyright (c) 2024 Nordic Semiconductor ASA | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
source "${ZEPHYR_BASE}/share/sysbuild/Kconfig" | ||
|
||
config REMOTE_BOARD | ||
string "The board used for remote target" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
.. zephyr:code-sample:: sysbuild_hello_world | ||
:name: Hello World for multiple board targets using Sysbuild | ||
|
||
Run a hello world sample on multiple board targets | ||
|
||
Overview | ||
******** | ||
|
||
The sample demonstrates how to build a Hello World application for two board | ||
targets with :ref:`sysbuild`. This sample can be useful to test, for example, | ||
SoCs with multiple cores as each core is exposed as a board target. Other | ||
scenarios could include boards embedding multiple SoCs. When building with | ||
Zephyr Sysbuild, the build system adds additional images based on the options | ||
selected in the project's additional configuration and build files. | ||
|
||
All images use the same :file:`main.c` that prints the board target on which the | ||
application is programmed. | ||
|
||
Building and Running | ||
******************** | ||
|
||
This sample needs to be built with Sysbuild by using the ``--sysbuild`` option. | ||
The remote board needs to be specified using ``SB_CONFIG_REMOTE_BOARD``. Some | ||
additional settings may be required depending on the platform, for example, | ||
to boot a remote core. | ||
|
||
.. note:: | ||
It is recommended to use sample setups from | ||
:zephyr_file:`samples/basic/multitarget_hello_world/sample.yaml` using the | ||
``-T`` option. | ||
|
||
Here's an example to build and flash the sample for the | ||
:ref:`nrf54h20dk_nrf54h20`, using application and radio cores: | ||
|
||
.. zephyr-app-commands:: | ||
:zephyr-app: samples/basic/multitarget_hello_world | ||
:board: nrf54h20dk/nrf54h20/cpuapp | ||
:west-args: --sysbuild | ||
:gen-args: -DSB_CONFIG_REMOTE_BOARD='"nrf54h20dk/nrf54h20/cpurad"' | ||
:goals: build flash | ||
:compact: | ||
|
||
The same can be achieved by using the | ||
:zephyr_file:`samples/basic/multitarget_hello_world/sample.yaml` setup: | ||
|
||
.. zephyr-app-commands:: | ||
:zephyr-app: samples/basic/multitarget_hello_world | ||
:board: nrf54h20dk/nrf54h20/cpuapp | ||
:west-args: -T sample.basic.multitarget_hello_world.nrf54h20dk_cpuapp_cpurad | ||
:goals: build flash | ||
:compact: | ||
|
||
After programming the sample to your board, you should observe a hello world | ||
message in the Zephyr console configured on each target. For example, for the | ||
sample above: | ||
|
||
Application core | ||
|
||
.. code-block:: console | ||
*** Booting Zephyr OS build v3.6.0-274-g466084bd8c5d *** | ||
Hello world from nrf54h20dk/nrf54h20/cpuapp | ||
Radio core | ||
|
||
.. code-block:: console | ||
*** Booting Zephyr OS build v3.6.0-274-g466084bd8c5d *** | ||
Hello world from nrf54h20dk/nrf54h20/cpurad |
4 changes: 4 additions & 0 deletions
4
samples/sysbuild/hello_world/boards/nrf5340dk_nrf5340_cpuapp.conf
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# Copyright (c) 2024 Nordic Semiconductor ASA | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
CONFIG_BOARD_ENABLE_CPUNET=y |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# no additional configuration is required |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# Copyright (c) 2024 Nordic Semiconductor ASA | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
cmake_minimum_required(VERSION 3.20.0) | ||
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) | ||
|
||
project(remote) | ||
target_sources(app PRIVATE ../src/main.c) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# no additional configuration is required |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
sample: | ||
name: Hello World for multiple board targets using Sysbuild | ||
description: | | ||
Hello World application that builds for multiple targets. Both images print | ||
the board target they were run on. | ||
common: | ||
build_only: true | ||
sysbuild: true | ||
|
||
tests: | ||
sample.sysbuild.hello_world.nrf5340dk_cpuapp_cpunet: | ||
platform_allow: | ||
- nrf5340dk/nrf5340/cpuapp | ||
integration_platforms: | ||
- nrf5340dk/nrf5340/cpuapp | ||
extra_args: | ||
SB_CONF_FILE=sysbuild/nrf5340dk_nrf5340_cpunet.conf | ||
|
||
sample.sysbuild.hello_world.nrf54h20dk_cpuapp_cpurad: | ||
platform_allow: | ||
- nrf54h20dk/nrf54h20/cpuapp | ||
integration_platforms: | ||
- nrf54h20dk/nrf54h20/cpuapp | ||
extra_args: | ||
SB_CONF_FILE=sysbuild/nrf54h20dk_nrf54h20_cpurad.conf | ||
|
||
sample.sysbuild.hello_world.nrf54h20dk_cpuapp_cpuppr: | ||
platform_allow: | ||
- nrf54h20dk/nrf54h20/cpuapp | ||
integration_platforms: | ||
- nrf54h20dk/nrf54h20/cpuapp | ||
extra_args: | ||
SB_CONF_FILE=sysbuild/nrf54h20dk_nrf54h20_cpuppr.conf | ||
hello_world_SNIPPET=nordic-ppr | ||
|
||
sample.sysbuild.hello_world.nrf54h20dk_cpuapp_cpuppr_xip: | ||
platform_allow: | ||
- nrf54h20dk/nrf54h20/cpuapp | ||
integration_platforms: | ||
- nrf54h20dk/nrf54h20/cpuapp | ||
extra_args: | ||
SB_CONF_FILE=sysbuild/nrf54h20dk_nrf54h20_cpuppr_xip.conf | ||
hello_world_SNIPPET=nordic-ppr-xip |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
/* | ||
* Copyright (c) 2024 Nordic Semiconductor ASA | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
#include <zephyr/sys/printk.h> | ||
|
||
int main(void) | ||
{ | ||
printk("Hello world from %s\n", CONFIG_BOARD_TARGET); | ||
|
||
return 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# Copyright (c) 2024 Nordic Semiconductor ASA | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
if("${SB_CONFIG_REMOTE_BOARD}" STREQUAL "") | ||
message(FATAL_ERROR "REMOTE_BOARD must be set to a valid board name") | ||
endif() | ||
|
||
ExternalZephyrProject_Add( | ||
APPLICATION remote | ||
SOURCE_DIR ${APP_DIR}/remote | ||
BOARD ${SB_CONFIG_REMOTE_BOARD} | ||
) | ||
|
||
add_dependencies(hello_world remote) | ||
sysbuild_add_dependencies(FLASH hello_world remote) |
1 change: 1 addition & 0 deletions
1
samples/sysbuild/hello_world/sysbuild/nrf5340dk_nrf5340_cpunet.conf
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
SB_CONFIG_REMOTE_BOARD="nrf5340dk/nrf5340/cpunet" |
1 change: 1 addition & 0 deletions
1
samples/sysbuild/hello_world/sysbuild/nrf54h20dk_nrf54h20_cpuppr.conf
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
SB_CONFIG_REMOTE_BOARD="nrf54h20dk/nrf54h20/cpuppr" |
1 change: 1 addition & 0 deletions
1
samples/sysbuild/hello_world/sysbuild/nrf54h20dk_nrf54h20_cpuppr_xip.conf
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
SB_CONFIG_REMOTE_BOARD="nrf54h20dk/nrf54h20/cpuppr/xip" |
1 change: 1 addition & 0 deletions
1
samples/sysbuild/hello_world/sysbuild/nrf54h20dk_nrf54h20_cpurad.conf
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
SB_CONFIG_REMOTE_BOARD="nrf54h20dk/nrf54h20/cpurad" |