Running your own Zephyr binary on LiteX/VexRiscv in Renode¶
Zephyr is a very capable RTOS governed by a Linux Foundation subproject. It is very well supported on the RISC-V architecture, as well as in LiteX.
Building a Zephyr application¶
To install all the dependencies and prepare the environment for building
the Zephyr application follow the official Zephyr Getting Started
up to point 4. On Linux you can follow the instructions from the point 5
on installing the Software Development Toolchain. The python version
in the FOMU toolchain may not work; remove it from your PATH before
attempting to build zephyr.
For other operating
systems, if you followed the instructions from the
section of this tutorial, you should have a toolchain in
On macOS and Windows you also need to set some additional variables.
export ZEPHYR_TOOLCHAIN_VARIANT=cross-compile export CROSS_COMPILE=riscv64-unknown-elf-
set ZEPHYR_TOOLCHAIN_VARIANT=cross-compile set CROSS_COMPILE=riscv64-unknown-elf-
To build the
shell demo application for the LiteX/VexRiscv board run
the following commands on Linux and macOS:
cd ~/zephyrproject/zephyr source zephyr-env.sh west build -p auto -b litex_vexriscv samples/subsys/shell/shell_module/
And on Windows:
cd %HOMEPATH%\zephyrproject\zephyr zephyr-env.cmd west build -p auto -b litex_vexriscv samples\subsys\shell\shell_module\
The resulting ELF file will be in
Run the app in Renode¶
To run the app you just compiled, you basically need to replace the
precomipled demo binary with the one you want, by setting the
variable - see below.
Just like before, start Renode using the
renode command (or
./renode if you built from sources).
You will see the Monitor, where you should type:
(monitor) $zephyr=@/path/to/zephyrproject/zephyr/build/zephyr/zephyr.elf (monitor) start @scripts/single-node/litex_vexriscv_zephyr.resc
You should see a new window pop up for the serial port. In it, you should see the Zephyr interactive shell.
Debugging the app in Renode¶
In general, debugging in Renode is done with GDB just like with a physical board - you connect to a debug port and execute GDB commands as usual. For details, see the Renode debugging documentation.