Renode Driver¶
jumpstarter-driver-renode provides a Jumpstarter driver for the
Renode embedded systems emulation framework. It
enables microcontroller-class virtual targets (Cortex-M, RISC-V MCUs)
running bare-metal firmware or RTOS as Jumpstarter test targets.
Installation¶
$ pip3 install --extra-index-url https://pkg.jumpstarter.dev/simple jumpstarter-driver-renode
Renode must be installed separately and available in PATH. See
Renode installation.
Configuration¶
Users define Renode targets entirely through YAML configuration. No code changes are needed for new targets.
Configuration Parameters¶
Parameter |
Type |
Default |
Description |
|---|---|---|---|
|
|
(required) |
Path to |
|
|
|
Peripheral path for the console UART |
|
|
|
Name of the Renode machine instance |
|
|
|
TCP port for the Renode monitor (0 = auto-assign) |
|
|
|
Additional monitor commands run after platform load |
Examples¶
STM32F407 Discovery (opensomeip FreeRTOS/ThreadX)¶
export:
ecu:
type: jumpstarter_driver_renode.driver.Renode
config:
platform: "platforms/boards/stm32f4_discovery-kit.repl"
uart: "sysbus.usart2"
NXP S32K388 (opensomeip Zephyr)¶
export:
ecu:
type: jumpstarter_driver_renode.driver.Renode
config:
platform: "/path/to/s32k388_renode.repl"
uart: "sysbus.uart0"
extra_commands:
- "sysbus WriteDoubleWord 0x40090030 0x0301"
Nucleo H753ZI (openbsw-zephyr)¶
export:
ecu:
type: jumpstarter_driver_renode.driver.Renode
config:
platform: "platforms/cpus/stm32h743.repl"
uart: "sysbus.usart3"
Usage¶
Programmatic (pytest)¶
from jumpstarter_driver_renode.driver import Renode
from jumpstarter.common.utils import serve
with serve(
Renode(
platform="platforms/boards/stm32f4_discovery-kit.repl",
uart="sysbus.usart2",
)
) as renode:
renode.flasher.flash("/path/to/firmware.elf")
renode.power.on()
with renode.console.pexpect() as p:
p.expect("Hello from MCU", timeout=30)
renode.power.off()
Monitor Commands¶
Send arbitrary Renode monitor commands via the client:
response = renode.monitor_cmd("sysbus GetRegistrationPoints sysbus.usart2")
The monitor CLI subcommand is also available inside a jmp shell session.
Architecture¶
The driver follows the composite driver pattern:
Renode- root composite driver, manages the simulation lifecycleRenodePower- starts/stops the Renode process and controls the simulation via the telnet monitor interfaceRenodeFlasher- loads firmware (ELF/BIN/HEX) into the simulated MCUconsole- UART output via PTY terminal, reusing thePySerialdriver
Design Decisions¶
Key decisions:
Control interface: Telnet monitor via
anyio.connect_tcp(no pyrenode3 / .NET dependency)UART exposure: PTY terminal reusing
PySerial(consistent with QEMU)Configuration model: Managed mode with
extra_commandsfor target-specific customizationFirmware loading:
flash()stores path,on()loads into simulation
API Reference¶
- class jumpstarter_driver_renode.driver.Renode¶
Renode emulation framework driver for Jumpstarter.
Provides a composite driver that manages a Renode simulation instance with power control, firmware flashing, and serial console access.
Users inject their Renode target configuration via YAML without modifying driver code:
platform: path to a.replfile or Renode built-in nameuart: peripheral path in the Renode object modelextra_commands: list of monitor commands for target-specific setup