Skip to content

Commit be6624f

Browse files
nordic-pikrnordic-piks
authored andcommitted
tests: drivers: grtc: Add test for clear grtc after system and pin reset
Add test for clear grtc after system and pin reset Signed-off-by: Piotr Krzyzanowski <[email protected]>
1 parent 6b23fa7 commit be6624f

File tree

5 files changed

+105
-0
lines changed

5 files changed

+105
-0
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#
2+
# Copyright (c) 2025 Nordic Semiconductor ASA
3+
#
4+
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
#
6+
7+
cmake_minimum_required(VERSION 3.20.0)
8+
9+
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
10+
project(grtc_reset)
11+
12+
FILE(GLOB app_sources src/main.c)
13+
target_sources(app PRIVATE ${app_sources})
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
CONFIG_LOG=y
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#
2+
# Copyright (c) 2025 Nordic Semiconductor ASA
3+
#
4+
# SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
#
6+
7+
import logging
8+
import re
9+
import subprocess
10+
import time
11+
12+
from twister_harness import DeviceAdapter
13+
14+
logger = logging.getLogger(__name__)
15+
16+
def reset_dut(dut: DeviceAdapter, reset_kind: str = "RESET_PIN"):
17+
cmd = [
18+
"nrfutil",
19+
"device",
20+
"reset",
21+
"--reset-kind",
22+
reset_kind,
23+
"--serial-number",
24+
dut.device_config.id.lstrip("0"),
25+
]
26+
subprocess.run(cmd, stderr=subprocess.STDOUT).decode("utf-8")
27+
28+
def get_cycle_and_uptime_from_logs(dut: DeviceAdapter):
29+
lines = dut.readlines_until(num_of_lines=5)
30+
for line in lines:
31+
match_cycle = re.search(r'k_cycle_get_32\s*=\s*(\d+)', line)
32+
if match_cycle:
33+
cycle=(int(match_cycle.group(1)))
34+
match_uptime = re.search(r'k_uptime_get\s*=\s*(\d+)', line)
35+
if match_uptime:
36+
uptime=(int(match_uptime.group(1)))
37+
return cycle, uptime
38+
39+
40+
def test_grtc_reset(dut: DeviceAdapter):
41+
cycle, uptime = get_cycle_and_uptime_from_logs(dut)
42+
reset_dut(dut, reset_kind="RESET_SYSTEM")
43+
cycle_system, uptime_system = get_cycle_and_uptime_from_logs(dut)
44+
reset_dut(dut, reset_kind="RESET_PIN")
45+
cycle_pin, uptime_pin = get_cycle_and_uptime_from_logs(dut)
46+
assert uptime in range(10, 14)
47+
assert cycle_system > cycle
48+
assert uptime_system < 3
49+
assert cycle_pin < cycle_system
50+
assert uptime_pin < 3
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/*
2+
* Copyright (c) 2025 Nordic Semiconductor ASA
3+
*
4+
* SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
5+
*/
6+
7+
#include <zephyr/kernel.h>
8+
#include <zephyr/logging/log.h>
9+
10+
11+
LOG_MODULE_REGISTER(idle);
12+
13+
int main(void)
14+
{
15+
LOG_INF("GRTC reset test");
16+
LOG_INF("k_cycle_get_32 = %u", k_cycle_get_32());
17+
LOG_INF("k_uptime_get = %llu", k_uptime_get());
18+
return 0;
19+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
tests:
2+
drivers.grtc.grtc_reset:
3+
sysbuild: true
4+
tags:
5+
- drivers
6+
- grtc
7+
- ci_tests_drivers_grtc
8+
platform_allow:
9+
- nrf54l15dk/nrf54l05/cpuapp
10+
- nrf54l15dk/nrf54l10/cpuapp
11+
- nrf54l15dk/nrf54l15/cpuapp
12+
- nrf54lm20dk/nrf54lm20a/cpuapp
13+
- nrf54ls05dk/nrf54ls05b/cpuapp
14+
- [email protected]/nrf54ls05b/cpuapp
15+
- nrf54lv10dk/nrf54lv10a/cpuapp
16+
- nrf54h20dk/nrf54h20/cpuapp
17+
integration_platforms:
18+
- nrf54h20dk/nrf54h20/cpuapp
19+
harness: pytest
20+
harness_config:
21+
pytest_root:
22+
- pytest/tests.py::test_grtc_reset"

0 commit comments

Comments
 (0)