|
@@ -0,0 +1,71 @@
|
|
|
+.. _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
|