Skip to main content

Starter Package

The Starter Package is the prebuilt OpenSTLinux image plus the tools to flash it. It gets a board running without building anything from source — the fastest way to confirm the hardware works before committing to a Developer or Distribution Package workflow.

Notes below target the STM32MP135F-DK with STM32MP1-Ecosystem-v5.0.0.

Host requirements

ST officially supports Ubuntu 18.04 and 20.04 for the toolchain. Ubuntu 22.04 works in practice for the Starter Package flow.

Cables

PurposeCable
PowerUSB Type-C to USB Type-C
ST-LINK/V3E debug and consoleMicro USB Type-B to USB Type-A
USB OTG (flashing)USB Type-C to USB Type-A
SSH / networkingEthernet

The board's Ethernet does not support Auto-MDIX, so a crossover path may be needed when connecting directly to a host NIC rather than through a switch.

Software component versions

The v5.0.0 ecosystem bundles:

ComponentVersion
STM32CubeProgrammerv2.14.0
Linux kernelv6.1-stm32mp-r1 (v6.1.28)
U-Bootv2022.10-stm32mp-r1
TF-Av2.8-stm32mp-r1
OP-TEE3.19.0-stm32mp-r1
STM32CubeMP1 Packagev1.6.0
OpenEmbeddedv4.2.1 (Mickledore)

These versions travel together. Mixing a kernel or U-Boot from a different ecosystem release against this TF-A/OP-TEE is the usual cause of a board that flashes but does not boot — see Boot chain for why each stage depends on the previous one.

Install STM32CubeProgrammer

mkdir -p "$HOME/STM32MPU_workspace" && cd "$HOME/STM32MPU_workspace"

# Confirm the host can reach the internet before downloading
wget -q www.google.com && echo "Internet access OK" \
|| echo "No internet access. You may need to set up a proxy."

export STM32CP_VER=2.14.0
mkdir -p "$HOME/STM32MPU_workspace/tmp"
cd "$HOME/STM32MPU_workspace/tmp"

unzip en.stm32cubeprg-lin-v2-14-0.zip
./SetupSTM32CubeProgrammer-$STM32CP_VER.linux

export PATH="$HOME/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin:$PATH"
STM32_Programmer_CLI --h

USB access on Linux

CubeProgrammer talks to the board over USB with low-level commands, which need libusb and the udev rules it ships:

sudo apt-get install libusb-1.0-0

cd "$HOME/STMicroelectronics/STM32Cube/STM32CubeProgrammer/Drivers/rules"
sudo cp *.* /etc/udev/rules.d/

Without the udev rules, CubeProgrammer only sees the device as root. Copying them and replugging the board is what lets a normal user flash it.

Download the Starter Package image

export STM32ECO_VER=5.0.0

mkdir -p "$HOME/STM32MPU_workspace/STM32MP1-Ecosystem-v$STM32ECO_VER/Starter-Package"
cd "$HOME/STM32MPU_workspace/STM32MP1-Ecosystem-v$STM32ECO_VER/Starter-Package"

# Download en.flash-stm32mp1-openstlinux-6-1-yocto-mickledore-mp1-v23-06-21.tar.gz
# into this directory, then unpack it to get the per-partition binaries and the
# Flash layout files.
tar xvf en.flash-stm32mp1-openstlinux-6-1-yocto-mickledore-mp1-v23-06-21.tar.gz

Flash the SD card

Put the board into USB (DFU) boot mode, then drive it from CubeProgrammer.

  1. Set the boot switches to the "no boot / USB" position: raise switches 1–4 toward the numbers, then press 1–4 toward OPEN.
  2. Connect the host to the board's CN7/USB_OTG port with the Type-A to Type-C cable.
  3. Power on, then press the reset button.
  4. Launch STM32CubeProgrammer.
  5. Top right, change the connection type from STLINK to USB, click Refresh — the serial number appears if the board is detected — then Connect.
  6. Open File tab, choose the flash layout FlashLayout_sdcard_stm32mp135x-dk-optee.tsv under .../Starter-Package/stm32mp1-openstlinux-.../images/stm32mp1/flashlayout_st-image-weston/optee.
  7. Set Binaries Path to the .../images/stm32mp1 folder, for example /home/dev/STM32MPU_workspace/STM32MP1-Ecosystem-v5.0.0/Starter-Package/stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21/images/stm32mp1.
  8. Click Download. Flashing takes about four minutes.

The .tsv flash layout is what maps each binary to its partition; the Binaries Path is where CubeProgrammer looks up the files the layout names. A path pointing one directory too high is the usual "file not found" during download. The columns of that .tsv are documented in Yocto classes.

Boot the board from the SD card

Set the boot switches to boot from SD:

  • Raise switches 2 and 4 toward the numbers.
  • Drop switches 1 and 3 toward the numbers.

Serial console

The ST-LINK/V3E exposes a UART as a ttyACM device on the host.

sudo apt-get install minicom -y

ls /dev/ttyACM* # find the instance, usually /dev/ttyACM0
minicom -D /dev/ttyACM0

Press reset; the boot log appears in the minicom window. Log in as root (no password on the default image).

First commands

cat /etc/build # distribution build information
uname -a # kernel and machine
cat /proc/version # kernel and GCC versions
df -h # free space per mounted filesystem

ifconfig # find the Ethernet interface: eth0 or end0
ifconfig end0 192.168.50.20 # static IP when there is no DHCP server

ip addr show eth0 # the board's IP, for ssh
ssh [email protected] # from the host, once the cable is connected

The interface is named eth0 on some images and end0 on others (systemd predictable naming). Check with ifconfig before configuring it — see Networking for static and wireless setup.