tests: add twister tests for CMake board and SoC extension

This commit adds new tests for verifying the functionality of the board
and SoC extension feature.

It does so by defining:
- A new CPU cluster on an existing SoC
- Two new board variants on top of an existing board

The new board variants are defined on top of the existing `native_sim`
board, so that the following native_sim board targets are available for
the test.
Existing board targets:
- native_sim/native
- native_sim/native/64

Extended board targets:
- native_sim/native/one
- native_sim/native/64/two

The new CPU cluster is defined for the existing `an521` SoC.
Existing CPU Clusters on an521:
- cpu0
- cpu1

New CPU Cluster:
- cputest

For SoC tests the mps2 board is used.
This means that for testing, the following board targets using the an521
SoC are:
- mps2/an521/cpu0
- mps2/an521/cpu1
- mps2/an521/cputest

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
This commit is contained in:
Torsten Rasmussen 2024-05-15 13:42:04 +02:00 committed by Henrik Brix Andersen
commit f3151571ba
25 changed files with 873 additions and 0 deletions

View file

@ -0,0 +1,14 @@
# SPDX-License-Identifier: Apache-2.0
#
# Copyright (c) 2024 Nordic Semiconductor ASA
cmake_minimum_required(VERSION 3.20.0)
set(BOARD_ROOT ${CMAKE_CURRENT_LIST_DIR}/oot_root)
set(SOC_ROOT ${CMAKE_CURRENT_LIST_DIR}/oot_root)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(native_sim_extend)
FILE(GLOB app_sources src/*.c)
target_sources(app PRIVATE ${app_sources})

View file

@ -0,0 +1,15 @@
# Copyright (c) 2024 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: Apache-2.0
config BASE_BOARD_SETTING
bool "Base board test string"
help
This kconfig is set when the base board config fragment is supposed to
be sourced, that is when oot variant defines
'extends:'
' board: native_sim'
' qualifier: posix'
' inherit: 1'
source "Kconfig.zephyr"

View file

@ -0,0 +1 @@
CONFIG_BASE_BOARD_SETTING=y

View file

@ -0,0 +1 @@
CONFIG_EXTENDED_VARIANT_BOARD_SETTING=y

View file

@ -0,0 +1 @@
CONFIG_EXTENDED_VARIANT_BOARD_SETTING=y

View file

@ -0,0 +1,5 @@
# Copyright (c) 2017 Linaro Limited
# SPDX-License-Identifier: Apache-2.0
config BOARD_MPS2
select SOC_MPS2_AN521_CPUTEST if BOARD_MPS2_AN521_CPUTEST

View file

@ -0,0 +1,14 @@
# SPDX-License-Identifier: Apache-2.0
#
# Copyright (c) 2024, Nordic Semiconductor ASA
if(CONFIG_BOARD_MPS2_AN521_CPUTEST)
set(QEMU_CPU_TYPE_${ARCH} cortex-m33)
set(QEMU_FLAGS_${ARCH}
-cpu ${QEMU_CPU_TYPE_${ARCH}}
-machine mps2-an521
-nographic
-m 16
-vga none
)
endif()

View file

@ -0,0 +1,2 @@
board:
extend: mps2

View file

@ -0,0 +1,191 @@
/*
* Copyright (c) 2019 Linaro Limited
*
* SPDX-License-Identifier: Apache-2.0
*/
sysclk: system-clock {
compatible = "fixed-clock";
clock-frequency = <25000000>;
#clock-cells = <0>;
};
timer0: timer@0 {
compatible = "arm,cmsdk-timer";
reg = <0x0 0x1000>;
interrupts = <3 3>;
};
timer1: timer@1000 {
compatible = "arm,cmsdk-timer";
reg = <0x1000 0x1000>;
interrupts = <4 3>;
};
dtimer0: dtimer@2000 {
compatible = "arm,cmsdk-dtimer";
reg = <0x2000 0x1000>;
interrupts = <5 3>;
};
mhu0: mhu@3000 {
compatible = "arm,mhu";
reg = <0x3000 0x1000>;
interrupts = <6 3>;
};
mhu1: mhu@4000 {
compatible = "arm,mhu";
reg = <0x4000 0x1000>;
interrupts = <7 3>;
};
gpio0: gpio@100000 {
compatible = "arm,cmsdk-gpio";
reg = <0x100000 0x1000>;
interrupts = <68 3>;
gpio-controller;
#gpio-cells = <2>;
};
gpio1: gpio@101000 {
compatible = "arm,cmsdk-gpio";
reg = <0x101000 0x1000>;
interrupts = <69 3>;
gpio-controller;
#gpio-cells = <2>;
};
gpio2: gpio@102000 {
compatible = "arm,cmsdk-gpio";
reg = <0x102000 0x1000>;
interrupts = <70 3>;
gpio-controller;
#gpio-cells = <2>;
};
gpio3: gpio@103000 {
compatible = "arm,cmsdk-gpio";
reg = <0x103000 0x1000>;
interrupts = <71 3>;
gpio-controller;
#gpio-cells = <2>;
};
wdog0: wdog@81000 {
compatible = "arm,cmsdk-watchdog";
reg = <0x81000 0x1000>;
clocks = <&sysclk>;
};
uart0: uart@200000 {
compatible = "arm,cmsdk-uart";
reg = <0x200000 0x1000>;
interrupts = <33 3 32 3>;
interrupt-names = "tx", "rx";
clocks = <&sysclk>;
current-speed = <115200>;
};
uart1: uart@201000 {
compatible = "arm,cmsdk-uart";
reg = <0x201000 0x1000>;
interrupts = <35 3 34 3>;
interrupt-names = "tx", "rx";
clocks = <&sysclk>;
current-speed = <115200>;
};
uart2: uart@202000 {
compatible = "arm,cmsdk-uart";
reg = <0x202000 0x1000>;
interrupts = <37 3 36 3>;
interrupt-names = "tx", "rx";
clocks = <&sysclk>;
current-speed = <115200>;
};
uart3: uart@203000 {
compatible = "arm,cmsdk-uart";
reg = <0x203000 0x1000>;
interrupts = <39 3 38 3>;
interrupt-names = "tx", "rx";
clocks = <&sysclk>;
current-speed = <115200>;
};
uart4: uart@204000 {
compatible = "arm,cmsdk-uart";
reg = <0x204000 0x1000>;
interrupts = <41 3 40 3>;
interrupt-names = "tx", "rx";
clocks = <&sysclk>;
current-speed = <115200>;
};
i2c_touch: i2c@207000 {
compatible = "arm,versatile-i2c";
clock-frequency = <I2C_BITRATE_STANDARD>;
#address-cells = <1>;
#size-cells = <0>;
reg = <0x207000 0x1000>;
};
i2c_audio_conf: i2c@208000 {
compatible = "arm,versatile-i2c";
clock-frequency = <I2C_BITRATE_STANDARD>;
#address-cells = <1>;
#size-cells = <0>;
reg = <0x208000 0x1000>;
};
i2c_shield0: i2c@20c000 {
compatible = "arm,versatile-i2c";
clock-frequency = <I2C_BITRATE_STANDARD>;
#address-cells = <1>;
#size-cells = <0>;
reg = <0x20c000 0x1000>;
};
i2c_shield1: i2c@20d000 {
compatible = "arm,versatile-i2c";
clock-frequency = <I2C_BITRATE_STANDARD>;
#address-cells = <1>;
#size-cells = <0>;
reg = <0x20d000 0x1000>;
};
gpio_led0: mps2_fpgaio@302000 {
compatible = "arm,mps2-fpgaio-gpio";
reg = <0x302000 0x4>;
gpio-controller;
#gpio-cells = <1>;
ngpios = <2>;
};
gpio_button: mps2_fpgaio@302008 {
compatible = "arm,mps2-fpgaio-gpio";
reg = <0x302008 0x4>;
gpio-controller;
#gpio-cells = <1>;
ngpios = <2>;
};
gpio_misc: mps2_fpgaio@30204c {
compatible = "arm,mps2-fpgaio-gpio";
reg = <0x30204c 0x4>;
gpio-controller;
#gpio-cells = <1>;
ngpios = <10>;
};
eth0: eth@2000000 {
/* Linux has "smsc,lan9115" */
compatible = "smsc,lan9220";
/* Actual reg range is ~0x200 */
reg = <0x2000000 0x100000>;
interrupts = <48 3>;
};

View file

@ -0,0 +1,130 @@
/*
* Copyright (c) 2018-2019 Linaro Limited
*
* SPDX-License-Identifier: Apache-2.0
*/
/dts-v1/;
#include <mem.h>
#include <arm/armv8-m.dtsi>
#include <zephyr/dt-bindings/i2c/i2c.h>
#include <zephyr/dt-bindings/input/input-event-codes.h>
/ {
compatible = "arm,mps2";
#address-cells = <1>;
#size-cells = <1>;
aliases {
led0 = &led_0;
led1 = &led_1;
sw0 = &user_button_0;
sw1 = &user_button_1;
uart-1 = &uart1;
watchdog0 = &wdog0;
};
chosen {
zephyr,console = &uart0;
zephyr,shell-uart = &uart0;
/*
* These SRAM and flash settings give the entire available
* code and data memories to this secure firmware image.
* This may conflict with mps2_an521_remote firmware. Use
* caution when using both targets simultaneously.
*/
zephyr,sram = &ssram2_3;
zephyr,flash = &ssram1;
};
leds {
compatible = "gpio-leds";
led_0: led_0 {
gpios = <&gpio_led0 0>;
label = "USERLED0";
};
led_1: led_1 {
gpios = <&gpio_led0 1>;
label = "USERLED1";
};
};
gpio_keys {
compatible = "gpio-keys";
user_button_0: button_0 {
label = "USERPB0";
gpios = <&gpio_button 0>;
zephyr,code = <INPUT_KEY_0>;
};
user_button_1: button_1 {
label = "USERPB1";
gpios = <&gpio_button 1>;
zephyr,code = <INPUT_KEY_1>;
};
};
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-m33";
reg = <0>;
#address-cells = <1>;
#size-cells = <1>;
mpu: mpu@e000ed90 {
compatible = "arm,armv8m-mpu";
reg = <0xe000ed90 0x40>;
};
};
};
/*
* The memory regions defined below are according to AN521:
* https://documentation-service.arm.com/static/5fa12fe9b1a7c5445f29017f
*
* Please see tables mentioned in individual comments below for details.
*/
ssram1: memory@10000000 {
/* Table 3-2, row 6. */
compatible = "zephyr,memory-region", "mmio-sram";
reg = <0x10000000 DT_SIZE_M(4)>;
zephyr,memory-region = "SSRAM1";
};
ssram2_3: memory@38000000 {
/* Table 3-4, rows 16 and 17. */
compatible = "zephyr,memory-region", "mmio-sram";
reg = <0x38000000 DT_SIZE_M(4)>;
zephyr,memory-region = "SSRAM2_3";
};
psram: memory@80000000 {
/* Table 3-6, row 1. */
device_type = "memory";
reg = <0x80000000 DT_SIZE_M(16)>;
};
soc {
peripheral@50000000 {
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x50000000 0x10000000>;
#include "mps2_an521-common.dtsi"
};
};
};
&nvic {
arm,num-irq-priority-bits = <3>;
};
&uart1 {
status = "okay";
};

