blob: 9ce6f383fd27b9ac79fc078fdd0c52fe9e64494a [file] [log] [blame]
.. _qemu_malta:
MIPS Malta Emulation (QEMU)
###########################
Overview
********
This board configuration will use QEMU to emulate the MIPS Malta platform.
This configuration provides support for an MIPS 4Kc/24Kc CPU cores and these devices:
* CP0 Interrupt Controller
* CP0 Core Timer
* NS16550 UART
.. note::
This board configuration makes no claims about its suitability for use
with an actual MIPS Malta hardware system, or any other hardware system.
Hardware
********
Supported Features
==================
The following hardware features are supported:
+----------------+------------+----------------------+
| Interface | Controller | Driver/Component |
+================+============+======================+
| CP0 IntC | on-chip | interrupt controller |
+----------------+------------+----------------------+
| CP0 Core Timer | on-chip | system clock |
+----------------+------------+----------------------+
| NS16550 | FPGA | serial port |
| UART | | |
+----------------+------------+----------------------+
The kernel currently does not support other hardware features on this platform.
Devices
========
System Clock
------------
Qemu CP0 timer uses a clock frequency of 200 MHz,
see target/mips/cp0_timer.c in Qemu source tree for details.
Serial Port
-----------
This board configuration uses a single serial communication channel
with the FPGA UART2.
Programming and Debugging
*************************
Use this configuration to run basic Zephyr applications and kernel tests in the QEMU
emulated environment, for example, with the :ref:`synchronization_sample`:
.. zephyr-app-commands::
:zephyr-app: samples/synchronization
:host-os: unix
:board: qemu_malta
:goals: run
This will build an image with the synchronization sample app, boot it using
QEMU, and display the following console output:
.. code-block:: console
*** Booting Zephyr OS build v2.7.99-1627-g9bea7790d620 ***
thread_a: Hello World from cpu 0 on qemu_malta!
thread_b: Hello World from cpu 0 on qemu_malta!
thread_a: Hello World from cpu 0 on qemu_malta!
thread_b: Hello World from cpu 0 on qemu_malta!
thread_a: Hello World from cpu 0 on qemu_malta!
thread_b: Hello World from cpu 0 on qemu_malta!
thread_a: Hello World from cpu 0 on qemu_malta!
thread_b: Hello World from cpu 0 on qemu_malta!
thread_a: Hello World from cpu 0 on qemu_malta!
thread_b: Hello World from cpu 0 on qemu_malta!
Exit QEMU by pressing :kbd:`CTRL+A` :kbd:`x`.
Big-Endian
==========
Use this configuration to run :ref:`synchronization_sample` in big-endian mode:
.. zephyr-app-commands::
:zephyr-app: samples/synchronization
:host-os: unix
:board: qemu_malta_be
:goals: run
References
**********
https://www.qemu.org/
https://www.linux-mips.org/wiki/MIPS_Malta