zephyr/boards/arm/mps3/doc/index.rst
Sudan Landge 3092d96e5b boards: mps3: Add support for corstone300/an552
What is changed?
 - Added a new mps3 board an552 for the soc corstone300.
   The qualifier to build/run application with board mps3/an552 is
   `mps3/corstone300/an552` for secure and
   `mps3/corstone300/an552/ns` for non-secure.
 - Added FVP variant to enable FVP testing with corstone300
   and it uses the ARM FVP `FVP_Corstone_SSE-300_Ethos-U55`.
   The qualifier to build/run application with FVP is
   `mps3/corstone300/fvp` for secure and
   `mps3/corstone300/fvp/ns` for non-secure.
 - Note: the qualifier to build/run application with board mps3/an547
   is now changed to
   `mps3/corstone300/an547` for secure and
   `mps3/corstone300/an547/ns` for non-secure.

How is it changed?
 - Moved common code from mps3/an547 to corstone300.
 - Renamed soc for an547 to corstone300 and added
   a new soc corstone300/an552.

Why do we need this change?
 - This enables FVP support and testing for corstone300.
 - SOC/qualifier for mps3/an547 was renamed to reduce code redundancy
 - A separate FVP variant was added for AN552 because, the TFM board
   used for non-secure variant differs for FPGA and FVP.
   TFM board `arm/mps3/corstone300/fvp` should be used when testing
   AN552 with FVP and `arm/mps3/corstone300/an552` should be used when
   testing with AN552 FPGA.

Signed-off-by: Sudan Landge <sudan.landge@arm.com>
2024-10-26 03:58:05 +01:00

