doc: qemu-riscv: Update documentation for QEMU spike machine

We can now use same U-Boot images on both QEMU virt machine and QEMU
spike machine so let's update the QEMU RISC-V documentation.

Signed-off-by: Anup Patel <apatel@ventanamicro.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
Anup Patel
2022-01-27 11:41:10 +05:30
committed by Leo Yu-Chi Liang
parent ef19131b80
commit 7c08680aa3

View File

@@ -4,19 +4,24 @@
QEMU RISC-V QEMU RISC-V
=========== ===========
QEMU for RISC-V supports a special 'virt' machine designed for emulation and QEMU for RISC-V supports a special 'virt' machine and 'spike' machine designed
virtualization purposes. This document describes how to run U-Boot under it. for emulation and virtualization purposes. This document describes how to run
Both 32-bit and 64-bit targets are supported, running in either machine or U-Boot under it. Both 32-bit and 64-bit targets are supported, running in
supervisor mode. either machine or supervisor mode.
The QEMU virt machine models a generic RISC-V virtual machine with support for The QEMU virt machine models a generic RISC-V virtual machine with support for
the VirtIO standard networking and block storage devices. It has CLINT, PLIC, the VirtIO standard networking and block storage devices. It has CLINT, PLIC,
16550A UART devices in addition to VirtIO and it also uses device-tree to pass 16550A UART devices in addition to VirtIO and it also uses device-tree to pass
configuration information to guest software. It implements RISC-V privileged configuration information to guest software. It implements the latest RISC-V
privileged architecture.
See :doc:`../../develop/devicetree/dt_qemu` for information on how to see See :doc:`../../develop/devicetree/dt_qemu` for information on how to see
the devicetree actually generated by QEMU. the devicetree actually generated by QEMU.
architecture spec v1.10.
The QEMU spike machine models a minimalistic RISC-V virtual machine with
only CLINT and HTIF devices. It also uses device-tree to pass configuration
information to guest software and implements the latest RISC-V privileged
architecture.
Building U-Boot Building U-Boot
--------------- ---------------
@@ -41,13 +46,17 @@ Running U-Boot
-------------- --------------
The minimal QEMU command line to get U-Boot up and running is: The minimal QEMU command line to get U-Boot up and running is:
- For 32-bit RISC-V:: - For 32-bit RISC-V virt machine::
qemu-system-riscv32 -nographic -machine virt -bios u-boot qemu-system-riscv32 -nographic -machine virt -bios u-boot.bin
- For 64-bit RISC-V:: - For 64-bit RISC-V virt machine::
qemu-system-riscv64 -nographic -machine virt -bios u-boot qemu-system-riscv64 -nographic -machine virt -bios u-boot.bin
- For 64-bit RISC-V spike machine::
qemu-system-riscv64 -nographic -machine spike -bios u-boot.bin
The commands above create targets with 128MiB memory by default. The commands above create targets with 128MiB memory by default.
A freely configurable amount of RAM can be created via the '-m' A freely configurable amount of RAM can be created via the '-m'
@@ -58,6 +67,7 @@ the new setting.
For instructions on how to run U-Boot in supervisor mode on QEMU For instructions on how to run U-Boot in supervisor mode on QEMU
with OpenSBI, see the documentation available with OpenSBI: with OpenSBI, see the documentation available with OpenSBI:
https://github.com/riscv/opensbi/blob/master/docs/platform/qemu_virt.md https://github.com/riscv/opensbi/blob/master/docs/platform/qemu_virt.md
https://github.com/riscv/opensbi/blob/master/docs/platform/spike.md
These have been tested in QEMU 5.0.0. These have been tested in QEMU 5.0.0.
@@ -80,8 +90,9 @@ supported by U-Boot. Clone the OpenSBI repository and run the following command.
See the OpenSBI documentation for full details: See the OpenSBI documentation for full details:
https://github.com/riscv/opensbi/blob/master/docs/platform/qemu_virt.md https://github.com/riscv/opensbi/blob/master/docs/platform/qemu_virt.md
https://github.com/riscv/opensbi/blob/master/docs/platform/spike.md
To make the FW_DYNAMIC binary (build/platform/qemu/virt/firmware/fw_dynamic.bin) To make the FW_DYNAMIC binary (build/platform/generic/firmware/fw_dynamic.bin)
available to U-Boot, either copy it into the U-Boot root directory or specify available to U-Boot, either copy it into the U-Boot root directory or specify
its location with the OPENSBI environment variable. Afterwards, compile U-Boot its location with the OPENSBI environment variable. Afterwards, compile U-Boot
with the following commands. with the following commands.
@@ -99,17 +110,22 @@ with the following commands.
The minimal QEMU commands to run U-Boot SPL in both 32-bit and 64-bit The minimal QEMU commands to run U-Boot SPL in both 32-bit and 64-bit
configurations are: configurations are:
- For 32-bit RISC-V:: - For 32-bit RISC-V virt machine::
qemu-system-riscv32 -nographic -machine virt -bios spl/u-boot-spl \ qemu-system-riscv32 -nographic -machine virt -bios spl/u-boot-spl.bin \
-device loader,file=u-boot.itb,addr=0x80200000 -device loader,file=u-boot.itb,addr=0x80200000
- For 64-bit RISC-V:: - For 64-bit RISC-V virt machine::
qemu-system-riscv64 -nographic -machine virt -bios spl/u-boot-spl \ qemu-system-riscv64 -nographic -machine virt -bios spl/u-boot-spl.bin \
-device loader,file=u-boot.itb,addr=0x80200000 -device loader,file=u-boot.itb,addr=0x80200000
An attached disk can be emulated by adding:: - For 64-bit RISC-V spike machine::
qemu-system-riscv64 -nographic -machine spike -bios spl/u-boot-spl.bin \
-device loader,file=u-boot.itb,addr=0x80200000
An attached disk can be emulated in RISC-V virt machine by adding::
-device ich9-ahci,id=ahci \ -device ich9-ahci,id=ahci \
-drive if=none,file=riscv64.img,format=raw,id=mydisk \ -drive if=none,file=riscv64.img,format=raw,id=mydisk \