boards: arm: mps2: Add support for mps2/an500 in FVP

Added support for an500 in fvp.
Qualifier to build and run is mps2/an500.

Signed-off-by: Samuel Chee <samche01@arm.com>
This commit is contained in:
Samuel Chee 2025-01-09 13:58:43 +00:00 committed by Benjamin Cabé
commit d8a1fd93e0
13 changed files with 139 additions and 311 deletions

View file

@ -2,7 +2,7 @@
# Copyright 2024 Arm Limited and/or its affiliates <open-source-office@arm.com>
# SPDX-License-Identifier: Apache-2.0
if BOARD_MPS2_AN383 || BOARD_MPS2_AN385 || BOARD_MPS2_AN386
if BOARD_MPS2_AN383 || BOARD_MPS2_AN385 || BOARD_MPS2_AN386 || BOARD_MPS2_AN500
if SERIAL

View file

@ -6,6 +6,7 @@ config BOARD_MPS2
select SOC_MPS2_AN383 if BOARD_MPS2_AN383
select SOC_MPS2_AN385 if BOARD_MPS2_AN385
select SOC_MPS2_AN386 if BOARD_MPS2_AN386
select SOC_MPS2_AN500 if BOARD_MPS2_AN500
select SOC_MPS2_AN521_CPU0 if BOARD_MPS2_AN521_CPU0
select SOC_MPS2_AN521_CPU0 if BOARD_MPS2_AN521_CPU0_NS
select SOC_MPS2_AN521_CPU1 if BOARD_MPS2_AN521_CPU1

View file

@ -22,6 +22,9 @@ elseif(CONFIG_BOARD_MPS2_AN383)
elseif(CONFIG_BOARD_MPS2_AN386)
set(SUPPORTED_EMU_PLATFORMS armfvp)
set(ARMFVP_BIN_NAME FVP_MPS2_Cortex-M4)
elseif(CONFIG_BOARD_MPS2_AN500)
set(SUPPORTED_EMU_PLATFORMS armfvp)
set(ARMFVP_BIN_NAME FVP_MPS2_Cortex-M7)
elseif(CONFIG_BOARD_MPS2_AN521_CPU0 OR CONFIG_BOARD_MPS2_AN521_CPU0_NS OR CONFIG_BOARD_MPS2_AN521_CPU1)
set(SUPPORTED_EMU_PLATFORMS qemu)
set(QEMU_CPU_TYPE_${ARCH} cortex-m33)

View file

@ -6,6 +6,7 @@ board:
- name: an383
- name: an385
- name: an386
- name: an500
- name: an521
variants:
- name: ns

View file

@ -0,0 +1,10 @@
.. zephyr:board:: mps2
ARM Ltd.
########
.. toctree::
:maxdepth: 1
:glob:
*

View file

