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 pio 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

Examples

Platforms

Name

Description

OpenHW Group

OpenHW Group is a not-for-profit, global organization that provides an infrastructure for hosting high quality open-source HW developments in line with industry best practices. The OpenHW CV32E40P RISC-V core is the first open-source core for high-volume chips verified with the state-of-the-art process required for high-integrity, commercial SoCs.

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

Freedom E SDK

Open Source Software for Developing on the SiFive Freedom E Platform

FreeRTOS

FreeRTOS is a real-time operating system kernel for embedded devices that has been ported to 40 microcontroller platforms

PULP Runtime Environment

Runtime Environment for Parallel Ultra Low Power platform targeting high energy efficiencies

PULP SDK

Software Development Kit for Parallel Ultra Low Power platform targeting high energy efficiencies

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

Digilent Nexys A7

OpenHW Group

On-board

320MHz

16MB

1.16MB

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