Last edited 2 months ago

Example of directory structure for Packages

Applicable for STM32MP13x lines, STM32MP15x lines, STM32MP21x lines, STM32MP23x lines, STM32MP25x lines



1. Article purpose[edit | edit source]

This article aims at proposing a way to organize, on the host PC, the software packages of the different Packages (Starter, Developer and Distribution) for a given release of the STM32MPU Embedded Software distribution (here ecosystem release v6.1.0 More info.png ).

The main objective of the proposed organization is to keep together the software packages corresponding to a given release because there are links between them. For example:

  • Flashing the image from the Starter Package on the board is mandatory before modifying the source code from the Developer Package. Both the image and the source code must belong to the same software release.
  • The SDK (Developer Package) and the image (Starter Package) have both been generated from the Distribution Package. A software release thus guarantees that there is no misalignment between the different software packages.
Info white.png Information
The objective of this article is to describe one organization among all the possible organizations. Feel free to organize the delivered Packages in any other way that would better match your way of working.
Info white.png Information
In practice, this article uses the release STM32MPU-Ecosystem-v6.1.0 for the STM32MPU Embedded Software distribution as an example to illustrate the proposed organization. If you are using a different release, the names of the directories and files might differ.

The directories are shown in blue, while the files are in black.

2. Creating the structure[edit | edit source]

  • Create your <working directory> and assign a unique name to it (for example by including the release name):
mkdir STM32MPU-Ecosystem-v6.1.0
cd STM32MPU-Ecosystem-v6.1.0
Warning white.png Warning
Prefer to have a <working directory> into the root of your HOME directory or in a short path (/local or /opt for example).
Distribution package with a too long Yocto BUILDDIR path could fail at compilation step.
mkdir Starter-Package
mkdir Developer-Package
mkdir Distribution-Package
  • The resulting directory structure looks as follows:
STM32MPU-Ecosystem-v6.1.0   STM32MPU Embedded Software release
├── Developer-Package       Developer Package installation directory
├── Distribution-Package    Distribution Package installation directory
└── Starter-Package         Starter Package(s) installation directory

Once all software packages have been installed according to the instructions given in the STM32MPU Embedded Software distribution release note, the resulting directory structure looks as follows:

STM32MPU-Ecosystem-v6.1.0                            STM32MPU Embedded Software release
├── Developer-Package                                        Developer Package installation directory
│   ├── stm32mp1-openstlinux-6.6-yocto-scarthgap-mpu-v25.06.11/sdk    STM32MP1 SDK for OpenSTLinux distribution (32b)
│   ├── stm32mp2-openstlinux-6.6-yocto-scarthgap-mpu-v25.06.11/sdk    STM32MP2 SDK for OpenSTLinux distribution (64b)
│   ├── STM32Cube_FW_MP1_V1.7.0                                       STM32CubeMP1 Package
│   ├── STM32Cube_FW_MP2_V1.2.0                                       STM32CubeMP2 Package
│   ├── stm32mpu-openstlinux-6.6-yocto-scarthgap-mpu-v25.06.11        Linux kernel, U-Boot, TF-A and OP-TEE OS source code (OpenSTLinux distribution)  !!!!! tf-m????? et name TBC
├── Distribution-Package                             Distribution Package installation directory
│   └── openstlinux-6.6-yocto-scarthgap-mpu-v25.06.11           OpenSTLinux distribution (full source code and OpenEmbedded-based build framework)
└── Starter-Package                                  Starter Package installation directory
    |── stm32mp1-openstlinux-6.6-yocto-scarthgap-mpu-v25.06.11  Software image (binaries)
    └── stm32mp2-openstlinux-6.6-yocto-scarthgap-mpu-v25.06.11  Software image (binaries)

3. Focus on the Starter Package directory[edit | edit source]

The Starter-Package directory contains the software image for the STM32MPU Embedded Software distribution.

The optee boot chain is the default solution delivered by STMicroelectronics. It includes the superset of features (for example, all Flash memory devices are supported). Refer to the Boot chain overview article for details.

