1.. _mps3_an547_board: 2 3ARM MPS3 AN547 4############### 5 6Overview 7******** 8 9The mps3_an547 board configuration is used by Zephyr applications that run 10on the MPS3 AN547 board. It provides support for the MPS3 AN547 ARM Cortex-M55 11CPU and the following devices: 12 13- Nested Vectored Interrupt Controller (NVIC) 14- System Tick System Clock (SYSTICK) 15- Cortex-M System Design Kit GPIO 16- Cortex-M System Design Kit UART 17- Ethos-U55 NPU 18 19.. image:: img/mps3_an547.jpg 20 :align: center 21 :alt: ARM MPS3 AN547 22 23This board configuration also supports using the `Corstone-300 FVP`_ to emulate 24a MPS3 AN547 hardware platform. 25 26The Corstone-300 FVP (Fixed Virtual Platform) is a complete simulation of the 27Arm system, including processor, memory and peripherals. It is a available free 28of charge for Linux and Windows systems. The FVP has been selected for 29simulation since it provides access to the Ethos-U55 NPU, which is unavailable 30in QEMU or other simulation platforms. 31 32To run the Fixed Virtual Platform simulation tool you must download "FVP model 33for the Corstone-300 MPS3" from Arm and install it on your host PC. This board 34has been tested with version 11.12.57 (Nov 2 2020). 35 36Zephyr board options 37==================== 38 39The MPS3+ AN547 is an SoC with Cortex-M55 architecture. Zephyr provides support 40for building for both Secure and Non-Secure firmware. 41 42The BOARD options are summarized below: 43 44+----------------------+-----------------------------------------------+ 45| BOARD | Description | 46+======================+===============================================+ 47| mps3_an547 | For building Secure (or Secure-only) firmware | 48+----------------------+-----------------------------------------------+ 49| mps3_an547_ns | For building Non-Secure firmware | 50+----------------------+-----------------------------------------------+ 51 52Hardware 53******** 54 55ARM MPS3 AN547 provides the following hardware components: 56 57- ARM Cortex-M55 58- Soft Macro Model (SMM) implementation of SSE-300 subsystem 59- Memory 60 61 - 8MB BRAM 62 - 4GB DDR4 SODIMM (by default, upgradeable to 8GB) 63 - 16GB eMMC 64 - 8MB QSPI Flash 65 66- Debug 67 68 - P‐JTAG, F-JTAG, SWD, 4-bit trace, 16-bit trace 69 - Four serial ports over USB 70 71- Interface 72 73 - AHB GPIO 74 - UART 75 - SPI 76 - I2C 77 - I2S 78 - Color LCD serial interface 79 - Ethernet 80 - VGA 81 82- On-board Peripherals 83 84 - Color LCD 85 - 10 LEDs 86 - 8 Switches 87 - 2 user push buttons 88 89Supported Features 90=================== 91 92The mps3_an547 board configuration supports the following hardware features: 93 94+-----------+------------+-------------------------------------+ 95| Interface | Controller | Driver/Component | 96+===========+============+=====================================+ 97| NVIC | on-chip | nested vector interrupt controller | 98+-----------+------------+-------------------------------------+ 99| SYSTICK | on-chip | systick | 100+-----------+------------+-------------------------------------+ 101| UART | on-chip | serial port-polling; | 102| | | serial port-interrupt | 103+-----------+------------+-------------------------------------+ 104| GPIO | on-chip | gpio | 105+-----------+------------+-------------------------------------+ 106 107Other hardware features are not currently supported by the port. 108See the `MPS3 FPGA Website`_ for a complete list of MPS3 AN547 board hardware 109features. 110 111The default configuration can be found in the defconfig file: 112``boards/arm/mps3_an547/mps3_an547_defconfig``. 113 114For mode details refer to `MPS3 AN547 Technical Reference Manual (TRM)`_. 115 116Serial Port 117=========== 118 119The MPS3 AN547 has six UARTs. The Zephyr console output by default, uses 120UART0, which is exposed over the Debug USB interface (J8). 121 122Serial port 0 on the Debug USB interface is the MCC board control console. 123 124Serial port 1 on the Debug USB interface is connected to UART 0. 125 126Serial port 2 on the Debug USB interface is connected to UART 1. 127 128Serial port 3 on the Debug USB interface is connected to UART 2. 129 130Programming and Debugging 131************************* 132 133Flashing 134======== 135 136MPS3 AN547 provides: 137 138- A USB connection to the host computer, which exposes Mass Storage and 139 CMSIS-DAP, and serial ports. 140 141Building an application 142----------------------- 143 144You can build applications in the usual way. Here is an example for 145the :ref:`hello_world` application. 146 147.. zephyr-app-commands:: 148 :zephyr-app: samples/hello_world 149 :board: mps3_an547 150 :goals: build 151 152Open a serial terminal (minicom, putty, etc.) with the following settings: 153 154- Speed: 115200 155- Data: 8 bits 156- Parity: None 157- Stop bits: 1 158 159Reset the board, and you should see the following message on the corresponding 160serial port: 161 162.. code-block:: console 163 164 Hello World! mps3_an547 165 166Uploading an application to MPS3 AN547 167--------------------------------------- 168 169Applications can be in elf, hex or bin format. The binaries are flashed when 170the board boots up, using files stored on the on-board Micro SD card. The 171Motherboard Configuration Controller (MCC) is responsible for loading the FPGA 172image and binaries. 173 174Connect the MPS3 to your host computer using the USB port. You should see a 175USB connection exposing a Mass Storage (``V2M-MPS3`` by default). 176 177The update requires 3 steps: 178 1791. Copy application files to ``<MPS3 device name>/SOFTWARE/``. 1802. Open ``<MPS3 device name>/MB/HBI0309C/AN547/images.txt``. 1813. Update the ``AN547/images.txt`` file as follows: 182 183.. code-block:: bash 184 185 TITLE: Versatile Express Images Configuration File 186 187 [IMAGES] 188 TOTALIMAGES: 1 ;Number of Images (Max: 32) 189 190 IMAGE0ADDRESS: 0x01000000 ;Please select the required executable program 191 192 IMAGE0FILE: \SOFTWARE\zephyr.elf 193 194 195Reset the board, and you should see the following message on the corresponding 196serial port: 197 198.. code-block:: console 199 200 Hello World! mps3_an547 201 202 203FVP Usage 204========= 205 206To run with the FVP, first set environment variable ``ARMFVP_BIN_PATH`` before 207using it. Then you can run it with ``west build -t run``. 208 209.. code-block:: bash 210 211 export ARMFVP_BIN_PATH=/path/to/fvp/directory 212 west build -t run 213 214 215QEMU Usage 216========== 217 218To run with QEMU instead of the default FVP, override the emulator selection 219at build time via: 220 221.. code-block:: bash 222 223 $ west build -b mps3_an547 samples/hello_world -DEMU_PLATFORM=qemu -t run 224 225 226Note, however, that the Ethos-U55 NPU is not available in QEMU. If you require 227the use of the NPU, please use the default FVP for device emulation. 228 229.. _Corstone-300 FVP: 230 https://developer.arm.com/tools-and-software/open-source-software/arm-platforms-software/arm-ecosystem-fvps 231 232.. _MPS3 FPGA Website: 233 https://developer.arm.com/tools-and-software/development-boards/fpga-prototyping-boards/mps3 234 235.. _MPS3 AN547 Technical Reference Manual (TRM): 236 https://developer.arm.com/-/media/Arm%20Developer%20Community/PDF/DAI0547B_SSE300_PLUS_U55_FPGA_for_mps3.pdf 237 238.. _MPS3 FPGA Prototyping Board Technical Reference Manual (TRM): 239 https://developer.arm.com/documentation/100765/latest 240 241.. _Cortex M55 Generic User Guide: 242 https://developer.arm.com/documentation/101051/latest 243 244.. _Corelink SSE-300 Example Subsystem: 245 https://developer.arm.com/documentation/101772/latest 246