122 lines
4.7 KiB
ReStructuredText
122 lines
4.7 KiB
ReStructuredText
###################################
|
|
Details for the platform/ext folder
|
|
###################################
|
|
This folder has code that has been imported from other projects. This means the
|
|
files in this folder and subfolders have Apache 2.0 license which is different
|
|
to BSD 3.0 license applied to the parent TF-M project.
|
|
|
|
.. Note::
|
|
This folder is strictly Apache 2.0 with the exception of cmake files.
|
|
Maintainers should be consulted if this needs to be revisited.
|
|
|
|
***********
|
|
Sub-folders
|
|
***********
|
|
|
|
cmsis
|
|
=====
|
|
This folder contains core and compiler specific header files imported from the
|
|
``CMSIS_5`` project.
|
|
|
|
common
|
|
======
|
|
This folder contains stdout redirection to UART, a temporary memory mapped flash
|
|
implementation for the bootloader and tfm\_mbedtls\_config.h for all the
|
|
targets.
|
|
|
|
drivers
|
|
=======
|
|
This folder contains the headers with CMSIS compliant driver definitions that
|
|
that TF-M project expects a target to provide.
|
|
|
|
target_cfg.h
|
|
------------
|
|
This file is expected to define the following macros respectively.
|
|
|
|
- ``TFM_DRIVER_STDIO`` - This macro should expand to a structure of type
|
|
``ARM_DRIVER_USART``. TFM redirects its standard input and output to this
|
|
instance of USART.
|
|
- ``NS_DRIVER_STDIO`` - This macro should expand to a structure of type
|
|
``ARM_DRIVER_USART``. Non-Secure application redirects its standard input and
|
|
output to this instance of USART.
|
|
|
|
target
|
|
======
|
|
This folder contains the files for individual target.
|
|
|
|
Flash layout header file
|
|
------------------------
|
|
Target must provide a header file, called ``flash_layout.h``, which defines the
|
|
information explained in the follow subsections. The defines must be named
|
|
as they are in the subsections.
|
|
|
|
BL2 bootloader
|
|
^^^^^^^^^^^^^^
|
|
The BL2 bootloader requires the following definitions:
|
|
|
|
- ``FLASH_BASE_ADDRESS`` - Defines the first valid address in the flash.
|
|
- ``FLASH_AREA_BL2_OFFSET`` - Defines the offset from the flash base address
|
|
where the BL2 - MCUBOOT area starts.
|
|
- ``FLASH_AREA_BL2_SIZE`` - Defines the size of the BL2 area.
|
|
- ``FLASH_AREA_IMAGE_0_OFFSET`` - Defines the offset from the flash base address
|
|
where the image 0 area starts, which hosts the active firmware image.
|
|
- ``FLASH_AREA_IMAGE_0_SIZE`` - Defines the size of the image 0 area.
|
|
- ``FLASH_AREA_IMAGE_1_OFFSET`` - Defines the offset from the flash base address
|
|
where the image 1 area starts, which is a placeholder for new firmware images.
|
|
- ``FLASH_AREA_IMAGE_1_SIZE`` - Defines the size of the image 1 area.
|
|
- ``FLASH_AREA_IMAGE_SCRATCH_OFFSET`` - Defines the offset from the flash base
|
|
address where the scratch area starts, which is used during image swapping.
|
|
- ``FLASH_AREA_IMAGE_SCRATCH_SIZE`` - Defines the size of the scratch area. The
|
|
minimal size must be as the biggest sector size in the flash.
|
|
- ``FLASH_DEV_NAME`` - Specifies the flash device used by BL2.
|
|
|
|
Assemble tool
|
|
^^^^^^^^^^^^^
|
|
The ``assemble.py`` tools is used to concatenate secure and non-secure binary
|
|
to a single binary blob. It requires the following definitions:
|
|
|
|
- ``SECURE_IMAGE_OFFSET`` - Defines the offset from the single binary blob base
|
|
address, where the secure image starts.
|
|
- ``SECURE_IMAGE_MAX_SIZE`` - Defines the maximum size of the secure image area.
|
|
- ``NON_SECURE_IMAGE_OFFSET`` - Defines the offset from the single binary blob
|
|
base address, where the non-secure image starts.
|
|
- ``NON_SECURE_IMAGE_MAX_SIZE`` - Defines the maximum size of the non-secure
|
|
image area.
|
|
|
|
Secure Storage (SST) Service definitions
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
The SST service requires the following definitions:
|
|
|
|
- ``SST_FLASH_AREA_ADDR`` - Defines the flash area address where the secure
|
|
store area starts.
|
|
- ``SST_SECTOR_SIZE`` - Defines the size of the flash sectors.
|
|
- ``SST_NBR_OF_SECTORS`` - Defines the number of sectors available for the
|
|
secure area.
|
|
- ``SST_FLASH_DEV_NAME`` - Specifies the flash device used by SST to store the
|
|
data.
|
|
- ``SST_FLASH_PROGRAM_UNIT`` - Defines the smallest flash programmable unit in
|
|
bytes.
|
|
- ``SST_MAX_ASSET_SIZE`` - Defines the maximum asset size to be stored in the
|
|
SST area.
|
|
- ``SST_NUM_ASSETS`` - Defines the maximum number of assets to be stored in the
|
|
SST area.
|
|
|
|
.. Note::
|
|
|
|
The sectors must be consecutive.
|
|
|
|
***************************************
|
|
Expose target support for HW components
|
|
***************************************
|
|
Services may require HW components to be supported by the target to enable some
|
|
features (e.g. SST service with rollback protection, etc). The following
|
|
definitions need to be set in the .cmake file if the target has the following
|
|
HW components:
|
|
|
|
- ``TARGET_NV_COUNTERS_ENABLE`` - Specifies that the target has non-volatile
|
|
(NV) counters.
|
|
|
|
--------------
|
|
|
|
*Copyright (c) 2017-2019, Arm Limited. All rights reserved.*
|