boards: stm32l562e_dk: Enable TF-M IPC application

This commit enables the TF-M IPC sample application on stm32l562e_dk
board.
It provides device tree flash partition as an overlay in order to
configure and flash the bl2, secure/non secure firmwares.

Signed-off-by: Yestin Sun <sunyi0804@gmail.com>
This commit is contained in:
Yestin Sun 2021-01-05 15:27:12 -08:00 committed by Ioannis Glaropoulos
commit 46cab056bc
4 changed files with 70 additions and 9 deletions

View file

@ -14,6 +14,7 @@ config TFM_BOARD
default "nxp/lpcxpresso55s69" if BOARD_LPCXPRESSO55S69_CPU0
default "mps2/an521" if BOARD_MPS2_AN521
default "stm/nucleo_l552ze_q" if BOARD_NUCLEO_L552ZE_Q
default "stm/stm32l562e_dk" if BOARD_STM32L562E_DK
default "musca_b1" if BOARD_MUSCA_B1
default "musca_s1" if BOARD_MUSCA_S1
help

View file

@ -103,33 +103,38 @@ Or, post build:
$ ninja run
On ST Nucleo L552ZE Q:
======================
On ST Nucleo L552ZE Q or STM32L562E-DK Discovery:
=================================================
This sample was tested on Ubuntu 18.04 with Zephyr SDK 0.11.3.
Build Zephyr with a non-secure configuration:
Example, for building non-secure configuration for Nucleo L552ZE Q
.. code-block:: bash
$ west build -b nucleo_l552ze_q_ns samples/tfm_integration/tfm_ipc/
Two scripts are avalaible in the ``build/tfm`` folder:
Example, for building non-secure configuration for STM32L562E-DK Discovery
.. code-block:: bash
$ west build -b stm32l562e_dk_ns samples/tfm_integration/tfm_ipc/
The script to initialize the device is avalaible in the ``build/tfm`` folder:
- ``regression.sh``: Sets platform option bytes config and erase platform.
- ``TFM_UPDATE.sh``: Writes bl2, secure, and non secure image in target.
Run them in the following order to flash the board:
.. code-block:: bash
$ ./build/tfm/regression.sh
$ ./build/tfm/TFM_UPDATE.sh
Reset the board.
$ west flash --hex-file build/tfm_merged.hex
.. note::
Note that ``arm-none-eabi-gcc`` should be available in the PATH variable and that ``STM32_Programmer_CLI`` is required to run ``regression.sh`` and ``TFM_UPDATE.sh`` (see https://www.st.com/en/development-tools/stm32cubeprog.html). If you are still having trouble running these scripts, check the Programming and Debugging section of the :ref:`nucleo_l552ze_q_board` documentation.
Note that ``arm-none-eabi-gcc`` should be available in the PATH variable and that ``STM32_Programmer_CLI`` is required to run ``regression.sh`` (see https://www.st.com/en/development-tools/stm32cubeprog.html). If you are still having trouble running these scripts, check the Programming and Debugging section of the :ref:`nucleo_l552ze_q_board` or :ref:`stm32l562e_dk_board` documentation.
On LPCxpresso55S69:
===================

View file

@ -0,0 +1,55 @@
/*
* Copyright (c) 2021 Yestin Sun
*
* SPDX-License-Identifier: Apache-2.0
*/
/* This partition table should be used along with TFM configuration:
* - TFM_PSA_API=ON (IPC)
* - ISOLATION_LEVEL 2
* - TEST_S=ON (REGRESSION)
* - TEST_NS=OFF (By default)
*
* In this configuration, TFM binary includes tests. As a consequence,
* its size is bloated and it is not possible to set secondary partitions
* for secured or non secured images.
*/
/ {
chosen {
zephyr,code-partition = &slot1_partition;
};
};
&flash0 {
partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;
boot_partition: partition@0 {
label = "mcuboot";
reg = <0x00000000 0x00013000>;
read-only;
};
/* Secure image primary slot */
slot0_partition: partition@00013000 {
label = "image-0";
reg = <0x00013000 0x00038000>;
};
/* Non-secure image primary slot */
slot1_partition: partition@0004B000 {
label = "image-1";
reg = <0x0004B000 0x0002A000>;
};
/*
* The flash starting at 0x7F000 and ending at
* 0x80000 is reserved for the application.
*/
storage_partition: partition@7F000 {
label = "storage";
reg = <0x0007F000 0x00001000>;
};
};
};

View file

@ -7,7 +7,7 @@ tests:
tags: introduction tfm
platform_allow: mps2_an521_nonsecure lpcxpresso55s69_ns
nrf5340dk_nrf5340_cpuappns nrf9160dk_nrf9160ns nucleo_l552ze_q_ns
v2m_musca_s1_nonsecure
stm32l562e_dk_ns v2m_musca_s1_nonsecure
harness: console
harness_config:
type: multi_line