docs/system: openrisc: Add OpenRISC documentation
Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Stafford Horne <shorne@gmail.com>
This commit is contained in:
parent
c6fe3e6b4c
commit
b14df228d7
15
docs/system/openrisc/cpu-features.rst
Normal file
15
docs/system/openrisc/cpu-features.rst
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
CPU Features
|
||||||
|
============
|
||||||
|
|
||||||
|
The QEMU emulation of the OpenRISC architecture provides following built in
|
||||||
|
features.
|
||||||
|
|
||||||
|
- Shadow GPRs
|
||||||
|
- MMU TLB with 128 entries, 1 way
|
||||||
|
- Power Management (PM)
|
||||||
|
- Programmable Interrupt Controller (PIC)
|
||||||
|
- Tick Timer
|
||||||
|
|
||||||
|
These features are on by default and the presence can be confirmed by checking
|
||||||
|
the contents of the Unit Presence Register (``UPR``) and CPU Configuration
|
||||||
|
Register (``CPUCFGR``).
|
17
docs/system/openrisc/emulation.rst
Normal file
17
docs/system/openrisc/emulation.rst
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
OpenRISC 1000 CPU architecture support
|
||||||
|
======================================
|
||||||
|
|
||||||
|
QEMU's TCG emulation includes support for the OpenRISC or1200 implementation of
|
||||||
|
the OpenRISC 1000 cpu architecture.
|
||||||
|
|
||||||
|
The or1200 cpu also has support for the following instruction subsets:
|
||||||
|
|
||||||
|
- ORBIS32 (OpenRISC Basic Instruction Set)
|
||||||
|
- ORFPX32 (OpenRISC Floating-Point eXtension)
|
||||||
|
|
||||||
|
In addition to the instruction subsets the QEMU TCG emulation also has support
|
||||||
|
for most Class II (optional) instructions.
|
||||||
|
|
||||||
|
For information on all OpenRISC instructions please refer to the latest
|
||||||
|
architecture manual available on the OpenRISC website in the
|
||||||
|
`OpenRISC Architecture <https://openrisc.io/architecture>`_ section.
|
43
docs/system/openrisc/or1k-sim.rst
Normal file
43
docs/system/openrisc/or1k-sim.rst
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
Or1ksim board
|
||||||
|
=============
|
||||||
|
|
||||||
|
The QEMU Or1ksim machine emulates the standard OpenRISC board simulator which is
|
||||||
|
also the standard SoC configuration.
|
||||||
|
|
||||||
|
Supported devices
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
* 16550A UART
|
||||||
|
* ETHOC Ethernet controller
|
||||||
|
* SMP (OpenRISC multicore using ompic)
|
||||||
|
|
||||||
|
Boot options
|
||||||
|
------------
|
||||||
|
|
||||||
|
The Or1ksim machine can be started using the ``-kernel`` and ``-initrd`` options
|
||||||
|
to load a Linux kernel and optional disk image.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ qemu-system-or1k -cpu or1220 -M or1k-sim -nographic \
|
||||||
|
-kernel vmlinux \
|
||||||
|
-initrd initramfs.cpio.gz \
|
||||||
|
-m 128
|
||||||
|
|
||||||
|
Linux guest kernel configuration
|
||||||
|
""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
|
The 'or1ksim_defconfig' for Linux openrisc kernels includes the right
|
||||||
|
drivers for the or1ksim machine. If you would like to run an SMP system
|
||||||
|
choose the 'simple_smp_defconfig' config.
|
||||||
|
|
||||||
|
Hardware configuration information
|
||||||
|
""""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
|
The ``or1k-sim`` board automatically generates a device tree blob ("dtb")
|
||||||
|
which it passes to the guest. This provides information about the
|
||||||
|
addresses, interrupt lines and other configuration of the various devices
|
||||||
|
in the system.
|
||||||
|
|
||||||
|
The location of the DTB will be passed in register ``r3`` to the guest operating
|
||||||
|
system.
|
50
docs/system/openrisc/virt.rst
Normal file
50
docs/system/openrisc/virt.rst
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
'virt' generic virtual platform
|
||||||
|
===============================
|
||||||
|
|
||||||
|
The ``virt`` board is a platform which does not correspond to any
|
||||||
|
real hardware; it is designed for use in virtual machines.
|
||||||
|
It is the recommended board type if you simply want to run
|
||||||
|
a guest such as Linux and do not care about reproducing the
|
||||||
|
idiosyncrasies and limitations of a particular bit of real-world
|
||||||
|
hardware.
|
||||||
|
|
||||||
|
Supported devices
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
* PCI/PCIe devices
|
||||||
|
* 8 virtio-mmio transport devices
|
||||||
|
* 16550A UART
|
||||||
|
* Goldfish RTC
|
||||||
|
* SiFive Test device for poweroff and reboot
|
||||||
|
* SMP (OpenRISC multicore using ompic)
|
||||||
|
|
||||||
|
Boot options
|
||||||
|
------------
|
||||||
|
|
||||||
|
The virt machine can be started using the ``-kernel`` and ``-initrd`` options
|
||||||
|
to load a Linux kernel and optional disk image. For example:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ qemu-system-or1k -cpu or1220 -M or1k-sim -nographic \
|
||||||
|
-device virtio-net-device,netdev=user -netdev user,id=user,net=10.9.0.1/24,host=10.9.0.100 \
|
||||||
|
-device virtio-blk-device,drive=d0 -drive file=virt.qcow2,id=d0,if=none,format=qcow2 \
|
||||||
|
-kernel vmlinux \
|
||||||
|
-initrd initramfs.cpio.gz \
|
||||||
|
-m 128
|
||||||
|
|
||||||
|
Linux guest kernel configuration
|
||||||
|
""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
|
The 'virt_defconfig' for Linux openrisc kernels includes the right drivers for
|
||||||
|
the ``virt`` machine.
|
||||||
|
|
||||||
|
Hardware configuration information
|
||||||
|
""""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
|
The ``virt`` board automatically generates a device tree blob ("dtb") which it
|
||||||
|
passes to the guest. This provides information about the addresses, interrupt
|
||||||
|
lines and other configuration of the various devices in the system.
|
||||||
|
|
||||||
|
The location of the DTB will be passed in register ``r3`` to the guest operating
|
||||||
|
system.
|
71
docs/system/target-openrisc.rst
Normal file
71
docs/system/target-openrisc.rst
Normal file
@ -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
|
@ -21,6 +21,7 @@ Contents:
|
|||||||
target-m68k
|
target-m68k
|
||||||
target-mips
|
target-mips
|
||||||
target-ppc
|
target-ppc
|
||||||
|
target-openrisc
|
||||||
target-riscv
|
target-riscv
|
||||||
target-rx
|
target-rx
|
||||||
target-s390x
|
target-s390x
|
||||||
|
Loading…
Reference in New Issue
Block a user