STM32MP15 device tree



1 Purpose and scope[edit]

This article shows the structure of the device tree files as it is implemented in STM32MP15 for the following software components: Linux® kernel, U-Boot and TF-A.

The purpose of this article is not to explain the device tree concept and the device tree configuration supported by STM32MP15. A good knowledge of the concept is a prerequisite before reading this article. The articles regarding the configuration can be read afterwards.

2 Device tree structure for Linux, U-Boot and TF-A[edit]

2.1 Introduction[edit]

The device tree files are used during boot time by the FSBL (TF-A / U-Boot SPL), the SSBL (U-Boot), and eventually by the Linux kernel.
These files are stored in different repositories, but source code reuse is maximized from one repository to another:

  • The initial device tree files supporting STM32MP15 are created in the Linux kernel.
  • In U-Boot, Linux files are copied and overloaded with U-Boot properties (including DDR configuration).
  • In TF-A, Linux files are partly copied (for device tree blob size optimization), and then completed with the DDR configuration copied from U-Boot, and with the security configuration (firewalling).


The figure below shows the device tree creation flow for Linux, U-Boot and TF-A:

Device tree for Linux U-Boot TF-A.png

Color legend:

  •  Linux  in dark blue
  •  U-Boot  in green
  •  TF-A  in pink
  •  STM32CubeMX generated parts  in light blue

The above color codes are used for all the figures included in this article.

2.2 Upstreamed device tree[edit]

2.2.1 Overview[edit]

As explained in the STM32 MPU Embedded Software Open Source Software (OSS) philosophy, STMicroelectronics maximizes the usage of open source software and the upstreaming to the communities.

As a result, the device tree files supporting the evaluation board and the Discovery kit are upstreamed to Linux , U-Boot and TF-A repositories.

2.2.2 Linux[edit]

Device tree Linux upstreamed.png
Device tree legend.png


2.2.3 U-Boot[edit]

Device tree U-Boot upstreamed.png
Device tree legend.png


2.2.4 TF-A[edit]

Device tree TF-A upstreamed.png
Device tree legend.png


Note: The hashed areas on Linux device tree files represent the fact that these files are partly copied in TF-A.


2.3 STM32CubeMX generated device tree[edit]

2.3.1 Overview[edit]

STM32CubeMX can be used to generate the device tree files for a given project. The tool generates the files  highlighted in light blue  in the following diagrams, including the upstreamed files shown in the previous chapter.


The device tree files generated by STM32CubeMX can be built with the Developer Package or Distribution Package:

2.3.2 Linux[edit]

Device tree Linux STM32CubeMX.png


2.3.3 U-Boot[edit]

Device tree U-Boot STM32CubeMX.png


2.3.4 TF-A[edit]

Device tree TF-A STM32CubeMX.png


Trusted Firmware for Arm Cortex-A

First Stage Boot Loader

Secondary Program Loader, Also known as U-Boot SPL

Second Stage Boot Loader

Doubledata rate (memory domain)

Microprocessor Unit

Attachments

Discussions