The STM32MPU Embedded Software distribution for STM32 microprocessor platforms supports three software Packages:
- The Starter Package to quickly and easily start with any STM32MP microprocessor device. The Starter Package is generated from the Distribution Package.
- The Developer Package to add your own developments on top of the STM32MPU Embedded Software distribution, or to replace the Starter Package pre-built binaries. The Developer Package is generated from the Distribution Package.
- The Distribution Package to create your own Linux® distribution, your own Starter Package and your own Developer Package.
This article describes in details the above Packages ("ways of working") and helps finding the one that best fits your use case. Packages are standalone, but they are not isolated one from the others: there are gateways between them.
This article starts by an overview of the STM32MPU Embedded Software distribution components.
It concludes by providing an example of production cycle based on the three Packages.
1. Overview of STM32MPU Embedded Software distribution components[edit source]
The STM32MPU Embedded Software distribution includes the following components (as illustrated in the figure below):
- Binaries: software images
- Software development kit (SDK):
- Cross-development toolchain
- Libraries, headers and symbols
- Environment setup scripts
- Source code for:
- The OpenSTLinux distribution running on Arm® Cortex®-A processor(s): U-Boot, TF-A, OP-TEE, Linux® kernel, application frameworks
- The firmwares running on Arm® Cortex®-M processor: STM32Cube MPU Package (only supported for STM32MP15x lines
and STM32MP25x lines
), TF-M (only supported for STM32MP25x lines
)
- Build framework for embedded Linux® (based on OpenEmbedded that is the recommended build system of the Yocto Project):
- BitBake: a make-like build tool
- Recipes: a recipe specifies how a particular package is built
- Layers: a layer is a collection of recipes and/or configurations used on top of the OpenEmbedded core
- Documentation and tools such as:
- The present wiki
- The STM32CubeProgrammer
- Integrated development environments (IDE)
Each of the three Packages described below is made of some of the above components.
2. Starter Package[edit source]
This Package allows to quickly and easily get any STM32 microprocessor development platform up and running.
An STM32 microprocessor development platform (such as STM32MP157x-EV1 Evaluation board) and a microSD card (populated with the software image delivered for this platform) are all what is required to discover the platform capabilities.
No integrated development environment (IDE), no software development kit (SDK) are needed: just use the development platform as a "micro-PC" running Linux®.
The software image also contains the firmwares running on Arm® Cortex®-M processor (only supported for STM32MP15x lines and STM32MP25x lines
).
![STM32 MPU Embedded Software Starter Package.png](/stm32mpu/nsfr_img_auth.php/5/58/STM32_MPU_Embedded_Software_Starter_Package.png)
What are the main use cases that can be covered with this Package?
- Evaluation of the STM32 microprocessor device and development platform (such as internal peripherals and performance)
- Execution of the STM32Cube MPU firmware projects delivered with each STM32Cube MPU Package (only supported for STM32MP15x lines
and STM32MP25x lines
)
- read Starter Package for STM32CubeMP15 to get started with running STM32Cube MPU firmware for Arm Cortex-M4,
- read Starter Package for STM32CubeMP2 to get started with running STM32Cube MPU firmware for Arm Cortex-M33.
- Direct development on the development platform of simple user examples in different languages (Shell, Python...)
For more information on the Starter Package depending on your development platform, refer to the corresponding Starter Package article named Your_development_platform - Starter Package.
Example: STM32MP15 Evaluation boards - Starter Package for the STM32MP15 Evaluation boards.
All Starter Package articles belong to the Category:Starter Package.
Switch to the next Package if you need to:
- modify or tune any piece of software of the STM32MPU Embedded Software distribution (e.g. Linux® kernel)
- integrate pieces of software from open-source communities or third parties
- develop and integrate your own applications
- benefit from a software development kit (e.g. for powerful cross-development toolchain)
- take advantage of an integrated development environment (IDE)
3. Developer Package[edit source]
This Package allows the modification of some pieces of software of the STM32MPU Embedded Software distribution, as well as the addition of your applications in your platform software image.
The Developer Package provides on top of the Starter Package:
- a software development kit (SDK) for cross-development on an host PC
- the following pieces of software of the OpenSTLinux distribution in source code:
- U-Boot
- Trusted Firmware-A (TF-A)
- Linux® kernel
- Optionally, Open source Trusted Execution Environment (OP-TEE)
- the source code for the following firmwares running on the Arm® Cortex®-M processor:
- Initialization code generator (STM32CubeMX). This tool makes it possible to
- generate device tree for OpenSTLinux distribution
- generate the peripheral initialization C code and IDE project creation files for STM32Cube MPU package
- An Eclipse-based integrated development environment (IDE) - STM32CubeIDE
- STM32Cube MPU firmware projects are supported by STM32CubeIDE
- Projects files generated by STM32CubeMX can be directly opened by this IDE to continue STM32Cube MPU firmware development
- STM32CubeIDE integrates STM32CubeMX for an easier user experience
- IDE is optional for OpenSTLinux development since all actions can be achieved through a command line
![]() |
The Developer Package doesn't include the application frameworks (Linux® user space applications, U-Boot applications and OP-TEE user space applications) in source code. |
What are the main use cases that can be covered with this Package?
- Modification and tuning of the pieces of software delivered as source code (see above list):
- Code modification
- Efficient development cycle (compile, push on target, debug)
- Tuning of the configuration options (e.g. for the Linux® kernel)
- Adaptation of the device tree files for the microprocessor device and development platform
- Development of the firmwares running on the Arm® Cortex®-M processor (only supported for STM32MP15x lines
and STM32MP25x lines
)
- read Developer Package for STM32CubeMP15 to get started with building and running STM32Cube MPU firmware for Arm Cortex-M4,
- read Developer Package for STM32CubeMP2 to get started with building and running STM32Cube MPU firmware for Arm Cortex-M33.
- Addition of your own Linux® applications or Linux® application frameworks
- Addition of your own trusted applications (TA) (if OP-TEE is part of the software release)
- Addition of your own U-Boot applications
For more information on the Developer Package for any STM32 microprocessors series, refer to the STM32MPU Developer Package article.
All Developer Package articles belong to the Category:Developer Package.
Switch to the next Package if you need to:
- modify or tune the (U-Boot, OP-TEE and Linux®) application frameworks of the OpenSTLinux distribution
- create your own distribution (e.g. to integrate and share pieces of software from open source communities or third parties)
- generate your own software development kit (SDK) and images
4. Distribution Package[edit source]
This Package allows the creation of a new distribution with a final objective of productization.
It includes the source code of all the pieces of software of the STM32MPU Embedded Software distribution (including the application frameworks), plus a build framework based on OpenEmbedded (aka distribution builder).
A host PC is required to operate this Package (a Linux® host PC is even strongly recommended).
What are the main use cases that can be covered with this Package?
- Creation of your own Linux® distribution
- to tune the system configuration options (such as memory sizes or debug options)
- to share all the developments within your team (software baseline)
- to prepare the final software for productization
- Integration of the following software in this distribution:
- read Distribution Package for STM32CubeMP15 to understand how STM32Cube MPU firmware (for Arm Cortex-M4) projects have been installed in STM32MPU Embedded software distribution,
- read Distribution Package for STM32CubeMP2 to understand how STM32Cube MPU firmware (for Arm Cortex-M33) projects have been installed in STM32MPU Embedded software distribution.
- Generation of your own Starter Package images
- Generation of your own Developer Package SDK
Generally speaking, few dedicated people from the project team use this Distribution Package to create and regularly enrich the project Linux® distribution and generate the project Developer Package. Most of developers will use this Developer Package for their developments, since it is a light weighted and efficient (short development cycle) environment.
For more information on the Distribution Package for any STM32 microprocessor series, refer to the STM32MPU Distribution Package article.
All Distribution Package articles belong to the Category:Distribution Package.
5. Example of production cycle[edit source]
The following figures give an example of gateways between the different Packages, that might be seen as a production cycle.
![STM32MPU Embedded Software distribution: evaluation, development and integration STM32MPU Embedded Software distribution: evaluation, development and integration](/stm32mpu/nsfr_img_auth.php/4/45/STM32_MPU_Embedded_Software_production_cycle_1.png)
In the example given above, the developers use the Developer Package of the STM32MPU Embedded Software distribution to create an add-on piece of software (e.g. Linux® application on top of the Linux® application frameworks) and modify the Linux® kernel. Their deliveries are integrated on top of the Distribution Package of the STM32MPU Embedded Software distribution, together with pieces of software from an open source community and a third party. The result is your own Distribution Package.
![Your distribution: generating, improving and productizing Your distribution: generating, improving and productizing](/stm32mpu/nsfr_img_auth.php/9/92/STM32_MPU_Embedded_Software_production_cycle_2.png)
In the example given above, your new images (binaries) and your new Developer Package are generated from this new Distribution Package. The developers base their additional developments on this new Developer Package. The production cycle is then initiated.