Renode
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 usingbrew 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
Pre-configured projects for Zephyr RTOS, FreeRTOS, and Arduino by Carlos Eduardo
Platforms
Name |
Description |
---|---|
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 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 |
---|---|
Open Source Software for Developing on the SiFive Freedom E Platform |
|
FreeRTOS is a real-time operating system kernel for embedded devices that has been ported to 40 microcontroller platforms. |
|
Runtime Environment for Parallel Ultra Low Power platform |
|
Software Development Kit for Parallel Ultra Low Power platform |
|
Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures |
Boards
Note
For more detailed board
information please scroll tables below by horizontal.
Name |
Platform |
Debug |
MCU |
Frequency |
Flash |
RAM |
---|---|---|---|---|---|---|
On-board |
FE310 |
450MHz |
16MB |
256MB |
||
On-board |
320MHz |
16MB |
1.16MB |
|||
On-board |
FU540 |
1500MHz |
32MB |
8GB |
||
On-board |
FE310 |
320MHz |
16MB |
16KB |
||
On-board |
FE310 |
320MHz |
16MB |
16KB |
||
On-board |
FE310 |
320MHz |
16MB |
16KB |
||
On-board |
FE310 |
320MHz |
16MB |
16KB |