@ -1,282 +0,0 @@
.. _mps2_an386_board:
ARM V2M MPS2 AN386
##################
Overview
********
The ``mps2/an386`` board target is used by Zephyr applications that run on
the V2M MPS2 board. It provides support for the ARM Cortex-M4 (an386) CPU and
the following devices:
- Nested Vectored Interrupt Controller (NVIC)
- System Tick System Clock (SYSTICK)
- Cortex-M System Design Kit UART
.. image:: img/mps2.jpg
:align: center
:alt: ARM V2M MPS2
In addition to enabling actual hardware usage, this board target can
also use `FVP`_ to emulate the AN386 platform running on the MPS2+.
More information about the board can be found at the `V2M MPS2 Website`_.
The Application Note an386 can be found at `Application Note an386`_.
.. note::
This board target makes no claims about its suitability for use
with actual MPS2 hardware systems using AN386, or any other hardware
system. It has been tested on FVP.
Hardware
********
ARM V2M MPS2 provides the following hardware components:
- ARM Cortex-M4 (an386)
- ARM IoT Subsystem for Cortex-M
- Form factor: 140x120cm
- ZBTSRAM: 8MB single cycle SRAM, 16MB PSRAM
- Audio: Audio Codec
- Debug:
- ARM JTAG20 connector
- ARM parallel trace connector (MICTOR38)
- 20 pin Cortex debug connector
- 10 pin Cortex debug connector
- ILA connector for FPGA debug
- Expansion
- GPIO
- SPI
.. note::
4 MB of flash memory (in ZBTSRAM 1, starting at address 0x00400000) and 4 MB of RAM
(in ZBTSRAM 2 & 3, starting at address 0x20000000) are available.
Supported Features
==================
The ``mps2/an386`` board target 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 |
+-----------+------------+-------------------------------------+
| WATCHDOG | on-chip | watchdog |
+-----------+------------+-------------------------------------+
| TIMER | on-chip | counter |
+-----------+------------+-------------------------------------+
| DUALTIMER | on-chip | counter |
+-----------+------------+-------------------------------------+
Other hardware features are not currently supported by the port.
See the `V2M MPS2 Website`_ for a complete list of V2M MPS2 board hardware
features.
The default configuration can be found in
:zephyr_file:`boards/arm/mps2/mps2_an386_defconfig`
Interrupt Controller
====================
MPS2 is a Cortex-M4 based SoC and has 15 fixed exceptions and 45 IRQs.
A Cortex-M3/4-based board uses vectored exceptions. This means each exception
calls a handler directly from the vector table.
Handlers are provided for exceptions 1-6, 11-12, and 14-15. The table here
identifies the handlers used for each exception.
+------+------------+----------------+--------------------------+
| Exc# | Name | Remarks | Used by Zephyr Kernel |
+======+============+================+==========================+
| 1 | Reset | | system initialization |
+------+------------+----------------+--------------------------+
| 2 | NMI | | system fatal error |
+------+------------+----------------+--------------------------+
| 3 | Hard fault | | system fatal error |
+------+------------+----------------+--------------------------+
| 4 | MemManage | MPU fault | system fatal error |
+------+------------+----------------+--------------------------+
| 5 | Bus | | system fatal error |
+------+------------+----------------+--------------------------+
| 6 | Usage | undefined | system fatal error |
| | fault | instruction, | |
| | | or switch | |
| | | attempt to ARM | |
| | | mode | |
+------+------------+----------------+--------------------------+
| 11 | SVC | | system calls, kernel |
| | | | run-time exceptions, |
| | | | and IRQ offloading |
+------+------------+----------------+--------------------------+
| 12 | Debug | | system fatal error |
| | monitor | | |
+------+------------+----------------+--------------------------+
| 14 | PendSV | | context switch |
+------+------------+----------------+--------------------------+
| 15 | SYSTICK | | system clock |
+------+------------+----------------+--------------------------+
Pin Mapping
===========
The ARM V2M MPS2 Board has 4 GPIO controllers. These controllers are responsible
for pin muxing, input/output, pull-up, etc.
All GPIO controller pins are exposed via the following sequence of pin numbers:
- Pins 0 - 15 are for GPIO 0
- Pins 16 - 31 are for GPIO 1
- Pins 32 - 47 are for GPIO 2
- Pins 48 - 51 are for GPIO 3
Mapping from the ARM MPS2 Board pins to GPIO controllers:
.. rst-class:: rst-columns
- D0 : EXT_0
- D1 : EXT_4
- D2 : EXT_2
- D3 : EXT_3
- D4 : EXT_1
- D5 : EXT_6
- D6 : EXT_7
- D7 : EXT_8
- D8 : EXT_9
- D9 : EXT_10
- D10 : EXT_12
- D11 : EXT_13
- D12 : EXT_14
- D13 : EXT_11
- D14 : EXT_15
- D15 : EXT_5
- D16 : EXT_16
- D17 : EXT_17
- D18 : EXT_18
- D19 : EXT_19
- D20 : EXT_20
- D21 : EXT_21
- D22 : EXT_22
- D23 : EXT_23
- D24 : EXT_24
- D25 : EXT_25
- D26 : EXT_26
- D27 : EXT_30
- D28 : EXT_28
- D29 : EXT_29
- D30 : EXT_27
- D31 : EXT_32
- D32 : EXT_33
- D33 : EXT_34
- D34 : EXT_35
- D35 : EXT_36
- D36 : EXT_38
- D37 : EXT_39
- D38 : EXT_40
- D39 : EXT_44
- D40 : EXT_41
- D41 : EXT_31
- D42 : EXT_37
- D43 : EXT_42
- D44 : EXT_43
- D45 : EXT_45
- D46 : EXT_46
- D47 : EXT_47
- D48 : EXT_48
- D49 : EXT_49
- D50 : EXT_50
- D51 : EXT_51
Peripheral Mapping:
.. rst-class:: rst-columns
- UART_3_RX : D0
- UART_3_TX : D1
- SPI_3_CS : D10
- SPI_3_MOSI : D11
- SPI_3_MISO : D12
- SPI_3_SCLK : D13
- I2C_3_SDA : D14
- I2C_3_SCL : D15
- UART_4_RX : D26
- UART_4_TX : D30
- SPI_4_CS : D36
- SPI_4_MOSI : D37
- SPI_4_MISO : D38
- SPI_4_SCK : D39
- I2C_4_SDA : D40
- I2C_4_SCL : D41
For more details please refer to `MPS2 Technical Reference Manual (TRM)`_.
System Clock
============
The V2M MPS2 main clock is 24 MHz.
Serial Port
===========
The V2M MPS2 processor has five UARTs. Both the UARTs have only two wires for
RX/TX and no flow control (CTS/RTS) or FIFO. The Zephyr console output, by
default, is utilizing UART0.
Programming and Debugging
*************************
Flashing
========
V2M MPS2 provides:
- A USB connection to the host computer, which exposes a Mass Storage and an
USB Serial Port.
- A Serial Flash device, which implements the USB flash disk file storage.
- A physical UART connection which is relayed over interface USB Serial port.
Flashing an application to V2M MPS2
-----------------------------------
Here is an example for the :zephyr:code-sample:`hello_world` application.
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: mps2/an386
:goals: build
Connect the V2M MPS2 to your host computer using the USB port and you should
see a USB connection which exposes a Mass Storage and a USB Serial Port.
Copy the generated zephyr.bin in the exposed drive.
Reset the board and you should be able to see on the corresponding Serial Port
the following message:
.. code-block:: console
Hello World! arm
.. _V2M MPS2 Website:
https://developer.mbed.org/platforms/ARM-MPS2/
.. _MPS2 Technical Reference Manual (TRM):
http://infocenter.arm.com/help/topic/com.arm.doc.100112_0200_05_en/versatile_express_cortex_m_prototyping_systems_v2m_mps2_and_v2m_mps2plus_technical_reference_100112_0200_05_en.pdf
.. _Application Note an386:
https://documentation-service.arm.com/static/5ed1094dca06a95ce53f8a9f
.. _FVP:
https://developer.arm.com/downloads/view/FMFVP

