STM32MP15 Discovery kits - Starter Package

Applicable for STM32MP15x lines

This article shows how to start up a STM32MP157x-DKx Discovery kit More info green.png (flexible and complete development platform for the STM32MP15 microprocessor devices). It is valid for STM32MP157A-DK1 Discovery kit Warning.png, STM32MP157C-DK2 Discovery kit Warning.png, STM32MP157D-DK1 Discovery kit More info green.png and STM32MP157F-DK2 Discovery kit More info green.png; the part numbers are specified in the STM32MP15 microprocessor part numbers article.

It lists the required material, points to the board features description, and gives the step-by-step process to set up the system.

Finally, it proposes to run some basic use cases and to discover some of the board capabilities.

1 Starter Package content[edit]

If you are not yet familiar with the STM32MPU Embedded Software distribution and its Packages, please read the following articles:

If you are already familiar with the Starter Package for the STM32MPU Embedded Software distribution, the fast links to essential commands might be of interest.


To sum up, this Starter Package provides:

  • the software image for the STM32MPU Embedded Software distribution, which includes:
    • the binaries for the OpenSTLinux distribution
    • one or more firmware example(s) for the STM32Cube MPU Package
  • the (STM32CubeProgrammer) tool to install this image on the STM32MP157x-DKx Discovery kit More info green.png
Components of the Starter Package

2 Starter Package step-by-step overview[edit]

The steps to get the STM32MP157x-DKx Discovery kit More info green.png up and running, are:
Checking the material
Assembling the board
Installing the tools
Downloading the image and flashing it on the board
Booting the board


Once these steps are achieved, you are able to:

3 Checking the material[edit]

Mandatory

PC Linux or Windows operating systems. See PC prerequisites for more details on the required configurations.
STM32MP157x-DKx Discovery kit Flexible and complete development platform for the STM32MP15 microprocessor device including:
  • a MB1272 motherboard
  • a MB1407 daughterboard (480x800 pixels DSI display): only for the STM32MP157C-DK2 Warning.png and STM32MP157F-DK2 More info green.png Discovery kits
Power supply Including:
  • a USB Type-C cable (delivered in the packages)
  • a USB Type-C charger (5 V, 3 A) (not delivered in the packages)
MicroSD card Populated with OpenSTLinux distribution (Linux software), and providing extra storage capacity. A 2-Gbyte minimum microSD card is needed.
USB micro-B cable In order to connect the STM32MP157x-DKx Discovery kit to the PC through the USB micro-B (ST-LINK/V2-1) connector
USB Type-C cable In order to connect the STM32MP157x-DKx Discovery kit to an USB OTG device through the USB Type-C connector


Optional

USB keyboard and mouse Thanks to the USB type A connectors, the STM32MP157x-DKx Discovery kit can be equipped with a full-size keyboard and mouse
Ethernet cable In order to connect the STM32MP157x-DKx Discovery kit to a network through the RJ45 connector
HDMI cable In order to connect the STM32MP157x-DKx Discovery kit to an HDMI monitor (or TV) through the HDMI connector

Optional, more devices and extension boards might be plugged to the STM32MP157x-DKx Discovery kit thanks to expansion connectors such as:

  • the GPIO expansion connector
  • the Arduino Uno connector
  • ...



The following figure shows the optional material (not included in STM32MP157x-DKx Discovery kit More info green.png package), that is used with this Starter Package.

Recommended material for this Starter Package

4 Assembling the board[edit]

The STM32MP157x-DKx Discovery kits packages (STM32MP157A-DK1 Warning.png, STM32MP157D-DK1 More info green.png, STM32MP157C-DK2 Warning.png and STM32MP157F-DK2 More info green.png) are delivered assembled, and contain the items listed below. A USB Type-C cable is also included.

Please note that;

  • the STM32MP157A-DK1 Warning.png and STM32MP157D-DK1 More info green.png Discovery kits neither include the "WLAN + Bluetooth" component (muRata LBEE5KL1DX), nor the MB1407 daughterboard DSI display
  • the STM32MP157C-DK2 Warning.png and STM32MP157F-DK2 More info green.png Discovery kits include the "WLAN + Bluetooth" component (muRata LBEE5KL1DX), and the MB1407 daughterboard DSI display
Position Description
1 MB1272 motherboard ("WLAN + Bluetooth" component included only for the STM32MP157C-DK2 Warning.png and STM32MP157F-DK2 More info green.png Discovery kits)
2 MB1407 daughterboard DSI display (480x800 pixels): only for the STM32MP157C-DK2 Warning.png and STM32MP157F-DK2 More info green.png Discovery kits
3 microSD card


STM32MP157x-DKx Discovery kit assembled
STM32MP157C-DK2 Discovery kit shown here (picture not contractual)


5 Installing the tools[edit]

5.1 Installing the STM32CubeProgrammer tool[edit]

STM32CubeProgrammer for Linux® host PC STM32CubeProgrammer for Windows® host PC
Download

Version v2.15.0

  • Go on st.com to download the STM32CubeProgrammer software
  • Download the archive file on your host PC in a temporary directory
  • Uncompress the archive file to get the STM32CubeProgrammer installers:


unzip en.stm32cubeprog.zip

Installation
  • Execute the Linux installer, which guides you through the installation process.
$> ./SetupSTM32CubeProgrammer-2.15.0.linux
  • The path to the STM32CubeProgrammer binary must be added to the PATH environment variable
    • either in each Terminal program in which the STM32CubeProgrammer binary needs to be used, using the following command:
$> export PATH=<my STM32CubeProgrammer install directory>/bin:$PATH
  • or once for all by creating a link to the STM32CubeProgrammer binary in a directory already present in PATH. For example, if "/home/bin" is in the PATH environment variable, run the following command:
$> ln -s <my STM32CubeProgrammer install directory>/bin/STM32_Programmer_CLI /home/bin/STM32_Programmer_CLI
  • Execute the Windows installer, which guides you through the installation process.
