How to populate boards for Android

Revision as of 15:25, 26 September 2019 by Registered User

This article describes how to populate completely or partially a board with a built STM32MPU distribution for Android™. It is intended for Distribution Package users.

1. Prerequisites[edit source]

The recommended host PC setup is specified in the following article: PC prerequisites.

The environment must be installed using the Distribution Package adapted to the selected microprocessor device. See the list of AndroidTM Distribution Package.

It is assumed that:

2. Populate a board[edit source]

The out/target/product/<BoardId> directory contains all images built for the selected board during the setup (launch step).


The STM32CubeProgrammer tool is used to flash the first stages of the images to the board. Then fastboot is used to flash the remaining images.

The board shall be started in "Forced USB boot for flashing" mode (also named DFU), selecting it through boot switches as explained in the document <you board reference - hardware description, chapter Boot related switches (for example, Boot switches on the STM32MP157x-EV1 board for the STM32MP157C-EV1 board).

Connect the board to the host PC through USB.


Depending on the board, several flash devices may be available, for example: microSD, eMMC and so on. The microSD card is considered as the Flash device for this article.

  • Go to the distribution root directory, and run flash-device:
 flash-device
  • Select the flashlayout to be used (ex: FlashLayout_sd_optee.tsv to flash OP-TEE 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 completed, the boot switches must be configured so that the correct Flash device (e.g. microSD card) is selected as the boot source.

This operation takes several minutes.
  • When the download is finished, press the reset button in the board. The Android software then starts.

3. Populate a microSD card[edit source]

Images can be flashed directly to a microSD card connected to the board.

Before starting, the microSD card settings need to match the configuration of the board. Refer to the Memory settings page.

3.1. Format the microSD card[edit source]

The first time the microSD card is used or the partition layout changes, it needs to be formated. The goal is to prepare it with appropriate partition size to receive the images.

 format-device <device_path>

With:

  • <device_path>: the device identified in the system to access the microSD card (/dev/sdX for microSD card connected through USB dongle or /dev/mmcblkX for microSD card connected through reader, X is the instance associated to your Flash device).

This command will automatically use the partition configuration from device/stm/<STM32Series>/layout/android_layout.config.

For more information see the usage option:

Usage: format-device [Options] <device_path>

  This script allows the formatting of the memory device to create required partition before provisioning.

Options:
  -h/--help: print this message
  -v/--version: get script version
  -s/--size <disk-size>: set requested disk size [4GiB or 8GiB] (default: PART_MEMORY_SIZE value set in <path_to>/android_layout.config)
  -c/--config <config-file-path>: set used partition configuration file (default: <path_to>/android_layout.config)

<device_path>: /dev/sdX (sd connected through usb), /dev/mmcblkX (sd connected through reader)
Info white.png Information
The microSD card needs to be disconnect and reconnect the before going further

3.2. Provision the microSD card[edit source]

To push the built images, the following instruction has to be executed:

 provision-device <device_path>

With:

  • <device_path>: the device identified in the system to access the microSD card (/dev/sdX for microSD card connected through USB dongle or /dev/mmcblkX for microSD card connected through reader, X is the instance associated to the Flash device).

Then all images are flashed on the Flash device.


The microSD card can be plugged to the board and rebooted.

4. Flash a dedicated image[edit source]

If an Android distribution is already installed and booted on the board, it's possible to update partitions one by one depending on the need. For example, if the kernel is rebuilt, just flash the boot (kernel), the dt (device tree) and the vendor images (modules).


First you need to restart your device in fastboot mode:

  • Press the reset button, and a long press on the button associated with fastboot (USER PA13 for Evaluation board, USER2 for Discovery kits).

or

  • Run the command
 adb reboot-bootloader


Then execute the flashing command:

 provision-device -i reboot
  • -i option means that you will have to confirm the flash partition per partition (select the partitions you want to update)
  • reboot option means that the device will reboot automatically at the end

5. Update an Android distribution[edit source]

If you want to update the content of partitions dedicated to Android (vendor,system or userdata) after a rebuild, it's possible to use ADB tool.

You have first to switch read-only partitions to read-write:

 adb root
 adb remount

You can then update the Android partitions.

 adb sync

Finally, you have to reboot your device to take these changes into account

 adb reboot