304 lines
9.8 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.. _mps3_board:
ARM MPS3
###############
Overview
********
The mps3 board configuration is used by Zephyr applications that run
on the MPS3 board. It provides support for the following devices:
- Nested Vectored Interrupt Controller (NVIC)
- System Tick System Clock (SYSTICK)
- Cortex-M System Design Kit GPIO
- Cortex-M System Design Kit UART
- Ethos-U55 NPU
- AN547 and AN552 support Arm Cortex-M55 CPU
.. image:: img/mps3.jpg
:align: center
:alt: ARM MPS3
`Corstone-300 FVP`_ (Fixed Virtual Platforms) is a complete
simulations of the Arm system, including processor, memory and peripherals.
They are available free of charge for Linux and Windows systems.
The FVPs have been selected for simulation since they provide access to the
Ethos-U55 NPU, which is unavailable in QEMU or other simulation platforms.
Zephyr board options
====================
.. tabs::
.. tab:: MPS3 Corstone-300 (AN547)
The MPS3+ AN547 is an SoC with Cortex-M55 architecture. Zephyr provides support
for building for both Secure and Non-Secure firmware.
The BOARD options are summarized below:
+-------------------------------+-----------------------------------------------+
| BOARD | Description |
+===============================+===============================================+
| ``mps3/corstone300/an547`` | For building Secure (or Secure-only) firmware |
+-------------------------------+-----------------------------------------------+
| ``mps3/corstone300/an547/ns`` | For building Non-Secure firmware |
+-------------------------------+-----------------------------------------------+
FPGA Usage:
- Follow `Programming and Debugging`_ for build and flash instructions.
FVP Usage:
- FVP is not supported for this variant.
QEMU Usage:
- To run with QEMU instead of the default FVP, override the emulator selection at build time via:
.. code-block:: bash
$ west build -b mps3_an547 samples/hello_world -DEMU_PLATFORM=qemu -t run
.. tab:: MPS3 Corstone-300 (AN552)
The MPS3+ AN552 is an SoC with Cortex-M55 architecture. Zephyr provides support
for building for both Secure and Non-Secure firmware.
The BOARD options are summarized below:
+-------------------------------+-----------------------------------------------+
| BOARD | Description |
+===============================+===============================================+
| ``mps3/corstone300/an552`` | For building Secure (or Secure-only) firmware |
+-------------------------------+-----------------------------------------------+
| ``mps3/corstone300/an552/ns`` | For building Non-Secure firmware |
+-------------------------------+-----------------------------------------------+
FPGA Usage:
- Follow `Programming and Debugging`_ for build and flash instructions.
FVP Usage:
- FVP not supported for this variant.
QEMU Usage:
- QEMU not supported for this variant of board.
.. tab:: MPS3 Corstone-300 (FVP)
The MPS3+ FVP is an SoC with Cortex-M55 architecture. Zephyr provides support
for building for both Secure and Non-Secure firmware.
The BOARD options are summarized below:
+-------------------------------+-----------------------------------------------+
| BOARD | Description |
+===============================+===============================================+
| ``mps3/corstone300/fvp`` | For building Secure (or Secure-only) firmware |
+-------------------------------+-----------------------------------------------+
| ``mps3/corstone300/fvp/ns`` | For building Non-Secure firmware |
+-------------------------------+-----------------------------------------------+
FVP Usage:
- To run with the FVP, first set environment variable ``ARMFVP_BIN_PATH`` before using it. Then you can run it with ``west build -t run``.
.. code-block:: bash
export ARMFVP_BIN_PATH=/path/to/fvp/directory
west build -b {BOARD qualifier from table above} samples/hello_world -t run
To run the Fixed Virtual Platform simulation tool you must download "FVP model
for the Corstone-300 MPS3" from Arm and install it on your host PC. This board
has been tested with version 11.24.13 (Jan 4 2024).
QEMU Usage:
- QEMU not supported for this variant of board.
.. note::
Board qualifier must include the board name as mentioned above.
``mps3/corstone300`` without the board name is not a valid qualifier.
Hardware
********
ARM MPS3 provides the following hardware components:
- CPU
- AN547 and AN552 support Arm Cortex-M55 CPU and
Soft Macro Model (SMM) implementation of SSE-300 subsystem
- Memory
- 8MB BRAM
- 4GB DDR4 SODIMM (by default, upgradeable to 8GB)
- 16GB eMMC
- 8MB QSPI Flash
- Debug
- PJTAG, F-JTAG, SWD, 4-bit trace, 16-bit trace
- Four serial ports over USB
- Interface
- AHB GPIO
- UART
- SPI
- I2C
- I2S
- Color LCD serial interface
- Ethernet
- VGA
- On-board Peripherals
- Color LCD
- 10 LEDs
- 8 Switches
- 2 user push buttons
Supported Features
===================
The ``MPS3`` board configuration supports the following hardware features:
+-----------+------------+-------------------------------------+
| Interface | Controller | Driver/Component |
+===========+============+=====================================+
| NVIC | on-chip | nested vector interrupt controller |
+-----------+------------+-------------------------------------+
| SYSTICK | on-chip | systick |
+-----------+------------+-------------------------------------+
| UART | on-chip | serial port-polling; |
| | | serial port-interrupt |
+-----------+------------+-------------------------------------+
| GPIO | on-chip | gpio |
+-----------+------------+-------------------------------------+
Other hardware features are not currently supported by the port.
See the `MPS3 FPGA Website`_ for a complete list of MPS3 AN547 board hardware
features.
The default configuration can be found in
- For AN547: :zephyr_file:`boards/arm/mps3/mps3_corstone300_an547_defconfig`.
- For AN552: :zephyr_file:`boards/arm/mps3/mps3_corstone300_an552_defconfig`.
- For FVP : :zephyr_file:`boards/arm/mps3/mps3_corstone300_fvp_defconfig`.
Serial Port
===========
The MPS3 has six UARTs. The Zephyr console output by default, uses
UART0, which is exposed over the Debug USB interface (J8).
Serial port 0 on the Debug USB interface is the MCC board control console.
Serial port 1 on the Debug USB interface is connected to UART 0.
Serial port 2 on the Debug USB interface is connected to UART 1.
Serial port 3 on the Debug USB interface is connected to UART 2.
.. Programming and Debugging:
Programming and Debugging
*************************
Flashing
========
MPS3 provides:
- A USB connection to the host computer, which exposes Mass Storage and
CMSIS-DAP, and serial ports.
Building an application with AN547
----------------------------------
You can build applications in the usual way. Here is an example for
the :zephyr:code-sample:`hello_world` application with AN547.
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: mps3/corstone300/an547
:goals: build
Open a serial terminal (minicom, putty, etc.) with the following settings:
- Speed: 115200
- Data: 8 bits
- Parity: None
- Stop bits: 1
Reset the board, and you should see the following message on the corresponding
serial port:
.. code-block:: console
Hello World! mps3
Uploading an application to MPS3 AN547
---------------------------------------
Applications can be in elf, hex or bin format. The binaries are flashed when
the board boots up, using files stored on the on-board Micro SD card. The
Motherboard Configuration Controller (MCC) is responsible for loading the FPGA
image and binaries.
Connect the MPS3 to your host computer using the USB port. You should see a
USB connection exposing a Mass Storage (``V2M-MPS3`` by default).
The update requires 3 steps:
1. Copy application files to ``<MPS3 device name>/SOFTWARE/``.
2. Open ``<MPS3 device name>/MB/HBI0309C/AN547/images.txt``.
3. Update the ``images.txt`` file as follows:
.. code-block:: bash
TITLE: Versatile Express Images Configuration File
[IMAGES]
TOTALIMAGES: 1 ;Number of Images (Max: 32)
IMAGE0ADDRESS: 0x01000000 ;Please select the required executable program
IMAGE0FILE: \SOFTWARE\zephyr.elf
Reset the board, and you should see the following message on the corresponding
serial port:
.. code-block:: console
Hello World! mps3
For more details refer to:
- `MPS3 AN547 Technical Reference Manual (TRM)`_
- `MPS3 AN552 Technical Reference Manual (TRM)`_
- `MPS3 FPGA Prototyping Board Technical Reference Manual (TRM)`_
- `Cortex M55 Generic User Guide`_
- `Corelink SSE-300 Example Subsystem`_
.. _Corstone-300 FVP:
https://developer.arm.com/tools-and-software/open-source-software/arm-platforms-software/arm-ecosystem-fvps
.. _MPS3 FPGA Website:
https://developer.arm.com/tools-and-software/development-boards/fpga-prototyping-boards/mps3
.. _MPS3 AN547 Technical Reference Manual (TRM):
https://developer.arm.com/-/media/Arm%20Developer%20Community/PDF/DAI0547B_SSE300_PLUS_U55_FPGA_for_mps3.pdf
.. _MPS3 AN552 Technical Reference Manual (TRM):
https://developer.arm.com/documentation/dai0552/latest
.. _MPS3 FPGA Prototyping Board Technical Reference Manual (TRM):
https://developer.arm.com/documentation/100765/latest
.. _Cortex M55 Generic User Guide:
https://developer.arm.com/documentation/101051/latest
.. _Corelink SSE-300 Example Subsystem:
https://developer.arm.com/documentation/101772/latest