Last edited 3 months ago

STM32 MPU OpenSTLinux release note - v5.0.0

Applicable for STM32MP13x lines, STM32MP15x lines

This article describes the content of OpenSTLinux distribution software release version openstlinux-6.1-yocto-mickledore-mp1-v23.06.21, which is part of the STM32 MPU ecosystem release note - v5.0.0.

Since first major release of STM32MP1-ecosystem-v5.0.0, updated STM32MP1 distribution package is available through minor releases STM32MP1-ecosystem-v5.0.3 bringing miscellaneous improvements.

1. Intended audience[edit | edit source]

The targeted audience is STM32MP13x lines More info.png and STM32MP15x lines More info.png customers or partners.

2. Delivery scope and purpose[edit | edit source]

The OpenSTLinux distribution is a Linux® distribution based on the OpenEmbedded build Framework. It runs on the Arm® Cortex®-A7 processors, and is a fundamental part of the STM32MPU Embedded Software distribution. This delivery of OpenSTLinux distribution is part of STM32 MPU Ecosystem v5.0.0 (see the STM32 MPU ecosystem release note - v5.0.0).

3. Licensing[edit | edit source]

This software package is licensed under a LIMITED LICENSE AGREEMENT FOR ST MATERIALS EVALUATION (LLA). Customers may not use this package except in compliance with the software license agreement (SLA).

All packages use the same source components. All components and their respective licenses are listed here.

4. Supported hardware[edit | edit source]

This software delivery is compatible with the following boards:

STM32MP13 boards
Boards PCBs list Main features Ordering
STM32MP135x-DK.png
STM32MP135F-DK Discovery kit
  • MB1635 (motherboard)
  • MB1897 (camera module board)
  • STM32MP135FAF7[1] Rev.Y
    • Arm®-based Cortex®-A7 1 GHz
    • Secure boot and cryptography
    • 4-Gbit DDR3L, 16 bits, 533 MHz
  • ST PMIC STPMIC1
  • 4.3" TFT 480x272 pixels with LED backlight, and capacitive touch panel
  • 2-megapixel dual lane CSI-2 camera module with 15-pin FFC connector
  • Wi-Fi® 802.11b/g/n
  • Bluetooth® Low Energy 4.1

Discovery kit with STM32MP135F MPU


STM32MP15 boards
Boards PCBs list Main features Ordering
STM32MP157D-DK1.jpg
STM32MP157D-DK1 Discovery kit
  • MB1272C (motherboard)
  • STM32MP157DAC1[2] Rev.Z
    • Arm®-based dual Cortex®-A7 800 MHz
    • Basic security
    • 4-Gbit DDR3L, 16 bits, 533 MHz
  • ST PMIC STPMIC1APQR cut2.0

Discovery kit with STM32MP157D MPU

STM32MP157F-DK2.jpg
STM32MP157F-DK2 Discovery kit
  • MB1272C (motherboard)
  • MB1407B (daughterboard DSI display)
  • STM32MP157FAC1[2] Rev.Z
    • Arm®-based dual Cortex®-A7 800 MHz
    • Secure boot and cryptography
    • 4-Gbit DDR3L, 16 bits, 533 MHz
  • ST PMIC STPMIC1APQR cut2.0
  • 4" TFT 480×800 pixels with LED backlight, and capacitive touch panel
  • Wi-Fi® 802.11b/g/n
  • Bluetooth® Low Energy 4.1

Discovery kit with STM32MP157F MPU

STM32MP157D or F-EV1.jpg
STM32MP157D-EV1 Evaluation board
  • MB1262C (motherboard)
  • MB1263C (daughterboard)
  • MB1230C (daughterboard DSI display)
  • MB1379A (camera)
  • STM32MP157DAA1[2] Rev.Z
    • Arm®-based dual Cortex®-A7 800 MHz
    • Basic security
    • 2 × 4-Gbit DDR3L, 16 bits, 533 MHz
  • PMIC STPMIC1APQR cut2.0
  • 5.5" TFT 720×1280 pixels with LED backlight, and capacitive touch panel
  • 5-megapixel, 8-bit camera

