STM32 MPU Flash mapping

Revision as of 16:05, 9 January 2019 by Registered User (NAND memory mapping)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Template:ArticleMainWriter Template:ArticleApprovedVersion


1 Supported Flash memory technologies[edit]

The STM32MP15 boards support different kind of Flash memories:

  • SD card on SDMMC interface that is present on EVAL and DISCO boards.
  • eMMC on SDMMC interface that is present on EVAL board only.
  • Serial NOR Flash on Dual QSPI interface, that is present on EVAL board only.
  • NAND Flash on FMC interface, that is present on EVAL board only.

The next section lists all partitions used on STM32MP15 boards (size, name, content) and the following sections shows how they are mapped on the different types of Flash memories.

2 Flash partitions[edit]

The table below lists the partitions defined for STMP32MP15 boards.



3 SD card memory mapping[edit]

The SD card has to be partitioned with GPT format to be recognized by STM32MP15. The easiest way to achieve this is to use STM32CubeProgrammer.
The ROM code search the GPT entries which name begins with "fsbl": fsbl1 and fsbl2 for example.
Note: the SD card can be unplugged from the board and inserted into a Linux host computer for direct partitionning with Linux utilities and access to the bootfs, rootfs and userfs partitions. The file system is Linux EXT4.

SD card mapping.png

4 eMMC memory mapping[edit]

The eMMC embeds four physical partitions:

  • Boot area partition 1: used to store the first copy of the FSBL.
  • Boot area partition 2: used to store the second copy of the FSBL.
  • User data area: formatted with GPT partitioning and used to store all remaining partitions.
  • Replay Protected Memory Block (RPMB): not shown in the figure below, since not involved in the current boot chain.

STM32CubeProgrammer has to be used to prepare the eMMC with the layout shown below and to populate each partition.

EMMC mapping.png

5 NOR memory mapping[edit]

NOR Flash being expensive, their size is usually limited to the minimum, allowing to store only the bootloaders. The system files (bootfs, rootfs and userfs) are usually stored in another Flash memory: like the SD card in OpenSTLinux distribution.
STM32CubeProgrammer has to be used to prepare the NOR Flash and the SD card with the layout shown below and to populate each partition.

It is possible to use an eMMC card or NAND rather than a SD card as second level Flash memory. It requires to change:

  • the Flash memory layout, using STM32CubeProgrammer in order to write the rootfs and userfs to the targeted Flash memory
  • the Linux kernel parameters, using U-Boot, in order to indicate where the rootfs and userfs have to be mounted


NOR mapping.png

6 NAND memory mapping[edit]

STM32CubeProgrammer has to be used to prepare the NAND Flash with the layout shown below, and to populate each partition.

NAND mapping.png