View file

@ -1,14 +1,13 @@
.. _mps2_an383_board:
.. _mps2_armv6m_board:
ARM V2M MPS2 AN383
##################
ARM V2M MPS2 Armv6-m (AN383)
############################
Overview
********
The ``mps2/an383`` board target is used by Zephyr applications that run on
the V2M MPS2 board. It provides support for the ARM Cortex-M0+ (AN383) CPU and
the following devices:
Currently ``mps2/an383`` is the only mps2 Armv6-m based board target supported in Zephyr.
It provides support for the ARM Cortex-M0+ (AN383) CPU and the following devices:
- Nested Vectored Interrupt Controller (NVIC)
- System Tick System Clock (SYSTICK)
@ -240,7 +239,7 @@ V2M MPS2 provides:
Flashing an application to V2M MPS2
-----------------------------------
Here is an example for the :ref:`hello_world` application.
Here is an example for the :zephyr:code-sample:`hello_world` application.
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
@ -257,12 +256,23 @@ the following message:
Hello World! arm
Running an applicatoin with FVP
-------------------------------
Here is the same example for running with FVP.
Set the ``ARMFVP_BIN_PATH`` environemnt variable to the location of your FVP you have downloaded from `here <FVP_>`_
.. code-block:: console
export ARMFVP_BIN_PATH=/home/../FVP_MPS2/
Then build with the same command you would use normally, and run with ``west build -t run_armfvp``.
.. _V2M MPS2 Website:
https://developer.mbed.org/platforms/ARM-MPS2/
.. _MPS2 Technical Reference Manual (TRM):
http://infocenter.arm.com/help/topic/com.arm.doc.100112_0200_05_en/versatile_express_cortex_m_prototyping_systems_v2m_mps2_and_v2m_mps2plus_technical_reference_100112_0200_05_en.pdf
https://developer.arm.com/documentation/100112/0200/
.. _Application Note AN383:
https://documentation-service.arm.com/static/5ed1051dca06a95ce53f88a1

