.. _riscv32-virtual: RISCV32 Virtual ############### Overview ******** The RISCV32 Virtual board is a virtual platform made with Renode as an alternative to QEMU. Contrary to QEMU, the peripherals of this platform can be easily configured by editing the ``riscv32_virtual.repl`` script and the devicetree files accordingly, this allows certain hardware configurations that only exist in proprietary boards/SoCs to be tested in upstream CI. Programming and debugging ************************* Building ======== Applications for the ``riscv32_virtual`` board configuration can be built as usual (see :ref:`build_an_application`): .. zephyr-app-commands:: :board: riscv32_virtual :goals: build Flashing ======== While this board is emulated and you can't "flash" it, you can use this configuration to run basic Zephyr applications and kernel tests in the Renode emulated environment. For example, with the :zephyr:code-sample:`synchronization` sample: .. zephyr-app-commands:: :zephyr-app: samples/synchronization :host-os: unix :board: riscv32_virtual :goals: run This will build an image with the synchronization sample app, boot it using Renode, and display the following console output: .. code-block:: console *** Booting Zephyr OS build zephyr-v3.5.0-1511-g56f73bde0fb0 *** thread_a: Hello World from cpu 0 on riscv32_virtual! thread_b: Hello World from cpu 0 on riscv32_virtual! thread_a: Hello World from cpu 0 on riscv32_virtual! thread_b: Hello World from cpu 0 on riscv32_virtual! Exit Renode by pressing :kbd:`CTRL+C`. Debugging ========= Refer to the detailed overview about :ref:`application_debugging`.