User manual
Detailed release note
  • Details about the content of this tool version are available from ST web site at Release Note .


5.2 Preparing the USB serial link for flashing[edit]

It is recommended to use the USB (in DFU mode) for flashing rather than the UART, which is too slow.

Below indications on how to install the USB in DFU mode under Linux and Windows OS, respectively.

  • For Linux host PC or Windows host PC with VMWare:

The libusb1.0 package (including USB DFU mode) must be installed to be able to connect to the board via the USB port. This is achieved by typing the following command from the host PC terminal:

 sudo apt-get install libusb-1.0-0

To allow STM32CubeProgrammer to access the USB port through low-level commands, proceed as follows:

 cd <your STM32CubeProgrammer install directory>/Drivers/rules 
sudo cp *.* /etc/udev/rules.d/
  • For Windows host PC:

Run the “STM32 Bootloader.bat” file to install the STM32CubeProgrammer DFU driver and activate the STM32 microprocessor device in USB DFU mode. This driver (installed by STM32 Bootloader.bat) is provided within the STM32CubeProgrammer release package. It is located in the DFU driver folder, \Drivers\DFU_Driver.

In case of issue, refer to How to proceed when the DFU driver installation fails on Windows host PC.

To validate the installation, the DFU driver functionality can be verified by following the FAQ instructions provided in how to check if the DFU driver is functional.


6 Downloading the image and flashing it on the board[edit]

6.1 Image download[edit]

Warning white.png Warning
Only microSD cards SanDisk Class 10 and UHS Speed Class 1 are verified. Others are not recommended.
  • The STM32MP1 image (binaries) is delivered through one tarball file named
    • en.flash-stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21.tar.gz for STM32MP135x-DK More info green.png, STM32MP157x-DKx More info green.png and STM32MP157x-EV1 More info green.png

  • Download and install the STM32MP1 image (binaries):

The software package is provided AS IS, and by downloading it, you agree to be bound to the terms of the software license agreement (SLA0048). The detailed content licenses can be found here.

STM32MP1 Starter Package image - STM32MP1-Ecosystem-v5.0.0 release
Download
  • Go on st.com to download the STM32MP1 Starter Package image, en.flash-stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21.tar.gz file.
Installation
$ cd <working directory path>/Starter-Package
  • Download the tarball file in this directory
  • Uncompress the tarball file to get the binaries for the different partitions of the image, and the Flash layout files:
$ tar xvf en.flash-stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21.tar.gz
Release note

Details of the content of this software package are available in the associated STM32 MPU OpenSTLinux release note.
Archive box.png If you are interested in older releases, please have a look into the section Archives

  • The binaries and the Flash layout files are in the <Starter Package installation directory>/stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21/images/stm32mp1/ directory:
