mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-28 12:53:53 -06:00

Add a basic board with interrupt controller (intc), timer, serial (uartlite), small memory called LMB@0 (128kB) and DDR@0x80000000 (configured via command line eg. -m 2g). This is basic configuration which matches HW generated out of AMD Vivado (design tools). But initial configuration is going beyond what it is configured by default because validation should be done on other configurations too. That's why wire also additional uart16500, axi ethernet(with axi dma). GPIOs, i2c and qspi is also listed for completeness. IRQ map is: (addr) 0 - timer (0x41c00000) 1 - uartlite (0x40600000) 2 - i2c (0x40800000) 3 - qspi (0x44a00000) 4 - uart16550 (0x44a10000) 5 - emaclite (0x40e00000) 6 - timer2 (0x41c10000) 7 - axi emac (0x40c00000) 8 - axi dma (0x41e00000) 9 - axi dma 10 - gpio (0x40000000) 11 - gpio2 (0x40010000) 12 - gpio3 (0x40020000) Signed-off-by: Sai Pavan Boddu <sai.pavan.boddu@amd.com> Signed-off-by: Michal Simek <michal.simek@amd.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-ID: <20241125134739.18189-1-sai.pavan.boddu@amd.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
95 lines
3.6 KiB
ReStructuredText
95 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/microblaze-v-generic
|
|
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:
|
|
|
|
* ``-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
|
|
|
|
* ``-bios none``
|
|
|
|
QEMU will not automatically load any firmware. It is up to the user to load all
|
|
the images they need.
|
|
|
|
* ``-bios <file>``
|
|
|
|
Tells QEMU to load the specified file as the firmware.
|