Evaluation board with STM32MP157D MPU

STM32MP157D or F-EV1.jpg
STM32MP157F-EV1 Evaluation board
  • MB1262C (motherboard)
  • MB1263C (daughterboard)
  • MB1230C (daughterboard DSI display)
  • MB1379A (camera)
  • STM32MP157FAA1[2] Rev.Z
    • Arm®-based dual Cortex®-A7 800 MHz
    • Secure boot and cryptography
    • 2 × 4-Gbit DDR3L, 16 bits, 533 MHz
  • PMIC STPMIC1APQR cut2.0
  • 5.5" TFT 720×1280 pixels with LED backlight, and capacitive touch panel
  • 5-megapixel, 8-bit camera

Evaluation board with STM32MP157F MPU

STM32MP157A-DK1.jpg
STM32MP157A-DK1 Discovery kit
  • MB1272C (motherboard)
  • STM32MP157AAC3[2] Rev.B
    • Arm®-based dual Cortex®-A7 650 MHz
    • Basic security
    • 4-Gbit DDR3L, 16 bits, 533 MHz
  • ST PMIC STPMIC1APQR cut1.2

Out of production

STM32MP157C-DK2.jpg
STM32MP157C-DK2 Discovery kit
  • MB1272C (motherboard)
  • MB1407B (daughterboard DSI display)
  • STM32MP157CAC3[2] Rev.B
    • Arm®-based dual Cortex®-A7 650 MHz
    • Secure boot and cryptography
    • 4-Gbit DDR3L, 16 bits, 533 MHz
  • ST PMIC STPMIC1APQR cut1.2
  • 4" TFT 480×800 pixels with LED backlight, and capacitive touch panel
  • Wi-Fi® 802.11b/g/n
  • Bluetooth® Low Energy 4.1

Out of production

STM32MP157A or C-EV1.jpg
STM32MP157A-EV1 Evaluation board
  • MB1262C (motherboard)
  • MB1263C (daughterboard)
  • MB1230C (daughterboard DSI display)
  • MB1379A (camera)
  • STM32MP157AAA3[2] Rev.B
    • Arm®-based dual Cortex®-A7 650 MHz
    • Basic security
    • 2 × 4-Gbit DDR3L, 16 bits, 533 MHz
  • PMIC STPMIC1APQR cut1.2
  • 5.5" TFT 720×1280 pixels with LED backlight, and capacitive touch panel
  • 5-megapixel, 8-bit camera

Out of production

STM32MP157A or C-EV1.jpg
STM32MP157C-EV1 Evaluation board
  • MB1262C (motherboard)
  • MB1263C (daughterboard)
  • MB1230C (daughterboard DSI display)
  • MB1379A (camera)
  • STM32MP157CAA3[2] Rev.B
    • Arm®-based dual Cortex®-A7 650 MHz
    • Secure boot and cryptography
    • 2 × 4-Gbit DDR3L, 16 bits, 533 MHz
  • PMIC STPMIC1APQR cut1.2
  • 5.5" TFT 720×1280 pixels with LED backlight, and capacitive touch panel
  • 5-megapixel, 8-bit camera

Out of production


5. Release content[edit | edit source]

5.1. Main software components[edit | edit source]

  • Build process
    • OpenEmbedded v4.2.1 (Mickledore) - Updated
    • GCC version v12.2.0 - Updated
  • Embedded software components
    • Linux kernel v6.1-stm32mp-r1 (v6.1.28) - Updated
    • TF-A v2.8-stm32mp-r1 - Updated
    • U-Boot v2022.10-stm32mp-r1 - Updated
    • OP-TEE 3.19.0-stm32mp-r1 - Updated
    • OpenOCD version v0.11.0
  • Applicative components
    • Weston version v11.0.1 - Updated
    • Wayland version 1.21.0 - Updated
    • GStreamer version v1.22.0 - Updated
    • GCnano version v6.4.13 - Updated

