| .. _OpenRISC-System-emulator: |
| |
| OpenRISC System emulator |
| ~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| QEMU can emulate 32-bit OpenRISC CPUs using the ``qemu-system-or1k`` executable. |
| |
| OpenRISC CPUs are generally built into "system-on-chip" (SoC) designs that run |
| on FPGAs. These SoCs are based on the same core architecture as the or1ksim |
| (the original OpenRISC instruction level simulator) which QEMU supports. For |
| this reason QEMU does not need to support many different boards to support the |
| OpenRISC hardware ecosystem. |
| |
| The OpenRISC CPU supported by QEMU is the ``or1200``, it supports an MMU and can |
| run linux. |
| |
| Choosing a board model |
| ====================== |
| |
| For QEMU's OpenRISC system emulation, you must specify which board model you |
| want to use with the ``-M`` or ``--machine`` option; the default machine is |
| ``or1k-sim``. |
| |
| If you intend to boot Linux, it is possible to have a single kernel image that |
| will boot on any of the QEMU machines. To do this one would compile all required |
| drivers into the kernel. This is possible because QEMU will create a device tree |
| structure that describes the QEMU machine and pass a pointer to the structure to |
| the kernel. The kernel can then use this to configure itself for the machine. |
| |
| However, typically users will have specific firmware images for a specific machine. |
| |
| 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 filesystem 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 |
| and large amounts of RAM. |
| |
| Board-specific documentation |
| ============================ |
| |
| .. |
| 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 |
| |
| openrisc/or1k-sim |
| openrisc/virt |
| |
| Emulated CPU architecture support |
| ================================= |
| |
| .. toctree:: |
| openrisc/emulation |
| |
| OpenRISC CPU features |
| ===================== |
| |
| .. toctree:: |
| openrisc/cpu-features |