Flash memory partitions (e.g. rootfs, bootfs...) are explained in the STM32 MPU Flash mapping article.


Starter-Package
└── stm32mp{1,2}-openstlinux-6.6-yocto-scarthgap-mpu-v25.06.11 
    └── images
        └── stm32mp{1,2}
            ├── flashlayout_st-image-weston                                 Flash layout files (description of the partitions) for the supported Flash devices and boards
            │   ├── deleteall
            │   │   └── [...]
            │   ├── extensible
            │   │   ├── FlashLayout_sdcard_stm32mp*-extensible.tsv                   Flash layout file for microSD card with no userfs partition but a rootfs partition extended to sdcard size (recommended setup for package repository service)
            │   │   └── [...]
            │   ├── fastboot
            │   │   ├── FlashLayout_emmc_stm32mp*-fastboot.tsv                       Flash layout file for Fastboot flash protocol and op-tee boot chain (System and secure services)
            │   │   ├── FlashLayout_sdcard_stm32mp*-fastboot.tsv                     Flash layout file for Fastboot flash protocol and op-tee boot chain (System and secure services)
            │   │   └── [...]
            │   ├── fastboot-opteemin
            │   │   ├── FlashLayout_emmc_stm32mp*-fastboot-opteemin.tsv              Flash layout file for Fastboot flash protocol and op-tee boot chain (System services only), with OP-TEE OS
            │   │   ├── FlashLayout_sdcard_stm32mp*-fastboot-opteemin.tsv            Flash layout file for Fastboot flash protocol and op-tee boot chain (System services only), with OP-TEE OS
            │   │   └── [...]
            │   ├── optee
            │   │   ├── FlashLayout_emmc_stm32mp*-optee.tsv                          Flash layout file for eMMC and op-tee boot chain (System and secure services), with OP-TEE OS
            │   │   ├── FlashLayout_sdcard_stm32mp*-optee.tsv                        Flash layout file for microSD card and op-tee boot chain (System and secure services), with OP-TEE OS
            │   │   └── [...]
            │   ├── opteemin
            │       ├── FlashLayout_emmc_stm32mp*-opteemin.tsv                       Flash layout file for eMMC and op-tee boot chain (System services only), with OP-TEE OS
            │       ├── FlashLayout_sdcard_stm32mp*-opteemin.tsv                     Flash layout file for microSD card and op-tee boot chain (System services only), with OP-TEE OS
            │       └── [...]
            ├── fip
            │   ├── fip-<board>-<boot-type>.bin                                      FIP Image to flash            
            ├── arm-trusted-firmware
            │   ├── tf-a-<board>-<boot-type>.stm32                                   Intermediate tf-a binary used to build fip image
            ├── u-boot
            │   ├── u-boot-nodtb-soc-<boot-type>.bin                                 Intermediate tf-a binary used to build fip image
            │   ├── u-boot-<board>.dtb                                               Intermediate tf-a dtb used to build fip image
            ├── optee
            │   ├── tee-header_v2-<board>-<boot-type>.bin
            ​│   ├── tee-pageable_v2-<board>-<boot-type>.bin
           ​ │   ├── tee-pager_v2-<board>-<boot-type>.bin
            ├── kernel
            │   ├── vmlinux                                                          vmlinux copied in bootfs partition
            ├── scripts
            │   └── create_sdcard_from_flashlayout.sh
            ├── st-image-bootfs-openstlinux-weston-stm32mp{1,2}.ext4                 Binary for bootfs partition
            ├── st-image-bootfs-openstlinux-weston-stm32mp{1,2}.manifest
            ├── st-image-userfs-openstlinux-weston-stm32mp{1,2}.ext4                 Binary for userfs partition
            ├── st-image-userfs-openstlinux-weston-stm32mp{1,2}.manifest
            ├── st-image-vendorfs-openstlinux-weston-stm32mp{1,2}.ext4               Binary for vendorfs partition
            ├── st-image-weston-openstlinux-weston-stm32mp{1,2}.ext4                 Binary for rootfs partition
            ├── st-image-weston-openstlinux-weston-stm32mp{1,2}.license
            ├── st-image-weston-openstlinux-weston-stm32mp{1,2}-license_content.html
            ├── st-image-weston-openstlinux-weston-stm32mp{1,2}.manifest
            └── [...]