5.2. Changes[edit | edit source]

5.2.1. OpenSTLinux layers[edit | edit source]

Changes are:‎

  • Rebase on Yocto Release 4.2.1 (Mickledore)
  • "EFI boot" support (not enabled by default)
  • BSP adaptation for GCC version v12.2.0
  • MACHINE: split device tree file by supported storages
  • "GTKWayland sink" usage for Gstreamer
  • Manage new Ethernet device name (eth0 to end0)
  • "USB OTG": Switch from RNDIS to NCM
  • Add "CVE Summary" generation
  • SDK: add native gcc and symlinks
  • Minor fixes
Warning DB.png Important
From this major release OpenSTLinux v5.0.0, only op-tee boot scheme is supported (no more trusted boot scheme).

5.2.2. Linux® kernel[edit | edit source]

New component release tag 6.1-stm32mp-r1 is available, rebased on official Linux® kernel v6.1.28.

Changes are:‎

  • Storage
    • SDMMC: Implement "SDIO In band interrupt Mode"
    • NAND: "EDO mode" removed from driver
  • Visual
    • GPU: library v6.4.13 integration
    • [DCMI/OV5640] : supported without DMA-MDMA chaining
    • [GC2145]  : more raw Bayer formats camera sensor supported
  • LSI
    • SmartCard support
  • HSI
    • USB gadget : remove RNDIS and enable NCM
    • Enable OnBoard HUB feature
  • Security
    • OP-TEE SCMI: Add thread provisioning
    • SCMI: Move mailbox to Linux memory
    • Firewall bus for peripheral access control (ETZPC)
  • Coprocessor
    • Authenticated coprocessor firmware: Improve load, by suppressing one extra copy of the firmware image.
  • Core
    • Watchdog switch to "ARM SMC watchdog" by default (IWDG2 no more used)
  • Minor fixes

5.2.3. U-Boot[edit | edit source]

New component release tag 2022.10-stm32mp-r1 is available, rebased on official U-Boot v2022.10.

Changes are:

  • Use U-Boot device tree to configure MTD partitions and remove usage of "mtdparts" function
  • Use" op-tee shm" for OP-TEE SCMI communication
  • Add "Arm SMC" watchdog driver
  • Add ETZPC system bus
  • Add USB onboard HUB driver for ST boards
  • Improve ENV in MMC support
  • Update stm32prog command to suport new GUID types
  • Other minor updates

5.2.4. TF-A[edit | edit source]

New component release tag 2.8-stm32mp-r1 is available, rebased on official TF-A v2.8 (LTS tag lts-v2.8.6).

Changes are:

  • Remove SP_MIN as secure world runtime service firmware. Those services are provided from ecosystem release v5.0.0 More info.png through OP-TEE
  • Default build with OP-TEE in DDR for STM32MP15
  • Always boot at 650MHz in BL2
  • Clear and lock the fip-edmk fuse when outing BL2
  • Manage quad enable bit on SPI NAND
  • MISRA corrections
  • Several bug fixes in low-power, RCC, BSEC, NAND, device tree, UART, watchdog & SSP
  • Minor fixes

5.2.5. OP-TEE[edit | edit source]

New component release tag 3.19.0-stm32mp-r1 is available, rebased on official OP_TEE OS 3.19.0.

Changes are:

  • Implementation of a secure watchdog
  • Use of watchdog framework
  • Fix IWDG early-interrupt
  • Allow device-tree RNG configuration + fixes
  • Move SCMI mailbox to Linux/U-Boot memory
  • New SCMI thread provisioning
  • Low-power fixes
  • Full clock tree is applied in OP-TEE to allow clock tree update over FOTA
  • Support bit offset for NVMEM
  • Reworked OCALL to OCALL2
  • For STM32MP15x lines More info.png:
    • OP-TEE build by default in DDR (pager mecanism OFF):
      • Replace the previous TF-A SP_MIN system services configuration by default
      • Pager configuration can be restored using pager (refer to OP-TEE core configuration) for a full set of secure services
  • Minor Fixes