stm32mp1
├── arm-trusted-firmware                       TF-A binaries for FSBL partitions and supported boot chains
│   ├── metadata.bin                           Meta data binary for METADATA partition for the supported boards
│   ├── tf-a-stm32mp135f-dk-sdcard.stm32       TF-A binary for FSBL partition (microSD card boot device) for STM32MP135F-DK → STM32MP13 Discovery kits
│   ├── tf-a-stm32mp135f-dk-uart.stm32         TF-A binary for uart serial boot mode (STM32CubeProgrammer) for STM32MP135F-DK → STM32MP13 Discovery kits
│   ├── tf-a-stm32mp135f-dk-usb.stm32          TF-A binary for usb serial boot mode (STM32CubeProgrammer) for STM32MP135F-DK → STM32MP13 Discovery kits
│   ├── tf-a-stm32mp157a-dk1-sdcard.stm32      TF-A binary for FSBL partition (microSD card boot device) for STM32MP157A-DK1 → STM32MP15 Discovery kits
│   ├── tf-a-stm32mp157a-dk1-uart.stm32        TF-A binary for uart serial boot mode (STM32CubeProgrammer) for STM32MP157A-DK1 → STM32MP15 Discovery kits
│   ├── tf-a-stm32mp157a-dk1-usb.stm32         TF-A binary for usb serial boot mode (STM32CubeProgrammer) for STM32MP157A-DK1 → STM32MP15 Discovery kits
│   ├── tf-a-stm32mp157a-ev1-emmc.stm32        TF-A binary for FSBL partition (eMMC boot device) for STM32MP157A-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157a-ev1-nand.stm32        TF-A binary for FSBL partition (NAND boot device) for STM32MP157A-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157a-ev1-nor.stm32         TF-A binary for FSBL partition (NOR boot device) for STM32MP157A-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157a-ev1-sdcard.stm32      TF-A binary for FSBL partition (microSD card boot device) for STM32MP157A-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157a-ev1-uart.stm32        TF-A binary for uart serial boot mode (STM32CubeProgrammer) for STM32MP157A-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157a-ev1-usb.stm32         TF-A binary for usb serial boot mode (STM32CubeProgrammer) for STM32MP157A-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157c-dk2-sdcard.stm32      TF-A binary for FSBL partition (microSD card boot device) for STM32MP157C-DK2 → STM32MP15 Discovery kits
│   ├── tf-a-stm32mp157c-dk2-uart.stm32        TF-A binary for uart serial boot mode (STM32CubeProgrammer) for STM32MP157C-DK2 → STM32MP15 Discovery kits
│   ├── tf-a-stm32mp157c-dk2-usb.stm32         TF-A binary for usb serial boot mode (STM32CubeProgrammer) for STM32MP157C-DK2 → STM32MP15 Discovery kits
│   ├── tf-a-stm32mp157c-ed1-emmc.stm32        TF-A binary for FSBL partition (eMMC boot device) for STM32MP157C-ED1 → STM32MP15 Evaluation daughter boards
│   ├── tf-a-stm32mp157c-ed1-sdcard.stm32      TF-A binary for FSBL partition (microSD card boot device) for STM32MP157C-ED1 → STM32MP15 Evaluation daughter boards
│   ├── tf-a-stm32mp157c-ed1-uart.stm32        TF-A binary for uart serial boot mode (STM32CubeProgrammer) for STM32MP157C-ED1 → STM32MP15 Evaluation daughter boards
│   ├── tf-a-stm32mp157c-ed1-usb.stm32         TF-A binary for usb serial boot mode (STM32CubeProgrammer) for STM32MP157C-ED1 → STM32MP15 Evaluation daughter boards
│   ├── tf-a-stm32mp157c-ev1-emmc.stm32        TF-A binary for FSBL partition (eMMC boot device) for STM32MP157C-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157c-ev1-nand.stm32        TF-A binary for FSBL partition (NAND boot device) for STM32MP157C-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157c-ev1-nor.stm32         TF-A binary for FSBL partition (NOR boot device) for STM32MP157C-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157c-ev1-sdcard.stm32      TF-A binary for FSBL partition (microSD card boot device) for STM32MP157C-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157c-ev1-uart.stm32        TF-A binary for uart serial boot mode (STM32CubeProgrammer) for STM32MP157C-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157c-ev1-usb.stm32         TF-A binary for usb serial boot mode (STM32CubeProgrammer) for STM32MP157C-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157d-dk1-sdcard.stm32      TF-A binary for FSBL partition (microSD card boot device) for STM32MP157D-DK1 → STM32MP15 Discovery kits
│   ├── tf-a-stm32mp157d-dk1-uart.stm32        TF-A binary for serial boot mode (STM32CubeProgrammer) for STM32MP157D-DK1 → STM32MP15 Discovery kits
│   ├── tf-a-stm32mp157d-dk1-usb.stm32         TF-A binary for usb serial boot mode (STM32CubeProgrammer) for STM32MP157D-DK1 → STM32MP15 Discovery kits
│   ├── tf-a-stm32mp157d-ev1-emmc.stm32        TF-A binary for FSBL partition (eMMC boot device) for STM32MP157D-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157d-ev1-nand.stm32        TF-A binary for FSBL partition (NAND boot device) for STM32MP157D-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157d-ev1-nor.stm32         TF-A binary for FSBL partition (NOR boot device) for STM32MP157D-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157d-ev1-sdcard.stm32      TF-A binary for FSBL partition (microSD card boot device) for STM32MP157D-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157d-ev1-uart.stm32        TF-A binary for uart serial boot mode (STM32CubeProgrammer) for STM32MP157D-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157d-ev1-usb.stm32         TF-A binary for usb serial boot mode (STM32CubeProgrammer) for STM32MP157D-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157f-dk2-sdcard.stm32      TF-A binary for FSBL partition (microSD card boot device) for STM32MP157F-DK2 → STM32MP15 Discovery kits
│   ├── tf-a-stm32mp157f-dk2-uart.stm32        TF-A binary for uart serial boot mode (STM32CubeProgrammer) for STM32MP157F-DK2 → STM32MP15 Discovery kits
│   ├── tf-a-stm32mp157f-dk2-usb.stm32         TF-A binary for usb serial boot mode (STM32CubeProgrammer) for STM32MP157F-DK2 → STM32MP15 Discovery kits
│   ├── tf-a-stm32mp157f-ed1-emmc.stm32        TF-A binary for FSBL partition (eMMC boot device) for STM32MP157F-ED1 → STM32MP15 Evaluation daughter boards
│   ├── tf-a-stm32mp157f-ed1-sdcard.stm32      TF-A binary for FSBL partition (microSD card boot device) for STM32MP157F-ED1 → STM32MP15 Evaluation daughter boards
│   ├── tf-a-stm32mp157f-ed1-uart.stm32        TF-A binary for uart serial boot mode (STM32CubeProgrammer) for STM32MP157F-ED1 → STM32MP15 Evaluation daughter boards
│   ├── tf-a-stm32mp157f-ed1-usb.stm32         TF-A binary for usb serial boot mode (STM32CubeProgrammer) for STM32MP157F-ED1 → STM32MP15 Evaluation daughter boards
│   ├── tf-a-stm32mp157f-ev1-emmc.stm32        TF-A binary for FSBL partition (eMMC boot device) for STM32MP157F-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157f-ev1-nand.stm32        TF-A binary for FSBL partition (NAND boot device) for STM32MP157F-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157f-ev1-nor.stm32         TF-A binary for FSBL partition (NOR boot device) for STM32MP157F-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157f-ev1-sdcard.stm32      TF-A binary for FSBL partition (microSD card boot device) for STM32MP157F-EV1 → STM32MP15 Evaluation boards
│   ├── tf-a-stm32mp157f-ev1-uart.stm32        TF-A binary for uart serial boot mode (STM32CubeProgrammer) for STM32MP157F-EV1 → STM32MP15 Evaluation boards
│   └── tf-a-stm32mp157f-ev1-usb.stm32         TF-A binary for usb serial boot mode (STM32CubeProgrammer) for STM32MP157F-EV1 → STM32MP15 Evaluation boards
├── fip                                        FIP binaries for FIP partitions and supported boot chains
│   ├── fip-stm32mp135f-dk-optee.bin           FIP binary for FIP partition (optee boot chain) for STM32MP135F-DK → STM32MP13 Discovery kits
│   ├── fip-stm32mp157a-dk1-optee.bin          FIP binary for FIP partition (optee boot chain) for STM32MP157A-DK1 → STM32MP15 Discovery kits
│   ├── fip-stm32mp157a-ev1-optee.bin          FIP binary for FIP partition (optee boot chain) for STM32MP157A-EV1 → STM32MP15 Evaluation boards
│   ├── fip-stm32mp157c-dk2-optee.bin          FIP binary for FIP partition (optee boot chain) for STM32MP157C-DK2 → STM32MP15 Discovery kits
│   ├── fip-stm32mp157c-ed1-optee.bin          FIP binary for FIP partition (optee boot chain) for STM32MP157C-ED1 → STM32MP15 Evaluation daughter boards
│   ├── fip-stm32mp157c-ev1-optee.bin          FIP binary for FIP partition (optee boot chain) for STM32MP157C-EV1 → STM32MP15 Evaluation boards
│   ├── fip-stm32mp157d-dk1-optee.bin          FIP binary for FIP partition (optee boot chain) for STM32MP157D-DK1 → STM32MP15 Discovery kits
│   ├── fip-stm32mp157d-ev1-optee.bin          FIP binary for FIP partition (optee boot chain) for STM32MP157D-EV1 → STM32MP15 Evaluation boards
│   ├── fip-stm32mp157f-dk2-optee.bin          FIP binary for FIP partition (optee boot chain) for STM32MP157F-DK2 → STM32MP15 Discovery kits
│   ├── fip-stm32mp157f-ed1-optee.bin          FIP binary for FIP partition (optee boot chain) for STM32MP157F-ED1 → STM32MP15 Evaluation daughter boards
│   └── fip-stm32mp157f-ev1-optee.bin          FIP binary for FIP partition (optee boot chain) for STM32MP157F-EV1 → STM32MP15 Evaluation boards
├── flashlayout_st-image-weston                                 Flash layout files (description of the partitions) for the supported boot chains on supported boot devices and boards
│   ├── extensible                                              Flash layout files for microSD card boot device with no userfs partition but a rootfs partition extended to microSD card size
│   │   ├── FlashLayout_sdcard_stm32mp135f-dk-optee.tsv         (recommended setup for package repository service) microSD card boot device for STM32MP135F-DK → STM32MP13 Discovery kits
│   │   ├── FlashLayout_sdcard_stm32mp157a-dk1-extensible.tsv   (recommended setup for package repository service) microSD card boot device with rootfs partition extended to microSD card size for STM32MP157A-DK1 → STM32MP15 Discovery kits
│   │   ├── FlashLayout_sdcard_stm32mp157c-dk2-extensible.tsv   (recommended setup for package repository service) microSD card boot device with rootfs partition extended to microSD card size for STM32MP157C-DK2 → STM32MP15 Discovery kits
│   │   ├── FlashLayout_sdcard_stm32mp157d-dk1-extensible.tsv   (recommended setup for package repository service) microSD card boot device with rootfs partition extended to microSD card size for STM32MP157D-DK1 → STM32MP15 Discovery kits
│   │   └── FlashLayout_sdcard_stm32mp157f-dk2-extensible.tsv   (recommended setup for package repository service) microSD card boot device with rootfs partition extended to microSD card size for STM32MP157F-DK2 → STM32MP15 Discovery kits
│   └── optee                                                   Flash layout files for optee boot chain
│       ├── FlashLayout_emmc_stm32mp157a-ev1-optee.tsv          eMMC boot device for STM32MP157A-EV1 → STM32MP15 Evaluation boards
│       ├── FlashLayout_emmc_stm32mp157c-ed1-optee.tsv          eMMC boot device for STM32MP157C-ED1 → STM32MP15 Evaluation daughter boards
│       ├── FlashLayout_emmc_stm32mp157c-ev1-optee.tsv          eMMC boot device for STM32MP157C-EV1 → STM32MP15 Evaluation boards
│       ├── FlashLayout_emmc_stm32mp157d-ev1-optee.tsv          eMMC boot device for STM32MP157D-EV1 → STM32MP15 Evaluation boards
│       ├── FlashLayout_emmc_stm32mp157f-ed1-optee.tsv          eMMC boot device for STM32MP157F-ED1 → STM32MP15 Evaluation daughter boards
│       ├── FlashLayout_emmc_stm32mp157f-ev1-optee.tsv          eMMC boot device for STM32MP157F-EV1 → STM32MP15 Evaluation boards
│       ├── FlashLayout_nand-4-256_stm32mp157a-ev1-optee.tsv    NAND boot device for STM32MP157A-EV1 → STM32MP15 Evaluation boards
│       ├── FlashLayout_nand-4-256_stm32mp157c-ev1-optee.tsv    NAND boot device for STM32MP157C-EV1 → STM32MP15 Evaluation boards
│       ├── FlashLayout_nand-4-256_stm32mp157d-ev1-optee.tsv    NAND boot device for STM32MP157D-EV1 → STM32MP15 Evaluation boards
│       ├── FlashLayout_nand-4-256_stm32mp157f-ev1-optee.tsv    NAND boot device for STM32MP157F-EV1 → STM32MP15 Evaluation boards
│       ├── FlashLayout_nor-sdcard_stm32mp157a-ev1-optee.tsv    NOR boot device and microSD card device for STM32MP157A-EV1 → STM32MP15 Evaluation boards
│       ├── FlashLayout_nor-sdcard_stm32mp157c-ev1-optee.tsv    NOR boot device and microSD card device for STM32MP157C-EV1 → STM32MP15 Evaluation boards
│       ├── FlashLayout_nor-sdcard_stm32mp157d-ev1-optee.tsv    NOR boot device and microSD card device for STM32MP157D-EV1 → STM32MP15 Evaluation boards
│       ├── FlashLayout_nor-sdcard_stm32mp157f-ev1-optee.tsv    NOR boot device and microSD card device for STM32MP157F-EV1 → STM32MP15 Evaluation boards
│       ├── FlashLayout_sdcard_stm32mp135f-dk-optee.tsv         (recommended setup) microSD card boot device for STM32MP135F-DK → STM32MP13 Discovery kits
│       ├── FlashLayout_sdcard_stm32mp157a-dk1-optee.tsv        microSD card boot device for STM32MP157A-DK1 → STM32MP15 Discovery kits
│       ├── FlashLayout_sdcard_stm32mp157a-ev1-optee.tsv        microSD card boot device for STM32MP157A-EV1 → STM32MP15 Evaluation boards
│       ├── FlashLayout_sdcard_stm32mp157c-dk2-optee.tsv        microSD card boot device for STM32MP157C-DK2 → STM32MP15 Discovery kits
│       ├── FlashLayout_sdcard_stm32mp157c-ed1-optee.tsv        microSD card boot device for STM32MP157C-ED1 → STM32MP15 Evaluation daughter boards
│       ├── FlashLayout_sdcard_stm32mp157c-ev1-optee.tsv        microSD card boot device for STM32MP157C-EV1 → STM32MP15 Evaluation boards
│       ├── FlashLayout_sdcard_stm32mp157d-dk1-optee.tsv        microSD card boot device for STM32MP157D-DK1 → STM32MP15 Discovery kits
│       ├── FlashLayout_sdcard_stm32mp157d-ev1-optee.tsv        microSD card boot device for STM32MP157D-EV1 → STM32MP15 Evaluation boards
│       ├── FlashLayout_sdcard_stm32mp157f-dk2-optee.tsv        microSD card boot device for STM32MP157F-DK2 → STM32MP15 Discovery kits
│       ├── FlashLayout_sdcard_stm32mp157f-ed1-optee.tsv        microSD card boot device for STM32MP157F-ED1 → STM32MP15 Evaluation daughter boards
│       └── FlashLayout_sdcard_stm32mp157f-ev1-optee.tsv        microSD card boot device for STM32MP157F-EV1 → STM32MP15 Evaluation boards
├── scripts
│   └── create_sdcard_from_flashlayout.sh
├── st-image-bootfs-openstlinux-weston-stm32mp1.ext4                            Binary for bootfs partition on eMMC and microSD card devices
├── st-image-bootfs-openstlinux-weston-stm32mp1.manifest
├── st-image-userfs-openstlinux-weston-stm32mp1.ext4                            Binary for userfs partition on eMMC and microSD card devices
├── st-image-userfs-openstlinux-weston-stm32mp1.manifest
├── st-image-vendorfs-openstlinux-weston-stm32mp1.ext4                          Binary for vendorfs partition on eMMC and microSD card devices
├── st-image-vendorfs-openstlinux-weston-stm32mp1.manifest
├── st-image-weston-openstlinux-weston-stm32mp1.ext4                            Binary for rootfs partition on eMMC and microSD card devices
├── st-image-weston-openstlinux-weston-stm32mp1.license
├── st-image-weston-openstlinux-weston-stm32mp1-license_content.html            License summary for all packages needed to feed all partitions
├── st-image-weston-openstlinux-weston-stm32mp1.manifest
└── st-image-weston-openstlinux-weston-stm32mp1_nand_4_256_multivolume.ubi      Binary for bootfs, vendorfs, rootfs and userfs partitions on NAND device