4. Focus on the Developer Package directory[edit | edit source]

The Developer-Package directory contains:

  • The source code for the following OpenSTLinux software packages (development for Arm® Cortex®-A processor):
    • Linux® kernel
    • GCnano driver
    • U-Boot
    • TF-A
    • OP-TEE OS
  • The debug symbol files for Linux kernel, U-Boot, TF-A and OP-TEE OS
  • The SDK (for cross-development on an host PC)
  • The STM32Cube MPU Package (developed for Arm® Cortex®-M processor)
Developer-Package
├── SDK    SDK for OpenSTLinux distribution: details in Standard SDK directory structure article
│   ├── st-image-weston-openstlinux-weston-stm32mp1.rootfs-x86_64-toolchain-5.0.8-openstlinux-6.6-yocto-scarthgap-mpu-v25.06.11.sh  
│   ├── [...]
│   ├── st-image-weston-openstlinux-weston-stm32mp2.rootfs-x86_64-toolchain-5.0.8-openstlinux-6.6-yocto-scarthgap-mpu-v25.06.11.sh  
│   └── [...]
├── STM32Cube_FW_MP1_V1.7.0    STM32CubeMP1 Package: details in STM32CubeMP15 Package content article
│   ├── Drivers
│   │   ├── BSP                         BSP drivers for the supported STM32MPU boards
│   │   │   └── [...]
│   │   ├── CMSIS
│   │   │   └── [...]
│   │   └── STM32MP1xx_HAL_Driver       HAL drivers for the supported STM32MPU devices
│   │       └── [...]
│   ├── _htmresc
│   │   └── [...]
│   ├── License.md                      License types for the components
│   ├── Middlewares                     Middlewares used by the examples and applications
│   │   └── [...]
│   ├── package.xml
│   ├── Projects
│   │   ├── STM32CubeProjectsList.html  List of examples and applications for STM32CubeMP1 Package
│   │   ├── STM32MP157F-DK2             Set of examples and applications → STM32MP157F-DK2
│   │   │   └── [...]
│   │   └── STM32MP157F-EV1             Set of examples and applications → STM32MP157F-EV1
│   │       └── [...]
│   ├── Readme.md
│   ├── Release_Notes.html              Release note for STM32CubeMP1 Package
│   └── Utilities
│       └── [...]
├── STM32Cube_FW_MP2_V1.2.0             STM32CubeMP2 Package: details in STM32CubeMP2 Package content article
    └── [...]
