2024-02-06 16:29:31 +03:00
|
|
|
Arm MPS2 and MPS3 boards (``mps2-an385``, ``mps2-an386``, ``mps2-an500``, ``mps2-an505``, ``mps2-an511``, ``mps2-an521``, ``mps3-an524``, ``mps3-an536``, ``mps3-an547``)
|
|
|
|
=========================================================================================================================================================================
|
2020-05-07 18:18:18 +03:00
|
|
|
|
2024-02-06 16:29:31 +03:00
|
|
|
These board models use Arm M-profile or R-profile CPUs.
|
2020-05-07 18:18:18 +03:00
|
|
|
|
2021-02-15 14:51:37 +03:00
|
|
|
The Arm MPS2, MPS2+ and MPS3 dev boards are FPGA based (the 2+ has a
|
|
|
|
bigger FPGA but is otherwise the same as the 2; the 3 has a bigger
|
|
|
|
FPGA again, can handle 4GB of RAM and has a USB controller and QSPI flash).
|
|
|
|
|
|
|
|
Since the CPU itself and most of the devices are in the FPGA, the
|
|
|
|
details of the board as seen by the guest depend significantly on the
|
|
|
|
FPGA image.
|
2020-05-07 18:18:18 +03:00
|
|
|
|
|
|
|
QEMU models the following FPGA images:
|
|
|
|
|
2024-02-06 16:29:31 +03:00
|
|
|
FPGA images using M-profile CPUs:
|
|
|
|
|
2020-05-07 18:18:18 +03:00
|
|
|
``mps2-an385``
|
2020-09-03 23:20:48 +03:00
|
|
|
Cortex-M3 as documented in Arm Application Note AN385
|
2020-09-03 23:20:46 +03:00
|
|
|
``mps2-an386``
|
2020-09-03 23:20:48 +03:00
|
|
|
Cortex-M4 as documented in Arm Application Note AN386
|
2020-09-03 23:20:47 +03:00
|
|
|
``mps2-an500``
|
2020-09-03 23:20:48 +03:00
|
|
|
Cortex-M7 as documented in Arm Application Note AN500
|
2020-05-07 18:18:18 +03:00
|
|
|
``mps2-an505``
|
2020-09-03 23:20:48 +03:00
|
|
|
Cortex-M33 as documented in Arm Application Note AN505
|
|
|
|
``mps2-an511``
|
|
|
|
Cortex-M3 'DesignStart' as documented in Arm Application Note AN511
|
2020-05-07 18:18:18 +03:00
|
|
|
``mps2-an521``
|
2020-09-03 23:20:48 +03:00
|
|
|
Dual Cortex-M33 as documented in Arm Application Note AN521
|
2021-02-15 14:51:37 +03:00
|
|
|
``mps3-an524``
|
|
|
|
Dual Cortex-M33 on an MPS3, as documented in Arm Application Note AN524
|
2021-02-19 17:46:16 +03:00
|
|
|
``mps3-an547``
|
|
|
|
Cortex-M55 on an MPS3, as documented in Arm Application Note AN547
|
2020-05-07 18:18:18 +03:00
|
|
|
|
2024-02-06 16:29:31 +03:00
|
|
|
FPGA images using R-profile CPUs:
|
|
|
|
|
|
|
|
``mps3-an536``
|
|
|
|
Dual Cortex-R52 on an MPS3, as documented in Arm Application Note AN536
|
|
|
|
|
2020-05-07 18:18:18 +03:00
|
|
|
Differences between QEMU and real hardware:
|
|
|
|
|
2020-09-03 23:20:46 +03:00
|
|
|
- AN385/AN386 remapping of low 16K of memory to either ZBT SSRAM1 or to
|
2020-05-07 18:18:18 +03:00
|
|
|
block RAM is unimplemented (QEMU always maps this to ZBT SSRAM1, as
|
|
|
|
if zbt_boot_ctrl is always zero)
|
2021-02-15 14:51:37 +03:00
|
|
|
- AN524 remapping of low memory to either BRAM or to QSPI flash is
|
|
|
|
unimplemented (QEMU always maps this to BRAM, ignoring the
|
|
|
|
SCC CFG_REG0 memory-remap bit)
|
2020-05-07 18:18:18 +03:00
|
|
|
- QEMU provides a LAN9118 ethernet rather than LAN9220; the only guest
|
|
|
|
visible difference is that the LAN9118 doesn't support checksum
|
|
|
|
offloading
|
2021-02-15 14:51:37 +03:00
|
|
|
- QEMU does not model the QSPI flash in MPS3 boards as real QSPI
|
|
|
|
flash, but only as simple ROM, so attempting to rewrite the flash
|
|
|
|
from the guest will fail
|
|
|
|
- QEMU does not model the USB controller in MPS3 boards
|
2024-02-06 16:29:31 +03:00
|
|
|
- AN536 does not support runtime control of CPU reset and halt via
|
|
|
|
the SCC CFG_REG0 register.
|
|
|
|
- AN536 does not support enabling or disabling the flash and ATCM
|
|
|
|
interfaces via the SCC CFG_REG1 register.
|
|
|
|
- AN536 does not support setting of the initial vector table
|
|
|
|
base address via the SCC CFG_REG6 and CFG_REG7 register config,
|
|
|
|
and does not provide a mechanism for specifying these values at
|
|
|
|
startup, so all guest images must be built to start from TCM
|
|
|
|
(i.e. to expect the interrupt vector base at 0 from reset).
|
|
|
|
- AN536 defaults to only creating a single CPU; this is the equivalent
|
|
|
|
of the way the real FPGA image usually runs with the second Cortex-R52
|
|
|
|
held in halt via the initial SCC CFG_REG0 register setting. You can
|
|
|
|
create the second CPU with ``-smp 2``; both CPUs will then start
|
|
|
|
execution immediately on startup.
|
|
|
|
|
|
|
|
Note that for the AN536 the first UART is accessible only by
|
|
|
|
CPU0, and the second UART is accessible only by CPU1. The
|
|
|
|
first UART accessible shared between both CPUs is the third
|
|
|
|
UART. Guest software might therefore be built to use either
|
|
|
|
the first UART or the third UART; if you don't see any output
|
|
|
|
from the UART you are looking at, try one of the others.
|
|
|
|
(Even if the AN536 machine is started with a single CPU and so
|
|
|
|
no "CPU1-only UART", the UART numbering remains the same,
|
|
|
|
with the third UART being the first of the shared ones.)
|
2021-05-04 15:09:12 +03:00
|
|
|
|
|
|
|
Machine-specific options
|
|
|
|
""""""""""""""""""""""""
|
|
|
|
|
|
|
|
The following machine-specific options are supported:
|
|
|
|
|
|
|
|
remap
|
|
|
|
Supported for ``mps3-an524`` only.
|
|
|
|
Set ``BRAM``/``QSPI`` to select the initial memory mapping. The
|
|
|
|
default is ``BRAM``.
|