View file

@ -0,0 +1,21 @@
#
# Copyright (c) 2018-2019 Linaro Limited
#
# SPDX-License-Identifier: Apache-2.0
#
#CONFIG_RUNTIME_NMI=y
#CONFIG_ARM_TRUSTZONE_M=y
#CONFIG_ARM_MPU=y
CONFIG_QEMU_ICOUNT_SHIFT=6
#
## GPIOs
CONFIG_GPIO=y
# Serial
CONFIG_CONSOLE=y
CONFIG_UART_CONSOLE=y
CONFIG_SERIAL=y
# Build a non-secure firmware image
#CONFIG_TRUSTED_EXECUTION_NONSECURE=y

View file

@ -0,0 +1,30 @@
# Copyright (c) 2024 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
config EXTENDED_VARIANT_BOARD_SETTING
bool "Extended variant board test string"
depends on BOARD_NATIVE_SIM_NATIVE_ONE || BOARD_NATIVE_SIM_NATIVE_64_TWO
help
This kconfig is set when the extended variant board config fragment
is supposed to be sourced, that is when oot variant defines 'extends:'
config EXTENDED_VARIANT_BOARD_ONE_SETTING_PROMPTLESS
bool
depends on BOARD_NATIVE_SIM_NATIVE_ONE
help
This kconfig is promptless and is expected to be set through the
Kconfig.defconfig for the extended board.
config EXTENDED_VARIANT_BOARD_TWO_SETTING_PROMPTLESS
bool
depends on BOARD_NATIVE_SIM_NATIVE_64_TWO
help
This kconfig is promptless and is expected to be set through the
Kconfig.defconfig for the extended board.
config EXTENDED_VARIANT_BOARD_SETTING_DEFCONFIG
bool "Extended variant board test string defconfig"
depends on BOARD_NATIVE_SIM_NATIVE_ONE || BOARD_NATIVE_SIM_NATIVE_64_TWO
help
This kconfig is set when the extended variant board defconfig fragment
is supposed to be sourced, that is when oot variant defines 'extends:'