└── stm32mp{1,2}-openstlinux-6.6-yocto-scarthgap-mpu-v25.06.11    Source code for OpenSTLinux distribution
    ├── images
    │   └── stm32mp1                                Debug symbol files installation directory
    │       ├── tf-a-bl2-<soc>-<boot-type>.elf      Debug symbol file for TF-A
    │       ├── u-boot-<soc>-<boot-type>.elf        Debug symbol file for U-Boot
    │       ├── vmlinux                             Debug symbol file for Linux kernel
    │       └── [...]
    └── sources
        └── ostl-linux           For stm32mp{1,2}x series
            ├── external-dt-6.0-r2    External DT installation directory
            │   ├── README.HOW_TO.txt.{stm32mp1,stm32mp2,stm32mp2-m33td}    Helper file for External DT module management providing also component compilation guidelines (STM32MP1 series, STM32MP2 series with A35-TD flavor More info green.png and STM32MP2 series with M33-TD flavor More info green.png)
            │   ├── stm32mp1    Sub-directory for STM32MP1 series
            │       ├── linux         Device tree files for Linux kernel component
            │       ├── optee         Device tree files for optee component
            │       ├── {{STLightBlue|tf-a/}          Device tree files for  tf-a component
            │       └── u-boot        Device tree files for u-boot component
            │   ├── stm32mp2    Sub-directory for STM32MP2 series
            │       ├── {a35-td,m33-td}    Sub-directory following TD flavor (A35-TD or M33-TD) More info green.png
            │           ├── linux                 Device tree files for Linux kernel component
            │           ├── mcuboot               Device tree files for mcuboot component (M33-TD flavor More info green.png only)
            │           ├── optee                 Device tree files for optee component
            │           ├── tf-a                  Device tree files for  tf-a component
            │           ├── tf-m                  Device tree files for  tf-m component
            │           └── u-boot                Device tree files for u-boot component
            ├── gcnano-driver-stm32mp-6.4.21-r1-r0    GCNano linux driver installation directory
            │   ├── README.HOW_TO.txt.{stm32mp1,stm32mp2,stm32mp2-m33td}    Helper file for GCnano kernel module management providing also component compilation guidelines (STM32MP1 series, STM32MP2 series with A35-TD flavor More info green.png and STM32MP2 series with M33-TD flavor More info green.png)
            │   ├── gcnano-driver-stm32mp-6.4.21-r1-r0         GCnano kernel module source code directory
            │   └── gcnano-driver-stm32mp-6.4.21-r1-r0.tar.xz
            ├── linux-stm32mp-6.6.78-stm32mp-r2-r0    Linux kernel installation directory
            │   ├── README.HOW_TO.txt.{stm32mp1,stm32mp2,stm32mp2-m33td}    Helper file for Linux kernel module management providing also component compilation guidelines (STM32MP1 series, STM32MP2 series with A35-TD flavor More info green.png and STM32MP2 series with M33-TD flavor More info green.png)
            │   ├── [*].patch                                               ST patches for Linux kernel
            │   ├── fragment-[*].config                                     ST configuration fragments for Linux kernel
            │   ├── optional-fragment-[*].config                            optional ST configuration fragments for Linux kernel
            │   ├── linux-6.6.78                                            Linux kernel source code directory
            │   ├── linux-6.6.78.tar.xz
            │   └── series
            ├── m33tdprojects-starter-stm32mp2-1.2.0-r0	M33TD Starter project installation directory
            │   ├── README.HOW_TO.txt.stm32mp2-m33td		Helper file for M33TD Projects management providing also component compilation guidelines (STM32MP2 series with M33-TD flavor More info green.png only)
            │   ├── m33tdprojects-starter-stm32mp2-1.2.0-r0	M33TD Starter project source code directory
            │   ├── m33tdprojects-starter-stm32mp2-1.2.0-r0.tar.xz
            │   └── Makefile.sdk.stm32mp2-m33td			Makefile for the M33TD Starter project compilation
            ├── optee-os-stm32mp-4.0.0-stm32mp-r2-r0    OP-TEE OS installation directory
            │   ├── README.HOW_TO.txt.{stm32mp1,stm32mp2,stm32mp2-m33td}    Helper file for OP-TEE OS module management providing also component compilation guidelines (STM32MP1 series, STM32MP2 series with A35-TD flavor More info green.png and STM32MP2 series with M33-TD flavor More info green.png)
            │   ├── [*].patch                                               ST patches for OP-TEE OS
            │   ├── Makefile.sdk.{stm32mp1,stm32mp2,stm32mp2-m33td}         Makefile(s) for the OP-TEE OS compilation (STM32MP1 series, STM32MP2 series with A35-TD flavor More info green.png and STM32MP2 series with M33-TD flavor More info green.png)
            │   ├── optee-os-stm32mp-4.0.0-stm32mp-r2-r0                    OP-TEE OS source code directory
            │   ├── optee-os-stm32mp-4.0.0-stm32mp-r2-r0.tar.xz
            │   └── series
            ├── sdk-infos-1.0-r0    SDK Infos directory
            │   ├── README.HOW_TO.txt.{stm32mp1,stm32mp2,stm32mp2-m33td}    Helper file for Developer package sources building !!!!!!!!!!!!(STM32MP1 series, STM32MP2 series with A35-TD flavor More info green.png and STM32MP2 series with M33-TD flavor More info green.png)
            │   └── generated_build_script-stm32mpx.sh                      Script for !!!!!!!!!!!!!!!!!!!! 
            ├── tf-a-stm32mp-v2.10.13-stm32mp-r2-r0    TF-A installation directory
            │   ├── README.HOW_TO.txt.{stm32mp1,stm32mp2,stm32mp2-m33td}    Helper file for TF-A module management providing also component compilation guidelines (STM32MP1 series, STM32MP2 series with A35-TD flavor More info green.png and STM32MP2 series with M33-TD flavor More info green.png)
            │   ├── [*].patch                                               ST patches for TF-A
            │   ├── fiptool-stm32mp.{stm32mp1,stm32mp2,stm32mp2-m33td}      Script file for creating FIP image (STM32MP1 series, STM32MP2 series with A35-TD flavor More info green.png and STM32MP2 series with M33-TD flavor More info green.png)
            │   ├── Makefile.sdk.{stm32mp1,stm32mp2,stm32mp2-m33td}         Makefile(s) for the TF-A compilation (STM32MP1 series, STM32MP2 series with A35-TD flavor More info green.png and STM32MP2 series with M33-TD flavor More info green.png)
            │   ├── series
            │   ├── tf-a-stm32mp-v2.10.13-stm32mp-r2-r0                      TF-A source code directory
            │   └── tf-a-stm32mp-v2.10.13-stm32mp-r2-r0.tar.xz
            ├── tf-m-stm32mp-v2.1.0-stm32mp-r1-r0    TF-M installation directory
            │   ├── README.HOW_TO.txt          Helper file for M33TD Projects management providing also component compilation guidelines
            │   ├── tf-m-stm32mp-v2.1.0-stm32mp-r1-r0            TF-M source code directory
            │   ├── Makefile.sdk               Makefile for the TF-M compilation
            │   ├── tf-m-stm32mp-v2.1.0-stm32mp-r1-r0.tar.xz tar.xz
            │   └── tf-m-stm32mp-v2.1.0-stm32mp-r1-r0.tar.xz diff.gz
            ├── tf-m-tests-stm32mp-v2.1.0-stm32mp-r1-r0    TF-M-tests installation directory
            │   ├── README.HOW_TO.txt    Helper file for TF-M-tests management: reference for TF-M-tests build
            │   ├── [*].patch            ST patches for TF-A
            │   ├── unknown package      TF-M-tests source code directory
            │   ├── tf-m-tests-stm32mp-v2.1.0-stm32mp-r1-r0.tar.xz
            │   └── series
            └── u-boot-stm32mp-v2023.10-stm32mp-r2-r0    U-Boot installation directory
                ├── README.HOW_TO.txt.{stm32mp1,stm32mp2,stm32mp2-m33td}    Helper file for U-Boot module management providing also component compilation guidelines (STM32MP1 series, STM32MP2 series with A35-TD flavor More info green.png and STM32MP2 series with M33-TD flavor More info green.png)
                ├── [*].patch                                               ST patches for U-Boot
                ├── fiptool-stm32mp.{stm32mp1,stm32mp2,stm32mp2-m33td}      Script file for creating FIP image (STM32MP1 series, STM32MP2 series with A35-TD flavor More info green.png and STM32MP2 series with M33-TD flavor More info green.png)
                ├── Makefile.sdk.{stm32mp1,stm32mp2,stm32mp2-m33td}         Makefile(s) for the U-Boot compilation (STM32MP1 series, STM32MP2 series with A35-TD flavor More info green.png and STM32MP2 series with M33-TD flavor More info green.png)
                ├── series
                ├── u-boot-stm32mp-v2023.10-stm32mp-r2-r0                   U-Boot source code directory
                └── u-boot-stm32mp-v2023.10-stm32mp-r2-r0.tar.xz

Appendix A shows the structure of the Linux kernel, U-Boot, TF-A and OP-TEE OS installation directories after these software packages have been built.

5. Focus on the Distribution Package directory[edit | edit source]

The Distribution-Package directory contains all the OpenEmbedded layers required to get the source code of any STM32MPU Embedded Software component, as well as a build framework based on OpenEmbedded.


STM32MPU-Ecosystem-v6.1.0
└── Distribution-Package  OpenSTLinux distribution
    └── layers
        ├── meta-openembedded  Collection of layers for the OpenEmbedded-Core universe (OpenEmbedded standard)
        │   └── [...]
        ├── meta-st
        │   ├── meta-st-openstlinux             STMicroelectronics layer that contains the settings of the frameworks and images for the OpenSTLinux distribution
        │   │   ├── recipes-st
        │   │   │   ├── images
        │   │   │   │   ├── st-image-core.bb          Core image for OpenSTLinux distribution
        │   │   │   │   └── st-image-weston.bb        Weston image with basic Wayland support for OpenSTLinux distribution: recommended setup
        │   │   │   └── packagegroups
        │   │   │       └── [...]
        │   │   └── [...]
        │   ├── meta-st-stm32mp               STMicroelectronics layer that contains the description of the BSP for the STM32 MPU devices
        │   │   ├── recipes-bsp
        │   │   │   ├── alsa                      Recipes for ALSA control configuration
        │   │   │   │   └── [...]
        │   │   │   ├── ddr-firmware
        │   │   │   │   └── [...]
        │   │   │   ├── drivers                   Recipes for Vivante GCNANO GPU kernel drivers
        │   │   │   │   └── [...]
        │   │   │   ├── fip-stm32mp
        │   │   │   │   └── [...]
        │   │   │   ├── trusted-firmware-a        Recipes for TF-A
        │   │   │   │   └── [...]
        │   │   │   ├── trusted-firmware-m        Recipes for TF-M
        │   │   │   │   └── [...]
        │   │   │   └── u-boot                    Recipes for U-Boot
        │   │   │       └── [...]
        │   │   ├── recipes-extended
        │   │   │   ├── m4projects                Recipes for STM32Cube MPU Package within the OpenSTLinux distribution
        │   │   │   │   └── [...]
        │   │   │   └── [...]
        │   │   ├── recipes-graphics
        │   │   │   ├── gcnano-userland           Recipes for Vivante libraries OpenGL ES, OpenVG and EGL (multi backend)
        │   │   │   │   └── [...]
        │   │   │   └── [...]
        │   │   ├── recipes-kernel
        │   │   │   └── linux                     Recipes for Linux kernel
        │   │   │       └── [...]
        │   │   │   └── linux-firmware            Recipes for Linux firmwares (example, Bluetooth firmware)
        │   │   │       └── [...]
        │   │   ├── recipes-st
        │   │   │   └── images
        │   │   │       ├── st-image-bootfs.bb    Recipes for the bootfs partition binary
        │   │   │       ├── st-image-userfs.bb    Recipes for the userfs partition binary
        │   │   │       └── st-image-vendorfs.bb  Recipes for the vendorfs partition binary
        │   │   └── [...]
        │   ├── meta-st-stm32mp-addons  STMicroelectronics layer that helps managing the STM32CubeMX integration
        │       └── [...]
        │   └── scripts
        │       ├── envsetup.sh         Environment setup script for Distribution Package
        │       └── [...]
        └── openembedded-core  Core metadata for current versions of OpenEmbedded (standard)
            └── [...]

Appendix B shows the structure of the build directory.

6. Appendix A: directory structure after build (Developer Package)[edit | edit source]

Provided you have followed the recommendations of the README.HOW_TO.txt helper files to build the Linux kernel, the U-Boot and the TF-A, then the following new directories and files contain the build outputs.


Developer-Package
├── stm32mpu-openstlinux-6.6-yocto-scarthgap-mpu-v25.06.11  Source code for OpenSTLinux distribution
│   └── sources
│       └── arm-ostl-linux-gnueabi
│           ├── FIP_artifacts                        FIP images to flash
│           │   ├── fip/                               FIP images to flash, need to edit tsv file to point on that fip images
│           │   ├── arm-trusted-firmware/              Intermediate binaries of tf-a required to build fip images
│           │   ├── u-boot/                            Intermediate binaries of u-boot required to build fip images
│           │   ├── optee/                             Intermediate binaries of  optee required to build fip images
│           ├── linux-6.6.78
│           │   ├── build                             Linux kernel build directory
│           │   │   ├── install_artifact
│           │   │   │   ├── lib
│           │   │   │   │   └── modules
│           │   │   │   │       └── X.Y.Z
│           │   │   │   │           └── [...]           Kernel modules hierarchy (*.ko files)
│           │   │   │   └── boot
│           │   │   │       ├── stm32mp[*].dtb          Linux kernel device tree blob files for bootfs partition
│           │   │   │       ├── uImage                  Linux kernel binary image file (with U-Boot wrapper) for bootfs partition
│           │   │   │       └── [...]
│           │   │   ├── vmlinux                         Debug symbol file for Linux kernel
│           │   │   └── [...]
│           │   └── [...]
│           ├── optee-os-stm32mp-4.0.0-stm32mp-r2-r0               OP-TEE OS installation directory
│           │   ├── build                                                OP-TEE OS build directory
│           │   │   ├── tee-[header/pageable/pager]_v2-stm32mp[*].stm32  Binaries for OP-TEE OS runtime services
│           │   │   └── [...]
│           │   └── [...]
│           ├──tf-a-stm32mp-v2.10.13-stm32mp-r2-r0          TF-A installation directory
│           │   ├── build                                       TF-A build directory
│           │   │   ├── optee                                   TF-A, with OP-TEE OS
│           │   │   │   ├── tf-a-bl2-optee.elf                  Debug symbol file for TF-A, with OP-TEE OS → boot firmware stage
│           │   │   │   ├── tf-a-stm32mp[*].stm32               TF-A binary for FSBL partition, with OP-TEE OS
│           │   │   │   └── [...]
│           │   └── [...]
│           └── u-boot-stm32mp-v2023.10-stm32mp-r2-r0      U-Boot installation directory
│               └── [...]

7. Appendix B: directory structure after build (Distribution Package)[edit | edit source]

By following the build method explained in OpenSTLinux distribution, the build outputs should look like following file tree.

  • Destination of files in purple is the Starter Package: flash layout, binaries for bootfs, rootfs, userfs and vendorfs partitions
  • Destination of files in grey is the Starter and Developer Packages: binaries for FSBL and SSBL partitions, and for OP-TEE OS runtime services
  • Destination of files in orange is the Developer Package: Linux kernel image and device tree blobs, and debug symbol files


/[...]/build-openstlinuxweston-stm32mp{1,2}/tmp-glibc/deploy    Yocto BUILDDIR
├── images
│   └── stm32mp{1,2,2-m33td} 
│       ├── flashlayout_st-image-weston/optee              Flash layout files (description of the partitions) for the supported flash devices
│       │   ├── FlashLayout_sdcard_stm32mp[*].tsv          Flash layout file for SDcard and optee boot chain, with OP-TEE OS
│       │   ├── [...]
│       │   ├── FlashLayout_emmc_stm32mp[*].tsv            Flash layout file for eMMC and optee boot chain, with OP-TEE OS → STM32MP157F-EV1
│       │   └── [...]
│       ├── scripts
│       │   └── create_sdcard_from_flashlayout.sh
│       ├── st-image-bootfs-openstlinux-weston-stm32mp{1,2,2-m33td}.ext4      Binary for bootfs partition
│       ├── st-image-userfs-openstlinux-weston-stm32mp{1,2,2-m33td}.ext4      Binary for userfs partition
│       ├── st-image-vendorfs-openstlinux-weston-stm32mp{1,2,2-m33td}.ext4    Binary for vendorfs partition
│       ├── st-image-weston-openstlinux-weston-stm32mp{1,2,2-m33td}.ext4      Binary for rootfs partition
│       ├── fip/                                                              FIP images flashed according flashlayout selected
│       ├── uImage                                                            Linux kernel binary image file (with U-Boot wrapper) for bootfs partition
│       ├── vmlinux                                                           Debug symbol file for Linux kernel
│       └── [...]
└── [...]