-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
tests: benchmarks: multicore: Add test for S2RAM and STM log #18779
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# | ||
# Copyright (c) 2024 Nordic Semiconductor ASA | ||
# | ||
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause | ||
# | ||
|
||
cmake_minimum_required(VERSION 3.20.0) | ||
|
||
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) | ||
|
||
if(NOT SYSBUILD) | ||
message(FATAL_ERROR | ||
" This is a multi-image application that should be built using sysbuild.\n" | ||
" Add --sysbuild argument to west build command to prepare all the images.") | ||
endif() | ||
|
||
project(idle_stm) | ||
|
||
target_sources(app PRIVATE src/main.c) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# | ||
# Copyright (c) 2024 Nordic Semiconductor ASA | ||
# | ||
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause | ||
# | ||
|
||
config TEST_SLEEP_DURATION_MS | ||
int "Amount of time (in miliseconds) the core is sleeping" | ||
default 1000 | ||
help | ||
Set sleep duration to TEST_SLEEP_DURATION_MS miliseconds. | ||
Based on the value of 'min-residency-us' specified for each power state defined in the DTS, | ||
core enters the lowest possible power state. | ||
|
||
source "Kconfig.zephyr" |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
/* | ||
* Copyright (c) 2024 Nordic Semiconductor ASA | ||
* | ||
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause | ||
*/ | ||
|
||
/*&cpuppr_vpr { | ||
status = "okay"; | ||
Check warning on line 8 in tests/benchmarks/multicore/idle_stm/boards/nrf54h20dk_nrf54h20_cpuapp.overlay GitHub Actions / Run compliance checks on patch series (PR)BLOCK_COMMENT_STYLE
|
||
};*/ | ||
Check warning on line 9 in tests/benchmarks/multicore/idle_stm/boards/nrf54h20dk_nrf54h20_cpuapp.overlay GitHub Actions / Run compliance checks on patch series (PR)BLOCK_COMMENT_STYLE
|
||
|
||
&cpuppr_ram3x_region { | ||
status = "okay"; | ||
}; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
CONFIG_BOOT_BANNER=n | ||
CONFIG_NCS_BOOT_BANNER=n | ||
|
||
CONFIG_LOG=y | ||
CONFIG_ASSERT=y |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
CONFIG_PM=y | ||
CONFIG_PM_S2RAM=y | ||
CONFIG_PM_S2RAM_CUSTOM_MARKING=y | ||
CONFIG_POWEROFF=y | ||
CONFIG_SOC_NRF54H20_NO_MRAM_LATENCY=n | ||
|
||
CONFIG_PM_DEVICE=y | ||
CONFIG_PM_DEVICE_RUNTIME=y | ||
|
||
CONFIG_BOOT_BANNER=n | ||
CONFIG_NCS_BOOT_BANNER=n | ||
CONFIG_PRINTK=n | ||
CONFIG_LOG=y | ||
CONFIG_CONSOLE=n | ||
CONFIG_UART_CONSOLE=n | ||
CONFIG_SERIAL=y | ||
|
||
CONFIG_ASSERT=y |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# | ||
# Copyright (c) 2024 Nordic Semiconductor ASA | ||
# | ||
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause | ||
# | ||
|
||
cmake_minimum_required(VERSION 3.20.0) | ||
|
||
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) | ||
project(remote) | ||
|
||
target_sources(app PRIVATE ../src/main.c) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# | ||
# Copyright (c) 2024 Nordic Semiconductor ASA | ||
# | ||
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause | ||
# | ||
|
||
config TEST_SLEEP_DURATION_MS | ||
int "Amount of time (in miliseconds) the core is sleeping" | ||
default 1000 | ||
help | ||
Set sleep duration to TEST_SLEEP_DURATION_MS miliseconds. | ||
Based on the value of 'min-residency-us' specified for each power state defined in the DTS, | ||
core enters the lowest possible power state. | ||
|
||
source "Kconfig.zephyr" |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
CONFIG_LOG=y | ||
CONFIG_CONSOLE=n | ||
CONFIG_UART_CONSOLE=n | ||
CONFIG_SERIAL=n | ||
CONFIG_BOOT_BANNER=n | ||
CONFIG_NCS_BOOT_BANNER=n | ||
CONFIG_PRINTK=n | ||
|
||
CONFIG_ASSERT=y |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
CONFIG_PM=y | ||
CONFIG_POWEROFF=y | ||
|
||
CONFIG_PM_DEVICE=y | ||
CONFIG_PM_DEVICE_RUNTIME=y | ||
|
||
CONFIG_CONSOLE=n | ||
CONFIG_UART_CONSOLE=n | ||
CONFIG_SERIAL=n | ||
CONFIG_BOOT_BANNER=n | ||
CONFIG_NCS_BOOT_BANNER=n | ||
CONFIG_SOC_NRF54H20_NO_MRAM_LATENCY=n |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
/* | ||
* Copyright (c) 2024 Nordic Semiconductor ASA | ||
* | ||
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause | ||
*/ | ||
#include <zephyr/kernel.h> | ||
|
||
#include <zephyr/logging/log.h> | ||
LOG_MODULE_REGISTER(idle_stm, LOG_LEVEL_INF); | ||
|
||
#ifdef CONFIG_LOG_FRONTEND_STMESP | ||
#include <zephyr/logging/log_frontend_stmesp.h> | ||
#endif | ||
|
||
#include <zephyr/pm/device.h> | ||
#include <zephyr/pm/device_runtime.h> | ||
#include <zephyr/drivers/uart.h> | ||
|
||
#ifdef CONFIG_SERIAL | ||
static const struct device *const console_dev = DEVICE_DT_GET(DT_CHOSEN(zephyr_console)); | ||
#endif | ||
|
||
/* Variables used to make CPU active for ~1 second */ | ||
static struct k_timer my_timer; | ||
static bool timer_expired; | ||
|
||
void my_timer_handler(struct k_timer *dummy) | ||
{ | ||
timer_expired = true; | ||
} | ||
|
||
int main(void) | ||
{ | ||
int counter = 0; | ||
|
||
LOG_INF("Multicore idle_stm test on %s", CONFIG_BOARD_TARGET); | ||
LOG_INF("Main sleeps for %d ms", CONFIG_TEST_SLEEP_DURATION_MS); | ||
|
||
k_timer_init(&my_timer, my_timer_handler, NULL); | ||
|
||
#ifdef CONFIG_SERIAL | ||
if (IS_ENABLED(CONFIG_PM_DEVICE_RUNTIME)) { | ||
pm_device_runtime_enable(console_dev); | ||
} | ||
#endif | ||
|
||
/* Run test forever */ | ||
while (1) { | ||
timer_expired = false; | ||
|
||
/* start a one-shot timer that expires after 1 second */ | ||
k_timer_start(&my_timer, K_MSEC(1000), K_NO_WAIT); | ||
|
||
/* Keep CPU active for ~ 1 second */ | ||
while (!timer_expired) { | ||
k_busy_wait(10000); | ||
k_yield(); | ||
} | ||
|
||
LOG_INF("Run %d", counter); | ||
counter++; | ||
|
||
/* Sleep / enter low power state | ||
* Watchdog was started with option WDT_OPT_PAUSE_IN_SLEEP thus | ||
* it shall not reset the core during sleep. | ||
*/ | ||
k_msleep(CONFIG_TEST_SLEEP_DURATION_MS); | ||
} | ||
|
||
return 0; | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
# | ||
# Copyright (c) 2024 Nordic Semiconductor ASA | ||
# | ||
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause | ||
# | ||
|
||
# Add remote project | ||
ExternalZephyrProject_Add( | ||
APPLICATION remote_rad | ||
SOURCE_DIR ${APP_DIR}/../../power_consumption/common/remote_sleep_forever | ||
BOARD ${SB_CONFIG_BOARD}/${SB_CONFIG_SOC}/cpurad | ||
BOARD_REVISION ${BOARD_REVISION} | ||
) | ||
|
||
# ExternalZephyrProject_Add( | ||
# APPLICATION remote_ppr | ||
# SOURCE_DIR ${APP_DIR}/remote | ||
# BOARD ${SB_CONFIG_BOARD}/${SB_CONFIG_SOC}/cpuppr | ||
# BOARD_REVISION ${BOARD_REVISION} | ||
# ) | ||
Comment on lines
+15
to
+20
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. can go |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
common: | ||
sysbuild: true | ||
tags: ci_build ci_tests_benchmarks_multicore | ||
platform_allow: | ||
- nrf54h20dk/nrf54h20/cpuapp | ||
integration_platforms: | ||
- nrf54h20dk/nrf54h20/cpuapp | ||
|
||
tests: | ||
benchmarks.multicore.idle_stm.nrf54h20dk_cpuapp_cpurad.no_sleep: | ||
required_snippets: | ||
- nordic-log-stm | ||
harness: console | ||
harness_config: | ||
type: multi_line | ||
ordered: true | ||
regex: | ||
- "Multicore idle_stm test on" | ||
- "rad/idle_stm: Run" | ||
- "ppr/idle_stm: Run" | ||
- "app/idle_stm: Run" | ||
|
||
benchmarks.multicore.idle_stm.nrf54h20dk_cpuapp_cpurad.idle: | ||
tags: ppk_power_measure | ||
required_snippets: | ||
- nordic-log-stm | ||
extra_args: | ||
idle_stm_CONF_FILE=prj_s2ram.conf | ||
idle_stm_CONFIG_TEST_SLEEP_DURATION_MS=500 | ||
harness: pytest | ||
harness_config: | ||
fixture: ppk_power_measure | ||
pytest_root: | ||
- "${CUSTOM_ROOT_TEST_DIR}/test_measure_power_consumption.py::test_measure_and_data_dump_pwm_and_idle" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. pwm? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, PWM 😄 same like in idle_spim_loopback tests and idle_wdt: Test may need separate PyTest function. However, I don't know yet because I'm unable to reach S2RAM state (in both WDT and STM). |
||
|
||
benchmarks.multicore.idle_stm.nrf54h20dk_cpuapp_cpurad.s2ram: | ||
tags: ppk_power_measure | ||
required_snippets: | ||
- nordic-log-stm | ||
extra_args: | ||
idle_stm_CONF_FILE=prj_s2ram.conf | ||
harness: pytest | ||
harness_config: | ||
fixture: ppk_power_measure | ||
pytest_root: | ||
- "${CUSTOM_ROOT_TEST_DIR}/test_measure_power_consumption.py::test_measure_and_data_dump_pwm_and_idle" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
comments part can go?