| .. _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 |
| - AN555 support Arm Cortex-M85 CPU |
| |
| .. image:: img/mps3.jpg |
| :align: center |
| :alt: ARM MPS3 |
| |
| `Corstone-300 FVP`_/`Corstone-310 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 | |
| +-------------------------------+-----------------------------------------------+ |
| |
| FPGA Usage: |
| - N/A. |
| |
| 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: |
| - N/A. |
| |
| .. tab:: MPS3 Corstone-310 (AN555) |
| |
| The MPS3+ AN555 is an SoC with Cortex-M85 architecture. Zephyr provides support |
| for building for both Secure and Non-Secure firmware. |
| |
| The BOARD options are summarized below: |
| |
| +-------------------------------+-----------------------------------------------+ |
| | BOARD | Description | |
| +===============================+===============================================+ |
| | ``mps3/corstone310/an555`` | For building Secure (or Secure-only) firmware | |
| +-------------------------------+-----------------------------------------------+ |
| | ``mps3/corstone310/an555/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-310 (FVP) |
| |
| The MPS3+ FVP is an SoC with Cortex-M85 architecture. Zephyr provides support |
| for building for both Secure and Non-Secure firmware. |
| |
| The BOARD options are summarized below: |
| |
| +-------------------------------+-----------------------------------------------+ |
| | BOARD | Description | |
| +===============================+===============================================+ |
| | ``mps3/corstone310/fvp`` | For building Secure (or Secure-only) firmware | |
| +-------------------------------+-----------------------------------------------+ |
| | ``mps3/corstone310/fvp/ns`` | For building Non-Secure firmware | |
| +-------------------------------+-----------------------------------------------+ |
| |
| FPGA Usage: |
| - N/A. |
| |
| 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-310 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: |
| - N/A. |
| |
| .. note:: |
| Board qualifier must include the board name as mentioned above. |
| ``mps3/corstone300`` or ``mps3/corstone310`` 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 |
| - AN555 support Arm Cortex-M85 CPU and |
| Soft Macro Model (SMM) implementation of SSE-310 subsystem |
| |
| - Memory |
| |
| - 8MB BRAM |
| - 4GB DDR4 SODIMM (by default, upgradeable to 8GB) |
| - 16GB eMMC |
| - 8MB QSPI Flash |
| |
| - Debug |
| |
| - P‐JTAG, 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`. |
| - For AN555: :zephyr_file:`boards/arm/mps3/mps3_corstone310_an555_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 AN555 Technical Reference Manual (TRM)`_ |
| - `MPS3 FPGA Prototyping Board Technical Reference Manual (TRM)`_ |
| - `Cortex M55 Generic User Guide`_ |
| - `Cortex M85 Generic User Guide`_ |
| - `Corelink SSE-300 Example Subsystem`_ |
| - `Corelink SSE-310 Example Subsystem`_ |
| |
| .. _Corstone-300 FVP: |
| https://developer.arm.com/tools-and-software/open-source-software/arm-platforms-software/arm-ecosystem-fvps |
| |
| .. _Corstone-310 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 AN555 Technical Reference Manual (TRM): |
| https://developer.arm.com/documentation/107642/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 |
| |
| .. _Cortex M85 Generic User Guide: |
| https://developer.arm.com/documentation/101924/latest |
| |
| .. _Corelink SSE-300 Example Subsystem: |
| https://developer.arm.com/documentation/101772/latest |
| |
| .. _Corelink SSE-310 Example Subsystem: |
| https://developer.arm.com/documentation/102778/latest |