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
927Jumpstarter provides a driver-based framework for interacting with
1028devices under test, both physical hardware and virtual systems. The
@@ -14,12 +32,14 @@ provisioning.
1432
1533There is growing demand for ** microcontroller-class** virtual targets
1634running 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