View file

@ -1,14 +1,15 @@
.. _mps2_an385_board:
.. _mps2_armv7m_board:
ARM V2M MPS2 AN385
##################
ARM V2M MPS2 Armv7-m (AN385/AN386/AN500)
########################################
Overview
********
The ``mps2/an385`` board target is used by Zephyr applications that run on
the V2M MPS2 board. It provides support for the ARM Cortex-M3 (AN385) CPU and
the following devices:
The ``mps2/an385``, ``mps2/an386``, and ``mps2/an500`` board targets are three of
the mps2 Armv7-m based board targets supported in Zephyr. This document
provides details about the support provided for these three Armv7-m mps2 board targets
(**AN385**, **AN386**, **AN500**) and the following devices:
- Nested Vectored Interrupt Controller (NVIC)
- System Tick System Clock (SYSTICK)
@ -18,25 +19,30 @@ the following devices:
:align: center
:alt: ARM V2M MPS2
In addition to enabling actual hardware usage, this board target can
also use QEMU and FVP to emulate the AN385 platform running on the MPS2+.
In addition to enabling actual hardware usage, these board targets can
also use `FVP`_ to emulate the platforms running on the MPS2+.
More information about the board can be found at the `V2M MPS2 Website`_.
The Application Note AN385 can be found at `Application Note AN385`_.
The application note for each of the board can be found as follows:
- AN385 can be found at `Application Note AN385`_
- AN386 can be found at `Application Note AN386`_
- AN500 can be found at `Application Note AN500`_
AN385 is also supported to run with QEMU, and is set to run with QEMU by default.
.. note::
This board target makes no claims about its suitability for use
with actual MPS2 hardware systems using AN385, or any other hardware
system. It has been tested on actual hardware, but its primary purpose is
for use with QEMU and unit tests.
These board targets makes no claims about its suitability for use
with actual MPS2 hardware systems, or any other hardware
system.
Hardware
********
ARM V2M MPS2 provides the following hardware components:
- ARM Cortex-M3 (AN385)
- ARM Cortex-M Chip
- ARM IoT Subsystem for Cortex-M
- Form factor: 140x120cm
- ZBTSRAM: 8MB single cycle SRAM, 16MB PSRAM
@ -62,7 +68,7 @@ ARM V2M MPS2 provides the following hardware components:
Supported Features
==================
The ``mps2/an385`` board target supports the following hardware features:
The ``mps2/an385``, ``mps2/an386``, and ``mps2/an500`` board targets support the following hardware features:
+-----------+------------+-------------------------------------+
| Interface | Controller | Driver/Component |
@ -89,13 +95,14 @@ features.
The default configuration can be found in
:zephyr_file:`boards/arm/mps2/mps2_an385_defconfig`
or similarly in ``mps2_anxxx_defconfig`` for the other applicable boards.
Interrupt Controller
====================
MPS2 is a Cortex-M3 based SoC and has 15 fixed exceptions and 45 IRQs.
MPS2 is a Cortex-M based SoC and has 15 fixed exceptions and 45 IRQs.
A Cortex-M3/4-based board uses vectored exceptions. This means each exception
A Cortex-M3/4/7-based board uses vectored exceptions. This means each exception
calls a handler directly from the vector table.
Handlers are provided for exceptions 1-6, 11-12, and 14-15. The table here
@ -253,7 +260,7 @@ V2M MPS2 provides:
Flashing an application to V2M MPS2
-----------------------------------
Here is an example for the :zephyr:code-sample:`hello_world` application.
Here is an example for the :zephyr:code-sample:`hello_world` application with AN385.
.. zephyr-app-commands::
:zephyr-app: samples/hello_world
@ -270,15 +277,32 @@ the following message:
Hello World! arm
Running an applicatoin with FVP
-------------------------------
Here is the same example for running with FVP.
Set the ``ARMFVP_BIN_PATH`` environemnt variable to the location of your FVP you have downloaded from `here <FVP_>`_
.. code-block:: console
export ARMFVP_BIN_PATH=/home/../FVP_MPS2/
Then build with the same command you would use normally, and run with ``west build -t run_armfvp``.
.. _V2M MPS2 Website:
https://developer.mbed.org/platforms/ARM-MPS2/
.. _MPS2 Technical Reference Manual (TRM):
http://infocenter.arm.com/help/topic/com.arm.doc.100112_0200_05_en/versatile_express_cortex_m_prototyping_systems_v2m_mps2_and_v2m_mps2plus_technical_reference_100112_0200_05_en.pdf
https://developer.arm.com/documentation/100112/0200/
.. _Application Note AN385:
http://infocenter.arm.com/help/topic/com.arm.doc.dai0385c/DAI0385C_cortex_m3_on_v2m_mps2.pdf
https://documentation-service.arm.com/static/5ed107a5ca06a95ce53f89e3
.. _Application Note AN386:
https://documentation-service.arm.com/static/5ed1094dca06a95ce53f8a9f
.. _Application Note AN500:
https://documentation-service.arm.com/static/5ed112fcca06a95ce53f8eb3
.. _FVP:
https://developer.arm.com/downloads/view/FMFVP