6.2 Image flashing[edit]

The STM32CubeProgrammer tool is used to flash the STM32MP157x-DKx Discovery kit More info green.png with the downloaded image.

The microSD card, provided in the box, is used as the Flash device: see the STM32 MPU Flash mapping article if you want to know more about the supported Flash memory technologies, and the Flash partitions.

As explained in the boot chain overview, the optee boot chain is the default solution delivered by STMicroelectronics. Thus, the steps below use the image for the optee boot chain.


Let's flash the downloaded image on the microSD card:

  • Set the boot switches (1) to the off position
  • Connect the USB Type-C (OTG) port (2) to the host PC that contains the downloaded image
  • Insert the delivered microSD card into the dedicated slot (3)
  • Connect the delivered power supply to the USB Type-C port (4)
  • Press the reset button (5) to reset the board


Discovery kit connections for flashing
STM32MP157C-DK2 Warning.png shown here (picture is not contractual)


  • Go to the Starter Package directory that contains the binaries and the Flash layout files
 cd <Starter Package installation directory>/stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21/images/stm32mp1
If you have followed the the proposition to organize the working directory, the command is
  cd Starter-Package/stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21/images/stm32mp1
Info white.png Information
The commands below are for a Linux host PC; however, they are similar for a Windows host PC except that STM32_Programmer_CLI is replaced by STM32_Programmer_CLI.exe.
  • Check that the STM32CubeProgrammer tool is installed and accessible; if not, go to the installation procedure (installing the tools)
 STM32_Programmer_CLI --h
      -------------------------------------------------------------------
                        STM32CubeProgrammer <tool version>                  
      -------------------------------------------------------------------
  • Get the device port location for the USB link
 STM32_Programmer_CLI -l usb
      -------------------------------------------------------------------
                        STM32CubeProgrammer <tool version>                
      -------------------------------------------------------------------


