Renode

../../_images/renode.png

Renode is a development framework which accelerates IoT and embedded systems development by letting you simulate physical hardware systems - including both the CPU, peripherals, sensors, environment and wired or wireless medium between nodes. For more information, see Renode’s official website.

Configuration

You can configure Renode as a debugging tool using debug_tool option in “platformio.ini” (Project Configuration File):

[env:myenv]
platform = ...
board = ...
debug_tool = renode

More options:

Installation

We will automatically install for you the latest Renode package using PlatformIO package manager. The only requirement is to install Mono/.NET framework.

Windows:On Windows 7, download and install .NET Framework 4.7. Windows 10 ships with .NET by default, so no action is required there.
Mac:Install Homebrew and the mono package using brew install mono.
Linux:Install the mono-complete package as per the installation instructions for various Linux distributions which can be found on the Mono project website.

Check the official Renode installation guide for more details.

Custom Settings

If the default Renode configuration is not suitable for your project, it’s possible to override the default Renode flags in “platformio.ini” (Project Configuration File). The following sections describe typical use cases where custom settings might be useful.

Additional Analyzers

Additional analyzers might be handy in cases when an application prints output to a peripheral which is not visible by default. For example, to open an additional UART window while using Renode as the upload tool, a special command showAnalyzer should be added to upload_flags option, e.g.:

[env:hifive1-revb]
platform = sifive
framework = zephyr
board = hifive1-revb
; Override the default upload settings
upload_command = renode $UPLOAD_FLAGS
upload_flags =
    -e include @scripts/single-node/sifive_fe310.resc
    -e showAnalyzer uart1
    -e sysbus LoadELF @$SOURCE
    -e start

Redirecting peripherals output

It might be useful to redirect output from device peripherals to a more convenient communication channel. A typical example is redirecting UART output to a socket which can be opened by platformio device monitor while using Renode as the debug tool. The default debug flags can be overridden using the debug_server option. For example, the following configuration can be used to redirect output from the UART0 port on the hifive1-revb board:

[env:hifive1-revb]
platform = sifive
framework = zephyr
board = hifive1-revb
; Override the default debug settings
debug_tool = custom
debug_port = localhost:3333
debug_server = renode
  --hide-log
  -e machine StartGdbServer 3333 True
  -e emulation CreateServerSocketTerminal 4321 "externalUART" false
  -e connector Connect uart0 externalUART
debug_extra_cmds =
    monitor start

# Monitor port for Renode integration
monitor_port = socket://localhost:4321

Platforms

Name Description
SiFive SiFive brings the power of open source and software automation to the semiconductor industry, making it possible to develop new hardware faster and more affordably than ever before.

Frameworks

Name Description
FreeRTOS FreeRTOS is a real-time operating system kernel for embedded devices that has been ported to 40 microcontroller platforms
Freedom E SDK Open Source Software for Developing on the SiFive Freedom E Platform
Zephyr RTOS The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with safety and security in mind

Boards

Note

For more detailed board information please scroll tables below by horizontal.

Name Platform Debug MCU Frequency Flash RAM
Arty FPGA Dev Kit SiFive On-board FE310 450MHz 16MB 256MB
HiFive Unleashed SiFive On-board FU540 1500MHz 32MB 8GB
HiFive1 SiFive On-board FE310 320MHz 16MB 16KB
HiFive1 Rev B SiFive On-board FE310 320MHz 16MB 16KB
SparkFun RED-V RedBoard SiFive On-board FE310 320MHz 16MB 16KB
SparkFun RED-V Thing Plus SiFive On-board FE310 320MHz 16MB 16KB