View file

@ -0,0 +1,16 @@
# Copyright (c) 2024 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
if BOARD_NATIVE_SIM_NATIVE_ONE
config EXTENDED_VARIANT_BOARD_ONE_SETTING_PROMPTLESS
default y
endif # BOARD_NATIVE_SIM_NATIVE_ONE
if BOARD_NATIVE_SIM_NATIVE_64_TWO
config EXTENDED_VARIANT_BOARD_TWO_SETTING_PROMPTLESS
default y
endif # BOARD_NATIVE_SIM_NATIVE_64_TWO

View file

@ -0,0 +1,7 @@
board:
extend: native_sim
variants:
- name: one
qualifier: native
- name: two
qualifier: native/64

View file

@ -0,0 +1,14 @@
/*
* Copyright (c) 2023 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "native_sim_native_one.dts"
/ {
/delete-node/ added-by-native-one;
added-by-native-two{
};
};

View file

@ -0,0 +1,25 @@
identifier: native_sim_native_64_two
name: Native Simulation port - 32-bit
type: native
simulation: native
arch: posix
ram: 65536
flash: 65536
toolchain:
- host
- llvm
supported:
- can
- counter
- dma
- eeprom
- netif:eth
- usb_device
- adc
- i2c
- spi
- gpio
- rtc
testing:
default: true
vendor: zephyr

View file

@ -0,0 +1,7 @@
# Copyright (c) 2024 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
CONFIG_CONSOLE=y
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=1000000
CONFIG_EXTENDED_VARIANT_BOARD_SETTING_DEFCONFIG=y

View file

@ -0,0 +1,218 @@
/*
* Copyright (c) 2019 Jan Van Winkel (jan.van_winkel@dxplore.eu)
*
* SPDX-License-Identifier: Apache-2.0
*/
/dts-v1/;
#include <posix/posix.dtsi>
#include <zephyr/dt-bindings/adc/adc.h>
#include <zephyr/dt-bindings/i2c/i2c.h>
#include <zephyr/dt-bindings/gpio/gpio.h>
/ {
model = "Native Sim Board";
compatible = "zephyr,posix";
chosen {
zephyr,console = &uart0;
zephyr,shell-uart = &uart0;
zephyr,uart-mcumgr = &uart0;
zephyr,flash = &flash0;
zephyr,entropy = &rng;
zephyr,flash-controller = &flashcontroller0;
zephyr,display = &sdl_dc;
zephyr,canbus = &can_loopback0;
zephyr,code-partition = &slot0_partition;
};
aliases {
eeprom-0 = &eeprom0;
i2c-0 = &i2c0;
spi-0 = &spi0;
led0 = &led0;
rtc = &rtc;
};
leds {
compatible = "gpio-leds";
led0: led_0 {
gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>;
label = "Green LED";
};
};
lvgl_pointer {
compatible = "zephyr,lvgl-pointer-input";
input = <&input_sdl_touch>;
};
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu0: cpu@0 {
compatible = "zephyr,native-posix-cpu";
reg = <0>;
};
};
flashcontroller0: flash-controller@0 {
compatible = "zephyr,sim-flash";
reg = <0x00000000 DT_SIZE_K(2048)>;
#address-cells = <1>;
#size-cells = <1>;
erase-value = <0xff>;
flash0: flash@0 {
status = "okay";
compatible = "soc-nv-flash";
erase-block-size = <4096>;
write-block-size = <1>;
reg = <0x00000000 DT_SIZE_K(2048)>;
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
boot_partition: partition@0 {
label = "mcuboot";
reg = <0x00000000 0x0000C000>;
};
slot0_partition: partition@c000 {
label = "image-0";
reg = <0x0000C000 0x00069000>;
};
slot1_partition: partition@75000 {
label = "image-1";
reg = <0x00075000 0x00069000>;
};
scratch_partition: partition@de000 {
label = "image-scratch";
reg = <0x000de000 0x0001e000>;
};
storage_partition: partition@fc000 {
label = "storage";
reg = <0x000fc000 0x00004000>;
};
};
};
};
eeprom0: eeprom {
status = "okay";
compatible = "zephyr,sim-eeprom";
size = <DT_SIZE_K(32)>;
};
i2c0: i2c@100 {
status = "okay";
compatible = "zephyr,i2c-emul-controller";
clock-frequency = <I2C_BITRATE_STANDARD>;
#address-cells = <1>;
#size-cells = <0>;
reg = <0x100 4>;
};
spi0: spi@200 {
status = "okay";
compatible = "zephyr,spi-emul-controller";
clock-frequency = <50000000>;
#address-cells = <1>;
#size-cells = <0>;
reg = <0x200 4>;
};
espi0: espi@300 {
status = "okay";
compatible = "zephyr,espi-emul-controller";
reg = <0x300 4>;
#address-cells = <1>;
#size-cells = <0>;
};
uart0: uart {
status = "okay";
compatible = "zephyr,native-posix-uart";
/* Dummy current-speed entry to comply with serial
* DTS binding
*/
current-speed = <0>;
};
uart1: uart_1 {
status = "okay";
compatible = "zephyr,native-posix-uart";
/* Dummy current-speed entry to comply with serial
* DTS binding
*/
current-speed = <0>;
};
rng: rng {
status = "okay";
compatible = "zephyr,native-posix-rng";
};
counter0: counter {
status = "okay";
compatible = "zephyr,native-posix-counter";
};
gpio0: gpio@800 {
status = "okay";
compatible = "zephyr,gpio-emul";
reg = <0x800 0x4>;
rising-edge;
falling-edge;
high-level;
low-level;
gpio-controller;
#gpio-cells = <2>;
};
zephyr_udc0: udc0 {
compatible = "zephyr,native-posix-udc";
};
sdl_dc: sdl_dc {
compatible = "zephyr,sdl-dc";
height = <240>;
width = <320>;
};
input_sdl_touch: input-sdl-touch {
compatible = "zephyr,input-sdl-touch";
};
can_loopback0: can_loopback0 {
status = "okay";
compatible = "zephyr,can-loopback";
};
can0: can {
status = "disabled";
compatible = "zephyr,native-linux-can";
/* adjust zcan0 to desired host interface or create an alternative
* name, e.g.: sudo ip link property add dev vcan0 altname zcan0
*/
host-interface = "zcan0";
};
rtc: rtc {
status = "okay";
compatible = "zephyr,rtc-emul";
alarms-count = <2>;
};
dma: dma {
compatible = "zephyr,dma-emul";
#dma-cells = <1>;
stack-size = <4096>;
};
added-by-native-one {
};
};