Total number of available STM32 device in DFU mode: 1

  Device Index           : USB1
  USB Bus Number         : 002
  USB Address Number     : 002
  Product ID             : DFU in HS Mode @Device ID /0x500, @Revision ID /0x0000
  Serial number          : 000000000000
  Firmware version       : 0x011a
  Device ID              : 0x0500
  • Flash the microSD card with the image for the optee boot chain
 STM32_Programmer_CLI -c port=usb1 -w flashlayout_st-image-weston/optee/FlashLayout_sdcard_stm32mp157c-dk2-optee.tsv
This operation takes several minutes (mainly depending of the rootfs size). A successful flashing outputs the following log:
Info white.png Information
Please note that the logs that you will obtain, might be slightly different, especially if you use a different software release.
       -------------------------------------------------------------------
                         STM32CubeProgrammer <tool version>                   
       -------------------------------------------------------------------
 
 
 
 Warning: Timeout is forced to 65535 ms
 
 
 USB speed   : High Speed (480MBit/s)
 Manuf. ID   : STMicroelectronics
 Product ID  : DFU in HS Mode @Device ID /0x500, @Revision ID /0x0000
 SN          : 003900413338511634383330
 DFU protocol: 1.1
 Board       : --
 Device ID   : 0x0500
 Device name : STM32MP1
 Device type : MPU
 Revision ID : --  
 Device CPU  : Cortex-A7
 
 Start Embedded Flashing service
 
 
 
 Memory Programming ...
 Opening and parsing file: tf-a-stm32mp157c-dk2-usb.stm32
   File          : tf-a-stm32mp157c-dk2-usb.stm32
   Size          : 220.82 KB 
   Partition ID  : 0x01 
 
 Download in Progress:
 
 
 File download complete
 Time elapsed during download operation: 00:00:00.964
 
 RUNNING Program ... 
   PartID:      :0x01 
 Start operation done successfully at partition 0x01
 
 

 Memory Programming ...
 Opening and parsing file: fip-stm32mp157c-dk2-optee.bin
   File          : fip-stm32mp157c-dk2-optee.bin
   Size          : 1.14 MB 
   Partition ID  : 0x03 
 
 Download in Progress:
 
 
 File download complete
 Time elapsed during download operation: 00:00:01.649
 
 RUNNING Program ... 
   PartID:      :0x03 
 Start operation done successfully at partition 0x03
 
 
 Memory Programming ...
 Opening and parsing file: tf-a-stm32mp157c-dk2-sdcard.stm32
   File          : tf-a-stm32mp157c-dk2-sdcard.stm32
   Size          : 220.84 KB 
   Partition ID  : 0x04 
 
 Download in Progress:
 
 
 File download complete
 Time elapsed during download operation: 00:00:00.068
 
 RUNNING Program ... 
   PartID:      :0x04 
 Start operation done successfully at partition 0x04
 
 
 Memory Programming ...
 Opening and parsing file: tf-a-stm32mp157c-dk2-sdcard.stm32
   File          : tf-a-stm32mp157c-dk2-sdcard.stm32
   Size          : 220.84 KB 
   Partition ID  : 0x05 
 
 Download in Progress:
 
 
 File download complete
 Time elapsed during download operation: 00:00:00.072
 
 RUNNING Program ... 
   PartID:      :0x05 
 Start operation done successfully at partition 0x05
 
 
 Memory Programming ...
 Opening and parsing file: metadata.bin
   File          : metadata.bin
   Size          : 96.00 B 
   Partition ID  : 0x06 
 
 Download in Progress:
 
 
 File download complete
 Time elapsed during download operation: 00:00:00.006
 
 RUNNING Program ... 
   PartID:      :0x06 
 Start operation done successfully at partition 0x06
 
 
 Memory Programming ...
 Opening and parsing file: metadata.bin
   File          : metadata.bin
   Size          : 96.00 B 
   Partition ID  : 0x07 
 
 Download in Progress:
 
 
 File download complete
 Time elapsed during download operation: 00:00:00.007
 
 RUNNING Program ... 
   PartID:      :0x07 
 Start operation done successfully at partition 0x07
 
 
 Memory Programming ...
 Opening and parsing file: fip-stm32mp157c-dk2-optee.bin
   File          : fip-stm32mp157c-dk2-optee.bin
   Size          : 1.14 MB 
   Partition ID  : 0x08 
 
 Download in Progress:
 
 
 File download complete
 Time elapsed during download operation: 00:00:00.431
 
 RUNNING Program ... 
   PartID:      :0x08 
 Start operation done successfully at partition 0x08
 
 
 Memory Programming ...
 Opening and parsing file: st-image-bootfs-openstlinux-weston-stm32mp1.ext4
   File          : st-image-bootfs-openstlinux-weston-stm32mp1.ext4
   Size          : 64.00 MB 
   Partition ID  : 0x10 
 
 Download in Progress:
 
 
 File download complete
 Time elapsed during download operation: 00:00:26.529
 
 RUNNING Program ... 
   PartID:      :0x10 
 Start operation done successfully at partition 0x10
 
 
 Memory Programming ...
 Opening and parsing file: st-image-vendorfs-openstlinux-weston-stm32mp1.ext4
   File          : st-image-vendorfs-openstlinux-weston-stm32mp1.ext4
   Size          : 16.00 MB 
   Partition ID  : 0x11 
 
 Download in Progress:
 
 
 File download complete
 Time elapsed during download operation: 00:00:07.738
 
 RUNNING Program ... 
   PartID:      :0x11 
 Start operation done successfully at partition 0x11
 
 
 Memory Programming ...
 Opening and parsing file: st-image-weston-openstlinux-weston-stm32mp1.ext4
   File          : st-image-weston-openstlinux-weston-stm32mp1.ext4
   Size          : 575.66 MB 
   Partition ID  : 0x12 
 
 Download in Progress:
 
 
 File download complete
 Time elapsed during download operation: 00:03:53.460
 
 RUNNING Program ... 
   PartID:      :0x12 
 Start operation done successfully at partition 0x12
 
 
 Memory Programming ...
 Opening and parsing file: st-image-userfs-openstlinux-weston-stm32mp1.ext4
   File          : st-image-userfs-openstlinux-weston-stm32mp1.ext4
   Size          : 128.00 MB 
   Partition ID  : 0x13 
 
 Download in Progress:
 
 
 File download complete
 Time elapsed during download operation: 00:00:47.543
 
 RUNNING Program ... 
   PartID:      :0x13 
 Start operation done successfully at partition 0x13
 Flashing service completed successfully