6. Release change notification[edit | edit source]

OpenSTLinux attention points to switch from ecosystem release v4.1.0 to ecosystem release v5.0.0 More info.png are documented in STM32 MPU OpenSTLinux release changes notification – v5.0.0 article.

7. Recommendations for use[edit | edit source]

7.1. Safe use[edit | edit source]

  • Flash programming and boot from all supported flash devices: SDCard, eMMC, ONFI NAND and NOR flash memories.
  • Develop Linux® applications, libraries, kernel modules based on OpenSTLinux delivery.
  • Develop coprocessor Cube applications based on STM32CubeMP1 delivery.
  • Develop boards based on STM32MP1 series.
  • Prototype applications based on ST boards.

7.2. Non-recommended use[edit | edit source]

  • None

8. Restrictions[edit | edit source]

Warning DB.png Important

The OPTEE-OS device tree file generated for STM32MP135F-DK More info green.png board by STM32CubeMX v6.9.0 doesn't allow to boot with the source code of the minor releases v5.0.3, v5.0.2 and v5.0.1. There is no problem for boards with STM32MP15x lines More info.png.
For STM32MP13x lines More info.png boards, STM32CubeMX v6.9.0 is compatible only with openstlinux-6.1-yocto-mickledore-mp1-v23.06.21.
To force compatibility, a patch must added in the addons USER CODE section of the OPTEE-OS dts file:

  • Either directly in the generated code
  • Or in the "device type file" template STM32CubeMX/db/templates/DeviceTree/dtsBoards/STM32MP1/STM32MP135F-DK/optee-os\stm32mp135f-stm32mp135f-dk-mx.dts of STM32CubeMX install.

