Skip to content

Commit f7e8718

Browse files
committed
Align ADR-0001 with JEP format from PR jumpstarter-dev#423
Restructure the Renode integration ADR to follow the JEP template format: metadata table, Abstract, Motivation, Rejected Alternatives, Prior Art, Implementation History, and References sections. The DD-N design decisions and Consequences sections were already aligned. Made-with: Cursor
1 parent 742c714 commit f7e8718

1 file changed

Lines changed: 74 additions & 12 deletions

File tree

python/docs/source/contributing/adr/0001-renode-integration.md

Lines changed: 74 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,28 @@
11
# ADR-0001: Renode Integration Approach
22

3-
- **Status**: Accepted
4-
- **Date**: 2026-04-06
5-
- **Authors**: Vinicius Zein
6-
7-
## Context
3+
| Field | Value |
4+
|--------------------|----------------------------------------------|
5+
| **ADR** | 0001 |
6+
| **Title** | Renode Integration Approach |
7+
| **Author(s)** | @vtz (Vinicius Zein) |
8+
| **Status** | Accepted |
9+
| **Type** | Standards Track |
10+
| **Created** | 2026-04-06 |
11+
| **Updated** | 2026-04-11 |
12+
| **Discussion** | [PR #533](https://github.com/jumpstarter-dev/jumpstarter/pull/533) |
13+
14+
---
15+
16+
## Abstract
17+
18+
This ADR documents the architectural decisions behind integrating the
19+
[Renode](https://renode.io/) emulation framework into Jumpstarter as a
20+
new driver package (`jumpstarter-driver-renode`). The driver enables
21+
microcontroller-class virtual targets running bare-metal firmware or
22+
RTOS on Cortex-M and RISC-V MCUs, complementing the existing QEMU
23+
driver which targets Linux-capable SoCs.
24+
25+
## Motivation
826

927
Jumpstarter provides a driver-based framework for interacting with
1028
devices under test, both physical hardware and virtual systems. The
@@ -14,12 +32,14 @@ provisioning.
1432

1533
There is growing demand for **microcontroller-class** virtual targets
1634
running bare-metal firmware or RTOS (Zephyr, FreeRTOS, ThreadX) on
17-
Cortex-M and RISC-V MCUs. [Renode](https://renode.io/) by Antmicro is
18-
an open-source emulation framework designed specifically for this
19-
domain, with extensive peripheral models for STM32, NXP S32K, Nordic,
20-
SiFive, and other MCU platforms.
35+
Cortex-M and RISC-V MCUs. Renode by Antmicro is an open-source
36+
emulation framework designed specifically for this domain, with
37+
extensive peripheral models for STM32, NXP S32K, Nordic, SiFive, and
38+
other MCU platforms.
39+
40+
### Reference Targets
2141

22-
The initial reference targets for validation are:
42+
The initial targets for validation are:
2343

2444
- **STM32F407 Discovery** (Cortex-M4F) -- opensomeip FreeRTOS/ThreadX
2545
ports, Renode built-in platform
@@ -28,7 +48,7 @@ The initial reference targets for validation are:
2848
- **Nucleo H753ZI** (Cortex-M7) -- openbsw-zephyr, Renode built-in
2949
`stm32h743.repl`
3050

31-
### Forces
51+
### Constraints
3252

3353
- The driver must follow Jumpstarter's established composite driver
3454
pattern (as demonstrated by `jumpstarter-driver-qemu`)
@@ -40,7 +60,7 @@ The initial reference targets for validation are:
4060
existing `PySerial` and `pexpect` tooling
4161
- The async framework must be `anyio` (the project's standard)
4262

43-
## Decisions
63+
## Design Decisions
4464

4565
### DD-1: Control Interface -- Telnet Monitor
4666

@@ -152,3 +172,45 @@ additionally supports hot-loading: if the simulation is already running,
152172
detection and error handling rely on observed behavior
153173
- Renode's PTY terminal support on macOS may have edge cases not
154174
covered in testing
175+
176+
## Rejected Alternatives
177+
178+
Beyond the alternatives listed in each Design Decision above, the
179+
high-level alternative of **not integrating Renode** and instead
180+
extending the QEMU driver for MCU targets was considered. QEMU's MCU
181+
support (e.g., `qemu-system-arm -M stm32vldiscovery`) is limited in
182+
peripheral modeling and does not match Renode's breadth for embedded
183+
platforms. The QEMU driver remains the right choice for Linux-capable
184+
SoCs while Renode fills the MCU gap.
185+
186+
## Prior Art
187+
188+
- **jumpstarter-driver-qemu** -- The existing Jumpstarter QEMU driver
189+
established the composite driver pattern, `Popen`-based process
190+
management, and side-channel control protocol (QMP) that this ADR
191+
follows.
192+
- **Renode documentation** -- [Renode docs](https://renode.readthedocs.io/)
193+
for monitor commands, platform descriptions, and UART terminal types.
194+
- **opensomeip** -- [github.com/vtz/opensomeip](https://github.com/vtz/opensomeip)
195+
provides the reference Renode targets (STM32F407, S32K388) used for
196+
validation.
197+
198+
## Implementation History
199+
200+
- 2026-04-06: ADR proposed
201+
- 2026-04-09: Initial implementation merged ([PR #533](https://github.com/jumpstarter-dev/jumpstarter/pull/533))
202+
- 2026-04-11: Address review feedback (DEVNULL, try-except cleanup,
203+
async wait, RenodeMonitorError, multi-word CLI, docstrings)
204+
205+
## References
206+
207+
- [PR #533: Add Renode emulator driver](https://github.com/jumpstarter-dev/jumpstarter/pull/533)
208+
- [Renode project](https://renode.io/)
209+
- [Renode documentation](https://renode.readthedocs.io/)
210+
- [JEP process (PR #423)](https://github.com/jumpstarter-dev/jumpstarter/pull/423)
211+
212+
---
213+
214+
*This ADR is licensed under the
215+
[Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0),
216+
consistent with the Jumpstarter project.*

0 commit comments

Comments
 (0)