Go to the STM32CubeProgrammer article:

  • to know more about the flashing operation

7 Booting the board[edit]

Now that the image is flashed on the STM32MP157x-DKx Discovery kit, let's finalize the system configuration:

  • Step 1: check the configuration of the switches
    • The figure below shows the position of the boot switches in order to boot from the microSD card.
Boot from microSD card
  • Step 2: (optional) connect a USB keyboard and/or a USB mouse (not provided) using the USB type A ports (3 and 4)
  • Step 3: (optional) connect an Ethernet cable (not provided) to the dedicated connector (7)


MB1272 motherboard: STM32MP157x 12x12,  PMIC,  DDR3MicroSD card slot2 x USB Type-A (host) → mouse,  keyboard or USB driver2 x USB Type-A (host) → mouse,  Keyboard or USB driverUSB micro-B (ST-LINK/V2-1) → PC virtual COM port and debugReset buttonEthernet → NetworkUSB Type-C (power 5V-3A)
STM32MP157x-DKx Discovery kit connections

STM32MP157C-DK2 shown here without the MB1407 daughterboard DSI display to avoid hiding the connections (picture is not contractual)



  • Step 4: check that the microSD card is inserted into the dedicated slot (2)
  • Step 5: connect the provided power supply (5 V, 3 A) to the USB type C connector (8)
  • Step 6: (optional) connect the ST-LINK/V2-1 USB micro-B port (5) to a host PC that runs a Terminal program with ST-LINK/V2-1 virtual port (e.g. Minicom on Ubuntu Linux PC or Tera Term on Windows PC)
  • Step 7: (optional) connect a HDMI monitor (or TV) to the HDMI connector. This option is particularly useful for the STM32MP157A-DK1 Warning.png and STM32MP157D-DK1 More info green.png Discovery kits that do not include any DSI display daughterboard

