STM32MP1 Distribution Package for Android

Revision as of 13:59, 17 July 2019 by Registered User (→‎Distribution Package content)

This article describes how to get and use the Distribution Package for Android of the STM32MPU Embedded Software for any development platform of the STM32MP1 family (STM32MP15 boards), in order to modify or add pieces of software, and to create the right Android distribution, for the targeted product.

It lists some prerequisites in terms of knowledges and development environment, and gives the step-by-step approach to download and install the STM32MPU Embedded Software packages for this Package.

1. Distribution Package content[edit source]

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

To sum up, this Distribution Package provides:

  • an Android build framework (aka distribution builder)
  • for the STM32MPU distribution for Android (development on Arm Cortex-A processor):
    • the BSP (Linux kernel, U-Boot, TF-A, optionally OP-TEE) pieces in binary (prebuilt). Several scripts are provided to load source code and re-build them.
    • the application frameworks (including hardware abstraction code) pieces in source code.
  • for the STM32Cube MPU Package (development on Arm Cortex-M processor), all pieces of software in source code: BSP, HAL, middlewares and applications
  • a toolset to tune the system for your needs, and to handle the built image (e.g. STM32CubeProgrammer to install the built image on the board)

2. Checking the prerequisites[edit source]

2.1. Knowledges[edit source]

The STM32MP1 Distribution Package aims at creating an Android distribution for the targeted product: solid knowledges about Linux and Android are recommended to make the most of this Package.

The STM32MPU distribution for Android is an Android distribution based on the Android build framework: a short introduction about Android is available in AOSP[1].

Having a look at the STM32MPU Embedded Software for Android architecture overview is also highly recommended.

2.2. Development setup[edit source]

The recommended setup for the development PC (host) is specified in the following article: PC prerequisites.

Whatever the development platform (board) and development PC (host) used, the range of possible development setups is illustrated by the picture below.

Development setup for Developer and Distribution Packages


The following components are mandatory:

  • Host PC for cross-compilation and cross-debugging, installed as specified above
  • Board assembled and configured as specified in the associated Starter Package article
  • Mass storage device (for example, microSD card) to load and update the software images (binaries)

The following components are optional, but recommended:

  • A serial link between the host PC (through Terminal program) and the board for traces (even early boot traces), and access to the board from the remote PC (command lines)
  • An Ethernet link between the host PC and the board for cross-development and cross-debugging through a local network. This is an alternative or a complement to the serial (or USB) link
  • A display connected to the board, depending on the technologies available on the board: DSI LCD display, HDMI monitor (or TV) and so on
  • A mouse and a keyboard connected through USB ports

Additional optional components can be added by means of the connectivity capabilities of the board: cameras, displays, JTAG, sensors, actuators, and much more.

3. Installing the STM32MPU distribution for Android[edit source]

Under construction.png Delivery for Android coming soon (Q4 2019)

4. Building the STM32MPU distribution for Android[edit source]

Under construction.png Delivery for Android coming soon (Q4 2019)

5. Flashing the built image[edit source]

The ${ANDROID_PRODUCT_OUT}> directory receives complete file system images built for board selected un lunch step.

The STM32CubeProgrammer tool is used to flash 1st stages of images in the STM32MP15 board. It's assumed that this tool has been installed through the Starter Package associated with your board. The fastboot is also used to flash android images.

Depending on the board, several Flash devices (microSD, eMMC...) might be available. The microSD card is considered as the Flash device in the rest of this article.


  • Go to the Distribution Package directory, and run flash-device:
 flash-device
  • Select the flashlayout you want to use (ex:FlashLayout_sd_optee.tsv to flash optee build for microSD card)
1) FlashLayout_emmc_optee.tsv	 3) FlashLayout_sd_optee.tsv
2) FlashLayout_sd_trusted.tsv	 4) FlashLayout_emmc_trusted.tsv
Which layout do you want to flash ?

Once the DFU flashing is terminated, the boot switches must be configured so that the Flash device (e.g. microSD card) on which the image has been flashed, is selected as the boot source:

The figures below show the configuration of the boot switches for a boot from microSD card on different boards:

STM32MP157x-EV1 boot switches microSD card.png
STM32MP157x-DKx boot switches microSD card.png
Boot from microSD card on STM32MP157x-EV1 Evaluation board Boot from microSD card on STM32MP157x-DKx Discovery kit
  • press on reset button, and make a long press on the button associated to fastboot (USER2 for Disco board and PA13 for Eval board) : images download will continue.
This operation takes several minutes.
  • When download is finished, press the reset button to reset the board : the Android software will start.

6. References[edit source]


Template:ArticleMainWriter