mirror of
https://github.com/riscv-software-src/opensbi.git
synced 2025-08-25 07:41:42 +01:00

The OpenSBI generic platform works perfectly fine on the QEMU virt machine so let's remove dedicated QEMU virt machine platform from OpenSBI. All QEMU virt machine related documentation in OpenSBI will now suggest using OpenSBI generic platform. Signed-off-by: Anup Patel <anup.patel@wdc.com> Reviewed-by: Bin Meng <bin.meng@windriver.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
150 lines
3.6 KiB
Markdown
150 lines
3.6 KiB
Markdown
QEMU RISC-V Virt Machine Platform
|
|
=================================
|
|
|
|
The **QEMU RISC-V Virt Machine** is a virtual platform created for RISC-V
|
|
software development and testing. It is also referred to as
|
|
*QEMU RISC-V VirtIO machine* because it uses VirtIO devices for network,
|
|
storage, and other types of IO.
|
|
|
|
To build the platform-specific library and firmware images, provide the
|
|
*PLATFORM=generic* parameter to the top level `make` command.
|
|
|
|
Platform Options
|
|
----------------
|
|
|
|
The *QEMU RISC-V Virt Machine* platform does not have any platform-specific
|
|
options.
|
|
|
|
Execution on QEMU RISC-V 64-bit
|
|
-------------------------------
|
|
|
|
**No Payload Case**
|
|
|
|
Build:
|
|
```
|
|
make PLATFORM=generic
|
|
```
|
|
|
|
Run:
|
|
```
|
|
qemu-system-riscv64 -M virt -m 256M -nographic \
|
|
-kernel build/platform/generic/firmware/fw_payload.bin
|
|
```
|
|
|
|
**U-Boot Payload**
|
|
|
|
Note: the command line examples here assume that U-Boot was compiled using
|
|
the `qemu-riscv64_smode_defconfig` configuration.
|
|
|
|
Build:
|
|
```
|
|
make PLATFORM=generic FW_PAYLOAD_PATH=<uboot_build_directory>/u-boot.bin
|
|
```
|
|
|
|
Run:
|
|
```
|
|
qemu-system-riscv64 -M virt -m 256M -nographic \
|
|
-kernel build/platform/generic/firmware/fw_payload.elf
|
|
```
|
|
or
|
|
```
|
|
qemu-system-riscv64 -M virt -m 256M -nographic \
|
|
-bios build/platform/generic/firmware/fw_jump.bin \
|
|
-kernel <uboot_build_directory>/u-boot.bin
|
|
```
|
|
|
|
**Linux Kernel Payload**
|
|
|
|
Note: We assume that the Linux kernel is compiled using
|
|
*arch/riscv/configs/defconfig*.
|
|
|
|
Build:
|
|
```
|
|
make PLATFORM=generic FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image
|
|
```
|
|
|
|
Run:
|
|
```
|
|
qemu-system-riscv64 -M virt -m 256M -nographic \
|
|
-kernel build/platform/generic/firmware/fw_payload.elf \
|
|
-drive file=<path_to_linux_rootfs>,format=raw,id=hd0 \
|
|
-device virtio-blk-device,drive=hd0 \
|
|
-append "root=/dev/vda rw console=ttyS0"
|
|
```
|
|
or
|
|
```
|
|
qemu-system-riscv64 -M virt -m 256M -nographic \
|
|
-bios build/platform/generic/firmware/fw_jump.bin \
|
|
-kernel <linux_build_directory>/arch/riscv/boot/Image \
|
|
-drive file=<path_to_linux_rootfs>,format=raw,id=hd0 \
|
|
-device virtio-blk-device,drive=hd0 \
|
|
-append "root=/dev/vda rw console=ttyS0"
|
|
```
|
|
|
|
|
|
Execution on QEMU RISC-V 32-bit
|
|
-------------------------------
|
|
|
|
**No Payload Case**
|
|
|
|
Build:
|
|
```
|
|
make PLATFORM=generic PLATFORM_RISCV_XLEN=32
|
|
```
|
|
|
|
Run:
|
|
```
|
|
qemu-system-riscv32 -M virt -m 256M -nographic \
|
|
-kernel build/platform/generic/firmware/fw_payload.bin
|
|
```
|
|
|
|
**U-Boot Payload**
|
|
|
|
Note: the command line examples here assume that U-Boot was compiled using
|
|
the `qemu-riscv32_smode_defconfig` configuration.
|
|
|
|
Build:
|
|
```
|
|
make PLATFORM=generic PLATFORM_RISCV_XLEN=32 FW_PAYLOAD_PATH=<uboot_build_directory>/u-boot.bin
|
|
```
|
|
|
|
Run:
|
|
```
|
|
qemu-system-riscv32 -M virt -m 256M -nographic \
|
|
-kernel build/platform/generic/firmware/fw_payload.elf
|
|
```
|
|
or
|
|
```
|
|
qemu-system-riscv32 -M virt -m 256M -nographic \
|
|
-bios build/platform/generic/firmware/fw_jump.bin \
|
|
-kernel <uboot_build_directory>/u-boot.bin
|
|
```
|
|
|
|
**Linux Kernel Payload**
|
|
|
|
Note: We assume that the Linux kernel is compiled using
|
|
*arch/riscv/configs/rv32_defconfig*.
|
|
|
|
Build:
|
|
```
|
|
make PLATFORM=generic PLATFORM_RISCV_XLEN=32 FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image
|
|
```
|
|
|
|
Run:
|
|
```
|
|
qemu-system-riscv32 -M virt -m 256M -nographic \
|
|
-kernel build/platform/generic/firmware/fw_payload.elf \
|
|
-drive file=<path_to_linux_rootfs>,format=raw,id=hd0 \
|
|
-device virtio-blk-device,drive=hd0 \
|
|
-append "root=/dev/vda rw console=ttyS0"
|
|
```
|
|
or
|
|
```
|
|
qemu-system-riscv32 -M virt -m 256M -nographic \
|
|
-bios build/platform/generic/firmware/fw_jump.bin \
|
|
-kernel <linux_build_directory>/arch/riscv/boot/Image \
|
|
-drive file=<path_to_linux_rootfs>,format=raw,id=hd0 \
|
|
-device virtio-blk-device,drive=hd0 \
|
|
-append "root=/dev/vda rw console=ttyS0"
|
|
```
|