STM32MP157x-DKx HDMI.png

  • Step 8: press the reset button (6) to reset the board

The board boots and the system will be available after few seconds.




8 Checking the boot sequence[edit]

Assuming you have performed the optional step 6 above, the information (coming successively from the TF-A, OP-TEE OS, U-Boot and the Linux operating system that is booting on the board), should be displayed on the host PC Terminal.

Info white.png Information
The information displayed below might differ from that on your own application, and should just be considered as an example.
First information scrolled on the remote Terminal during boot
Last information scrolled on the remote Terminal during boot

In parallel, a U-Boot splash screen picture is displayed on the DSI display (if one is connected to the board).DSI U-Boot splash screen.png

A user space graphical boot splash screen (PSplash) picture is then briefly displayed on the HDMI monitor if one is connected to the board, or otherwise on the DSI display (if one is connected to the board).DSI user splash screen.png

When the boot process is complete, the launcher application is shown on the HDMI monitor if one is connected to the board, or otherwise on the DSI display (if one is connected to the board).

More detail about this launcher application in GTK demo launcher page.

9 Mouse, keyboard and Ethernet hot-plugs[edit]

Let's assume that the optional step 2 and step 3 were not achieved when setting up the system above.

When connecting a USB mouse, the following information is displayed by the Terminal program:

[  926.786326] usb 2-1.1: new low-speed USB device number 3 using ehci-platform
[  926.961413] input: Logitech Optical USB Mouse as /devices/platform/soc/5800d000.usbh-ehci/usb2/2-1/2-1.1/2-1.1:1.0/0003:046D:C016.0001/input/input2
[  926.975098] hid-generic 0003:046D:C016.0001: input: USB HID v1.10 Mouse [Logitech Optical USB Mouse] on usb-5800d000.usbh-ehci-1.1/input0


When connecting a USB keyboard, the following information is displayed by the Terminal program:

[ 1009.026567] usb 2-1.3: new low-speed USB device number 4 using ehci-platform
[ 1009.193990] input: Dell Dell USB Keyboard as /devices/platform/soc/5800d000.usbh-ehci/usb2/2-1/2-1.3/2-1.3:1.0/0003:413C:2003.0002/input/input3
[ 1009.280101] hid-generic 0003:413C:2003.0002: input: USB HID v1.10 Keyboard [Dell Dell USB Keyboard] on usb-5800d000.usbh-ehci-1.3/input0


When connecting an Ethernet cable, the following information is displayed by the Terminal program:

[ 1215.356377] stm32-dwmac 5800a000.ethernet end0: Link is Up - 1Gbps/Full - flow control rx/tx
[ 1215.363377] IPv6: ADDRCONF(NETDEV_CHANGE): end0: link becomes ready
[ 1215.391068] Link is Up - 1000/Half

or on STM32MP13x lines More info.png for the second Ethernet interface

[  117.370989] stm32-dwmac 5800e000.eth2 end1: Link is Up - 100Mbps/Full - flow control rx/tx
[  117.377950] IPv6: ADDRCONF(NETDEV_CHANGE): end1: link becomes ready

10 Remote and local Terminal programs[edit]

As already explained in the step 6 above, a remote Terminal program can be installed and configured on your host PC in order to communicate with the board through a serial link or an Ethernet link: see How to get Terminal.

The remote Terminal on your host PC can be used to enter command lines, as shown below with the ip command to query the network interface parameters:

Example of command (ip) executed on the remote Terminal program


A local Terminal program can be launched directly on the board. Click on the small icon at the top left corner of the display (see the red arrow on the figure below):

Icon to launch a local Terminal program
Wayland Terminal program


Then the on-board Wayland Terminal can be used to directly enter command lines as shown below, still with the ip addr command to query the network interface parameters:

Example of command (ip addr) executed on the Wayland Terminal program


Consequently, unless an explicit restriction is mentioned, command lines can be run from both Terminals.

Note: in this article, any command executed on the board (through the remote Terminal or the Wayland Terminal) starts with , while any command executed on the host PC starts with .

11 Executing basic commands[edit]

Info white.png Information
The outputs of the commands executed below are examples; the outputs obtained might differ.

11.1 Having a look at the OpenSTLinux directory structure[edit]

The directory structure and directory contents in the OpenSTLinux distribution is standard. Some details are available in the OpenSTLinux directory structure article.

11.2 Identifying the software running on board[edit]

Info white.png Information
Obviously, what you obtain might differ from what is displayed on the Output example column.

11.2.1 For ecosystem release v5.0.0 More info.png[edit]

Software How to get its version Output example
TF-A TF-A Version number

NOTICE: BL2: v2.8-stm32mp1-r1.0(debug):lts-v2.8.6-dirty

U-Boot See the version displayed in the console

2022.10-stm32mp-r1 [...]

Linux kernel
 cat /proc/version

Linux version 6.1.28 (xxxx@yyyy) (arm-ostl-linux-gnueabi-gcc (GCC) 12.2.0 ) [...]

GCC
 cat /proc/version

Linux version 6.1.28 (xxxx@yyyy) (arm-ostl-linux-gnueabi-gcc (GCC) 12.2.0) [...]

Yocto Project
 grep DISTRO_CODENAME /etc/build

DISTRO_CODENAME = mickledore

