mirror of
				https://github.com/qemu/qemu.git
				synced 2025-10-31 04:06:46 +00:00 
			
		
		
		
	 85198f189e
			
		
	
	
		85198f189e
		
	
	
	
	
		
			
			This adds detailed documentation for RISC-V `virt` machine, including the following information: - Supported devices - Hardware configuration information - Boot options - Running Linux kernel - Running U-Boot Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-id: 20210627142816.19789-2-bmeng.cn@gmail.com Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
		
			
				
	
	
		
			87 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| .. _RISC-V-System-emulator:
 | |
| 
 | |
| RISC-V System emulator
 | |
| ======================
 | |
| 
 | |
| QEMU can emulate both 32-bit and 64-bit RISC-V CPUs. Use the
 | |
| ``qemu-system-riscv64`` executable to simulate a 64-bit RISC-V machine,
 | |
| ``qemu-system-riscv32`` executable to simulate a 32-bit RISC-V machine.
 | |
| 
 | |
| QEMU has generally good support for RISC-V guests. It has support for
 | |
| several different machines. The reason we support so many is that
 | |
| RISC-V hardware is much more widely varying than x86 hardware. RISC-V
 | |
| CPUs are generally built into "system-on-chip" (SoC) designs created by
 | |
| many different companies with different devices, and these SoCs are
 | |
| then built into machines which can vary still further even if they use
 | |
| the same SoC.
 | |
| 
 | |
| For most boards the CPU type is fixed (matching what the hardware has),
 | |
| so typically you don't need to specify the CPU type by hand, except for
 | |
| special cases like the ``virt`` board.
 | |
| 
 | |
| Choosing a board model
 | |
| ----------------------
 | |
| 
 | |
| For QEMU's RISC-V system emulation, you must specify which board
 | |
| model you want to use with the ``-M`` or ``--machine`` option;
 | |
| there is no default.
 | |
| 
 | |
| Because RISC-V systems differ so much and in fundamental ways, typically
 | |
| operating system or firmware images intended to run on one machine
 | |
| will not run at all on any other. This is often surprising for new
 | |
| users who are used to the x86 world where every system looks like a
 | |
| standard PC. (Once the kernel has booted, most user space software
 | |
| cares much less about the detail of the hardware.)
 | |
| 
 | |
| If you already have a system image or a kernel that works on hardware
 | |
| and you want to boot with QEMU, check whether QEMU lists that machine
 | |
| in its ``-machine help`` output. If it is listed, then you can probably
 | |
| use that board model. If it is not listed, then unfortunately your image
 | |
| will almost certainly not boot on QEMU. (You might be able to
 | |
| extract the file system and use that with a different kernel which
 | |
| boots on a system that QEMU does emulate.)
 | |
| 
 | |
| If you don't care about reproducing the idiosyncrasies of a particular
 | |
| bit of hardware, such as small amount of RAM, no PCI or other hard
 | |
| disk, etc., and just want to run Linux, the best option is to use the
 | |
| ``virt`` board. This is a platform which doesn't correspond to any
 | |
| real hardware and is designed for use in virtual machines. You'll
 | |
| need to compile Linux with a suitable configuration for running on
 | |
| the ``virt`` board. ``virt`` supports PCI, virtio, recent CPUs and
 | |
| large amounts of RAM. It also supports 64-bit CPUs.
 | |
| 
 | |
| Board-specific documentation
 | |
| ----------------------------
 | |
| 
 | |
| Unfortunately many of the RISC-V boards QEMU supports are currently
 | |
| undocumented; you can get a complete list by running
 | |
| ``qemu-system-riscv64 --machine help``, or
 | |
| ``qemu-system-riscv32 --machine help``.
 | |
| 
 | |
| ..
 | |
|    This table of contents should be kept sorted alphabetically
 | |
|    by the title text of each file, which isn't the same ordering
 | |
|    as an alphabetical sort by filename.
 | |
| 
 | |
| .. toctree::
 | |
|    :maxdepth: 1
 | |
| 
 | |
|    riscv/microchip-icicle-kit
 | |
|    riscv/shakti-c
 | |
|    riscv/sifive_u
 | |
|    riscv/virt
 | |
| 
 | |
| RISC-V CPU firmware
 | |
| -------------------
 | |
| 
 | |
| When using the ``sifive_u`` or ``virt`` machine there are three different
 | |
| firmware boot options:
 | |
| 1. ``-bios default`` - This is the default behaviour if no -bios option
 | |
| is included. This option will load the default OpenSBI firmware automatically.
 | |
| The firmware is included with the QEMU release and no user interaction is
 | |
| required. All a user needs to do is specify the kernel they want to boot
 | |
| with the -kernel option
 | |
| 2. ``-bios none`` - QEMU will not automatically load any firmware. It is up
 | |
| to the user to load all the images they need.
 | |
| 3. ``-bios <file>`` - Tells QEMU to load the specified file as the firmware.
 |