View file

@ -0,0 +1,25 @@
identifier: native_sim_native_one
name: Native Simulation port - 32-bit
type: native
simulation: native
arch: posix
ram: 65536
flash: 65536
toolchain:
- host
- llvm
supported:
- can
- counter
- dma
- eeprom
- netif:eth
- usb_device
- adc
- i2c
- spi
- gpio
- rtc
testing:
default: true
vendor: zephyr

View file

@ -0,0 +1,7 @@
# Copyright (c) 2024 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
CONFIG_CONSOLE=y
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=1000000
CONFIG_EXTENDED_VARIANT_BOARD_SETTING_DEFCONFIG=y

View file

@ -0,0 +1,6 @@
# Copyright (c) 2024, Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
config SOC_MPS2_AN521_CPUTEST
bool
select SOC_MPS2_AN521

View file

@ -0,0 +1,4 @@
socs:
- extend: an521
cpuclusters:
- name: cputest

View file

@ -0,0 +1 @@
CONFIG_ZTEST=y

View file

@ -0,0 +1,85 @@
/*
* Copyright (c) 2024 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/ztest.h>
#ifdef CONFIG_EXTENDED_VARIANT_BOARD_SETTING
#define EXTENDED_BOARD_A 1
#else
#define EXTENDED_BOARD_A 0
#endif
#ifdef CONFIG_EXTENDED_VARIANT_BOARD_ONE_SETTING_PROMPTLESS
#define EXTENDED_BOARD_ONE_B 1
#else
#define EXTENDED_BOARD_ONE_B 0
#endif
#ifdef CONFIG_EXTENDED_VARIANT_BOARD_TWO_SETTING_PROMPTLESS
#define EXTENDED_BOARD_TWO_C 1
#else
#define EXTENDED_BOARD_TWO_C 0
#endif
#ifdef CONFIG_EXTENDED_VARIANT_BOARD_SETTING_DEFCONFIG
#define EXTENDED_BOARD_D 1
#else
#define EXTENDED_BOARD_D 0
#endif
#ifdef CONFIG_BASE_BOARD_SETTING
#define BASE_BOARD_CONFIG 1
#else
#define BASE_BOARD_CONFIG 0
#endif
#ifdef CONFIG_SOC_MPS2_AN521_CPUTEST
#define EXTENDED_SOC 1
#else
#define EXTENDED_SOC 0
#endif
ZTEST_SUITE(soc_board_extend, NULL, NULL, NULL, NULL, NULL);
#if CONFIG_BOARD_NATIVE_SIM
ZTEST(soc_board_extend, test_native_sim_extend)
{
#if CONFIG_BOARD_NATIVE_SIM_NATIVE_ONE
zassert_true(EXTENDED_BOARD_A, "Expected extended board to be set");
zassert_true(EXTENDED_BOARD_ONE_B, "Expected extended board to be set");
zassert_false(EXTENDED_BOARD_TWO_C, "Did not expect extended board two to be set");
zassert_true(EXTENDED_BOARD_D, "Expected extended board to be set");
zassert_false(BASE_BOARD_CONFIG, "Did not expect base board to be set");
zassert_true(DT_NODE_EXISTS(DT_PATH(added_by_native_one)));
zassert_false(DT_NODE_EXISTS(DT_PATH(added_by_native_two)));
zassert_false(DT_NODE_EXISTS(DT_PATH(adc)));
#elif CONFIG_BOARD_NATIVE_SIM_NATIVE_64_TWO
zassert_true(EXTENDED_BOARD_A, "Expected extended board to be set");
zassert_false(EXTENDED_BOARD_ONE_B, "Did not expect extended board one to be set");
zassert_true(EXTENDED_BOARD_TWO_C, "Expected extended board to be set");
zassert_true(EXTENDED_BOARD_D, "Expected extended board to be set");
zassert_false(BASE_BOARD_CONFIG, "Did not expect base board to be set");
zassert_false(DT_NODE_EXISTS(DT_PATH(added_by_native_one)));
zassert_true(DT_NODE_EXISTS(DT_PATH(added_by_native_two)));
zassert_false(DT_NODE_EXISTS(DT_PATH(adc)));
#else
zassert_true(false, "Did not expect to build for a base native_sim board");
#endif
#elif CONFIG_BOARD_MPS2
ZTEST(soc_board_extend, test_an521_soc_extend)
{
#if CONFIG_BOARD_MPS2_AN521_CPUTEST
zassert_true(EXTENDED_SOC, "Expected extended SoC to be set");
#elif CONFIG_BOARD_MPS2
zassert_true(false, "Did not expect to build for a base mps2 board");
#endif
#else
ZTEST(soc_board_extend, test_failure)
{
zassert_true(false, "Did not expect to build for a regular board");
#endif
}

View file

@ -0,0 +1,33 @@
common:
tags:
- cmake
tests:
cmake.board.extend_one:
extra_args:
# Twister can only lookup known board roots.
# Thus platform above is set to native_sim, while at this location
# we overrule with the native_sim/native/one board.
# Test will fail if we accidentially build for the base native_sim board.
- CACHED_BOARD=native_sim/native/one
platform_allow:
- native_sim
- native_sim/native/64
integration_platforms:
- native_sim
- native_sim/native/64
cmake.board.extend_two:
extra_args:
- CACHED_BOARD=native_sim/native/64/two
platform_allow:
- native_sim
- native_sim/native/64
integration_platforms:
- native_sim
- native_sim/native/64
cmake.soc.extend_cputest:
extra_args:
- CACHED_BOARD=mps2/an521/cputest
platform_allow:
- mps2/an521/cpu0
integration_platforms:
- mps2/an521/cpu0