The corresponding patch is available in GitHub for stm32mp135f-dk.dts here.

  • Camera resolution limited to 320*240 / 15 fps on STM32MP157F-EV1 Evaluation board More info green.png: limitation when using DCMI configuration (correction under implementation and will be delivered soon),
  • The partition layout always keeps the Firmware Update related partitions even if machine feature fw-update is disabled. To optimize the partition layout without Firmware Update feature, modifications are needed on flashlayout file generation and also on U-Boot source code in case of MTD partitions (storage mapping is hardcoded for MTD partitions, see How_to_configure_U-Boot_for_your_board#MTD_partitions)

9. Minor release updates[edit | edit source]

STMicroelectronics regularly delivers corrections through github® components which are U-Boot, OP-TEE, TF-A, Linux kernel.
The corrections can be incorporated into the Developer Package (refer to STM32MPU Developer Package) or Distribution Package (see below).

Two possibilities exist to update a Distribution Package:

  • Update your existing Distribution Package:
Switch your Distribution Package to # github® mode .
  1. Use the devtool modify <recipe name> command to set up an environment. It fetches and unpacks the source code.
  2. In the extracted source code, use a git command such as git checkout -b WORK <github® TAG> to point to a new revision of the component.
More rarely, STMicroelectronics also delivers fixes on layers through github®. These changes can be integrated (via git commands: git checkout -b WORK <github® commit SHA1>) into the local STM32MPU Distribution Package environment. See below the github® links of the quoted layers :
  • Get a new Distribution Package:
Refer to Installing_the_OpenSTLinux_distribution page for installing instructions, and use the repo command given for the minor version below, if it exists.

9.1. v5.0.3[edit | edit source]

  • Add fastboot support on SD card and eMMC
  • A new flashlayout files with -fastboot suffix is automatically generated, when building the distribution, in a dedicated fastboot directory for stm32mp1 machine (images/stm32mp1/flashlayout_st-image-weston/fastboot/). It selects the U-Boot binaries generated for the supported MMC device(s). Refer to How_to_configure_U-Boot_to_support_Fastboot_mode for more details. This feature is working with PRG-TOOLBOX-FB.
  • Restriction: in case of Developer Package building with SDK usage, u-boot-stm32mp must be built before tf-a-stm32mp or optee-os-stm32mp.
Layer name github® commit SHA1 reference
meta-st-stm32mp 5e5b99ba054276d10b4afec2b80962de3455b0a1
  • New manifest tag available to get the release: openstlinux-6.1-yocto-mickledore-mp1-v24.03.13
repo init -u https://github.com/STMicroelectronics/oe-manifest -b refs/tags/openstlinux-6.1-yocto-mickledore-mp1-v24.03.13
repo sync

9.2. v5.0.2[edit | edit source]

  • Remove limitation of unique DT for Kernel FIT image
  • Adapt signature fragment configuration and adapt FIT devicetree generation at U-Boot level
  • Yocto classes:SIGN-STM32MP: restrict usage to target recipe only
  • CMSIS-SVD: switch to branch main
  • BSP and OpenSTLinux update:
Layer name github® commit SHA1 reference
meta-st-stm32mp b0af85c466d96d5f794b125b2542b7a0ea4c91de
meta-st-openstlinux 6526808593a93f5da31dbb05dd5b0bc3d27d4d2c
meta-st-stm32mp-addons 85284b954ca36f00f18a5cc247d3dbf2cebcf372
meta-st-scripts 83f470a922383024c1f11086a2a7901f89f98098
  • New manifest tag available to get the release: openstlinux-6.1-yocto-mickledore-mp1-v23.11.15
repo init -u https://github.com/STMicroelectronics/oe-manifest -b refs/tags/openstlinux-6.1-yocto-mickledore-mp1-v23.11.15
repo sync

9.3. v5.0.1[edit | edit source]

  • Update to Yocto Project 4.2.2 (2023-07.20-mickledore)
  • New DMA chaining for DCMI
  • BSPs and Userland maturation with an amount of 34 fixes delivered (TF-A, u-Boot, OP-TEE, Linux Kernel and User space)
  • Restriction: signed FIT image does not boot, issue identified, and a commit with the correction will be available on meta-st-stm32mp
  • BSP update:
Layer name github® commit SHA1 reference
meta-st-stm32mp 6d84bde08c03ec0184af08c2d3875fe5a334587e
meta-st-openstlinux b07a33f1f637693924501dbdf4abdd091402acf1
  • Component update:
Component Recipe name new github® release
tf-a tf-a-stm32mp v2.8-stm32mp-r1.1
u-boot u-boot-stm32mp v2022.10-stm32mp-r1.1
kernel linux-stm32mp v6.1-stm32mp-r1.1
optee-os optee-os-stm32mp 3.19.0-stm32mp-r1.1"
  • New manifest tag available to get the release: openstlinux-6.1-yocto-mickledore-mp1-v23.10.18
repo init -u https://github.com/STMicroelectronics/oe-manifest -b refs/tags/openstlinux-6.1-yocto-mickledore-mp1-v23.10.18
repo sync

10. How to get started with openstlinux-6.1-yocto-mickledore-mp1-v23.06.21[edit | edit source]

Refer to How to download the software and start with this release?

11. Associated tools[edit | edit source]

Refer to the Referenced tools release notes .

12. Yocto features enabled in the delivery[edit | edit source]

OpenEmbedded[3] build framework engine is named OE-Core.
OpenSTLinux distribution is based on the build framework OpenEmbedded, and can be configured thanks to a mechanism named "features" (machine features, distribution features, ...).

Depending on the features enabled, the resulting distribution can have more capabilities or software embedded.
For example, if the Wifi is enabled then the Wifi software and drivers are present on the filesystem and the Wifi can be used.

12.1. Machine features[edit | edit source]

The variable MACHINE_FEATURES specifies the list of hardware features the machine is capable of supporting.
These features (MACHINE_FEATURES) are defined inside the machine configuration .

Machine feature Purpose
alsa Include ALSA support (OSS compatibility kernel modules installed if available).
autoresize Add support of autoresize through InitRD
bluetooth Add Broadcom43430 (Bluetooth) firmware to the filesystem
(STM32MP135x-DK Discovery kit More info green.png and STM32MP157x-DKx Discovery kit More info green.png)
ext2 Add Second Extended File System support
fip Enable Firmware In Package (FIP) packaging format
fw-update Enable Firmware update feature
gpu Add GPU support (if EULA is accepted) (STM32MP157 line More info.png only)
initrd Enable Intial ramdisk building
m4copro Add m4projects to userfs (STM32MP15x lines More info.png only)
optee Add OP-TEE Secure part
pci Add Peripheral Component Interconnect peripheral support
rtc Add Real Time Clock peripheral support
screen Add display screen peripheral support
splashscreen Add splashscreen to U-Boot
tpm2 Add Trusted Platform Module peripheral support
usbg0 Add G0 Firmware for USB support
usbgadget Enable USB Gadget feature
usbhost Enable USB Host feature
watchdog Add watchdog support and binaries
wifi Add Broadcom43430 (wifi) firmware to the filesystem
(STM32MP135x-DK Discovery kit More info green.png and STM32MP157x-DKx Discovery kit More info green.png)

12.2. Distribution features[edit | edit source]

The variable DISTRO_FEATURES specifies the list of software features present in the distribution.
These features (DISTRO_FEATURES) are defined inside the distribution configuration .

Distribution feature Purpose
alsa Include ALSA support (OSS compatibility kernel modules installed if available).
argp
autoresize Add support of userfs auto resize feature in OpenSTLinux
bluetooth Include Bluetooth support
bluez5 Add Bluetooth stack
efi Add userland EFI tools
ext2 Add Second Extended File System support
ext4 Add Fourth Extended File System support
gobject-introspection-data Enable GObject Introspection, project for providing machine readable introspection data of the API of C libraries.
gplv3 Add gplv3 binaries in OpenSTLinux
gstreamer Add gstreamer tools in filesystem
initrd Add ramdisk
ipv4 Add ipv4 support
ipv6 Add ipv6 support
kde Add several tools (e.g. cups, fontconfig, ...) to the filesystem
largefile Enable large file support
ldconfig Include support for ldconfig and ld.so.conf on the target
multiarch Enable 64 bits BFD (Binary File Descriptor)
nfs Include NFS client support (for mounting NFS exports on device).
opengl Include the Open Graphics Library
optee Install tee service on the filesystem
pam Enable Pluggable Authentication Module
pci Add pci support
pulseaudio Network-capable sound server program
splashscreen Add U-Boot splashscreen
systemd Use systemd as init service
usbgadget USB Gadget Device support (for USB networking/serial/storage)
usbhost USB Host support (allows to connect external keyboard, mouse, storage, network etc)
wayland Add Wayland support
wifi WiFi support
xattr Add "Extended Attributes" support for filesystem
zeroconf Add zeroconf package to set up a ad-hoc network

12.3. Bootscheme labels[edit | edit source]

The variable BOOTSCHEME_LABELS defines which kind of boot is supported on the board.
These settings (BOOTSCHEME_LABELS) are defined inside the machine configuration .

Bootscheme label Purpose
optee Add op-tee in bootscheme

12.4. Bootdevice labels[edit | edit source]

The variable BOOTDEVICE_LABELS defines which kind of mass storage OpenSTLinux can programmed.
These settings (BOOTDEVICE_LABELS ) are defined inside the machine configuration .

Bootdevice label Purpose
emmc Add boot on emmc device
nand-4-256 Add boot on NAND device
nor-sdcard Add boot stage on NOR device and the filesystem on SD-Card
sdcard Add boot on SD-Card