View file

@ -0,0 +1,24 @@
/* SPDX-License-Identifier: Apache-2.0 */
/* Copyright 2024 Arm Limited and/or its affiliates <open-source-office@arm.com> */
/dts-v1/;
#include <arm/armv7-m.dtsi>
#include <zephyr/dt-bindings/i2c/i2c.h>
#include <zephyr/dt-bindings/input/input-event-codes.h>
#include "mps2_base.dtsi"
/* FVP does not support uart3 and uart4 */
/* hence we delete them for AN500 in FVP */
/delete-node/ &uart3;
/delete-node/ &uart4;
/ {
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu@0 {
compatible = "arm,cortex-m7";
reg = <0>;
};
};
};

View file

@ -0,0 +1,20 @@
identifier: mps2/an500
name: ARM V2M MPS2-an500
type: mcu
arch: arm
simulation:
- name: armfvp
exec: FVP_MPS2_Cortex-M7
toolchain:
- zephyr
- gnuarmemb
- xtools
supported:
- counter
- gpio
- watchdog
testing:
default: true
ignore_tags:
- net
vendor: arm

View file

@ -0,0 +1,15 @@
#
# Copyright 2024 Arm Limited and/or its affiliates <open-source-office@arm.com>
#
# SPDX-License-Identifier: Apache-2.0
#
CONFIG_RUNTIME_NMI=y
# GPIOs
CONFIG_GPIO=y
# Serial
CONFIG_CONSOLE=y
CONFIG_UART_CONSOLE=y
CONFIG_SERIAL=y

View file

@ -15,6 +15,7 @@ tests:
- mps2/an521/cpu0
- mps2/an383
- mps2/an386
- mps2/an500
- neorv32
drivers.gpio.1pin.aw9523b:
tags:

View file

@ -18,6 +18,7 @@ tests:
- s32z2xxdc2@D/s32z270/rtu1
- mps2/an383
- mps2/an386
- mps2/an500
drivers.watchdog.stm32wwdg:
filter: dt_compat_enabled("st,stm32-window-watchdog") or dt_compat_enabled("st,stm32-watchdog")
extra_args: DTC_OVERLAY_FILE="boards/stm32_wwdg.overlay"