Weston
 weston --version

weston 11.0.1

GStreamer
 gst-play-1.0 --version

GStreamer 1.22.0

GPU (only on STM32MP15x lines More info.png)
 cat /sys/kernel/debug/gc/version

6.4.13.608341 built [...]

11.3 Configuration tips[edit]

11.4 Getting board IP address[edit]

Prerequisite: your board is connected to your local network through the Ethernet connector (see step 3).

 ip addr show end0                                                                           
3: end0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet xx.xx.xx.xx/xx brd xx.xx.xx.xx scope global dynamic end0
       valid_lft 159045sec preferred_lft 159045sec
    inet6 xxxx::xx:xx:xx:xx/xx scope link 
       valid_lft forever preferred_lft forever
  • Get the IP address of your board with the ifconfig Linux command line (a deprecated but well-known command):
 ifconfig end0
end0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
          inet addr:xx.xx.xx.xx  Bcast:xx.xx.xx.xx  Mask:255.255.252.0
          inet6 addr: xxxx::xx:xx:xx:xx/xx Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2619 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1311 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:353250 (344.9 KiB)  TX bytes:118305 (115.5 KiB)
          Interrupt:247

11.5 Copying a file from your host PC to your board (and reciprocally)[edit]

11.6 Miscellaneous commands[edit]

Info white.png Information
The outputs of the commands executed below are examples; the outputs that you obtain might differ.

11.6.1 Printing distribution specific information[edit]

 cat /etc/os-release 
ID=openstlinux-weston
NAME="ST OpenSTLinux - Weston - (A Yocto Project Based Distro)"
VERSION="4.2.1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21 (mickledore)"
VERSION_ID=4.2.1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21
VERSION_CODENAME="mickledore"
PRETTY_NAME="ST OpenSTLinux - Weston - (A Yocto Project Based Distro) 4.2.1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21"

Where:

ID A lower-case string identifying the operating system
NAME A string identifying the operating system
VERSION A string identifying the operating system version, including a release code name
VERSION_ID A lower case string identifying the operating system version
VERSION_CODENAME Code name for the distribution
PRETTY_NAME A full pretty name of the release

11.6.2 Printing system information[edit]

 uname -a
Linux stm32mp1 6.1.28 #1 SMP PREEMPT Thu May 11 14:04:52 UTC 2023 armv7l GNU/Linux

Where:

Linux Kernel name
stm32mp1 Network node hostname
6.1.28 Kernel release
#1 SMP PREEMPT Thu May 11 14:04:52 UTC 2023 Kernel version
armv7l Machine hardware name
GNU/Linux Operating system

11.6.3 Printing Linux kernel and GCC versions[edit]

 cat /proc/version
Linux version 6.1.28 (oe-user@oe-host) (arm-ostl-linux-gnueabi-gcc (GCC) 12.2.0, GNU ld (GNU Binutils) 2.40.20230119) #1 SMP PREEMPT Tue Feb 14 18:11:56 UTC 2023

Where:

Linux Kernel name
version 6.1.28 Kernel release
(xxxx@yyyy) Person (xxxx) who compiled the kernel, and machine (yyyy) where it happened
(arm-ostl-linux-gnueabi-gcc (GCC) 12.2.0 ) Version of the GCC compiler used to compile the kernel
#1 SMP PREEMPT Tue Feb 14 18:11:56 UTC 2023 Kernel version; type of kernel (SMP) and date and time of the kernel compilation

11.6.4 Printing the amount of disk space available on all mounted file systems[edit]

 df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs         116M     0  116M   0% /dev
/dev/mmcblk0p10  684M  453M  184M  72% /
tmpfs            195M  176K  195M   1% /dev/shm
tmpfs             78M  8.8M   70M  12% /run
tmpfs            4.0M     0  4.0M   0% /sys/fs/cgroup
tmpfs            195M   16K  195M   1% /tmp
/dev/mmcblk0p8    55M   39M   12M  77% /boot
/dev/mmcblk0p9    14M  5.9M  6.8M  47% /vendor
tmpfs            195M   96K  195M   1% /var/volatile
/dev/mmcblk0p11   14G   45M   13G   1% /usr/local
tmpfs             39M  4.0K   39M   1% /run/user/1000
tmpfs             39M     0   39M   0% /run/user/0

Where:

Filesystem Source of the mount point, usually a device
Size Total size in human readable format (e.g. 1K, 234M, 2G)
Used Used size in human readable format
Available Available size in human readable format
Use% Percentage of used size divided by the total size
Mounted on Mount point


Note: the user file system (userfs) and the boot file system (bootfs) are accessible respectively through the /usr/local mounting point, and the /boot mounting point (see Flash partitions for a description of the file systems).


12 Examples[edit]

Under construction.png The examples are under construction: few of them are proposed below; more examples will come with the next releases.

12.1 Examples running on Cortex-A7[edit]

The table below gathers links towards articles proposing examples of peripherals usage.

Link to the example
Playing an audio/video local file
Playing an audio/video stream
Displaying an image
Running a simple 3D example (GPU usage)
Setting up a WLAN connection
Setting up a Bluetooth connection
Displaying on the HDMI monitor (or TV)

12.2 Examples running on Cortex-M4[edit]

Please read STM32CubeMP1 Package article.

13 Fast links to essential commands[edit]

If you are already familiar with the Starter Package for the STM32MPU Embedded Software distribution, fast links to the essential commands are listed below.

Info white.png Information
With the links below, you will be redirected to other articles; use the back button of your browser to come back to these fast links
Link to the command
Download and install the latest image
Set boot switches
Flash the image on the microSD card
Start a remote Terminal with Minicom
Get the board IP address
Start a remote Terminal over Ethernet
Copy a file from the host PC to the board over Ethernet

14 How to go further?[edit]

Now that the image is flashed on the STM32MP157x-DKx Discovery kit, you might want to switch to the STM32MP1 Developer Package, in order to modify or tune the STM32MPU Embedded Software distribution with your own developments.