QEMU Emulation for MIPS Malta
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 UART |
FPGA |
serial port |
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 Basic Synchronization sample:
# From the root of the zephyr repository
west build -b qemu_malta samples/synchronization
west build -t run
This will build an image with the synchronization sample app, boot it using QEMU, and display the following console output:
*** 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 CTRL+A x.
Big-Endian
Use this configuration to run Basic Synchronization sample in big-endian mode:
# From the root of the zephyr repository
west build -b qemu_malta/qemu_malta/be samples/synchronization
west build -t run
References
https://www.qemu.org/ https://www.linux-mips.org/wiki/MIPS_Malta