.. SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
.. sectionauthor:: Patrice Chotard <patrice.chotardy@foss.st.com>

STM32 MCU boards
=================

This is a quick instruction for setup STM32 MCU boards.

Supported devices
-----------------

U-Boot supports the following STMP32 MCU SoCs:

 - STM32F429
 - STM32F469
 - STM32F746
 - STM32F769
 - STM32H743
 - STM32H750

SoCs information:
-----------------
STM32F4 series are Cortex-M4 MCU.
STM32F7 and STM32H7 series are Cortex-M7 MCU.

 + STM32F4 series: https://www.st.com/en/microcontrollers-microprocessors/stm32f4-series.html
 + STM32F7 series: https://www.st.com/en/microcontrollers-microprocessors/stm32f7-series.html
 + STM32H7 series: https://www.st.com/en/microcontrollers-microprocessors/stm32h7-series.html

Currently the following boards are supported:

 + stm32f429-discovery
 + stm32f469-discovery
 + stm32746g-evaluation
 + stm32f746-discovery
 + stm32f769-discovery
 + stm32h743i-discovery
 + stm32h743i-evaluation
 + stm32h750i-art-pi

Boot Sequences
--------------

For STM32F7 series, 2 boot configurations are supported with and without SPL

+------------------------+-------------------------+--------------+
| **FSBL**               | **SSBL**                | **OS**       |
+------------------------+-------------------------+--------------+
| First Stage Bootloader | Second Stage Bootloader | Linux Kernel |
+------------------------+-------------------------+--------------+
| embedded Flash         | DDR                                    |
+------------------------+-------------------------+--------------+

The boot chain with SPL
```````````````````````

defconfig_file :
   + **stm32746g-eval_spl_defconfig**
   + **stm32f746-disco_spl_defconfig**
   + **stm32f769-disco_spl_defconfig**

+------------+------------+-------+
| FSBL       | SSBL       | OS    |
+------------+------------+-------+
|U-Boot SPL  | U-Boot     | Linux |
+------------+------------+-------+

The boot chain without SPL
``````````````````````````

defconfig_file :
   + **stm32f429-discovery_defconfig**
   + **stm32f429-evaluation_defconfig**
   + **stm32f469-discovery_defconfig**
   + **stm32746g-eval_defconfig**
   + **stm32f746-disco_defconfig**
   + **stm32f769-disco_defconfig**
   + **stm32h743-disco_defconfig**
   + **stm32h743-eval_defconfig**
   + **stm32h750-art-pi_defconfig**

+-----------+-------+
| FSBL      | OS    |
+-----------+-------+
|U-Boot     | Linux |
+-----------+-------+

Build Procedure
---------------

1. Install the required tools for U-Boot

   * install package needed in U-Boot makefile
     (libssl-dev, swig, libpython-dev...)

   * install ARMv7 toolchain for 32bit Cortex-A (from Linaro,
     from SDK for STM32MP15x, or any crosstoolchains from your distribution)
     (you can use any gcc cross compiler compatible with U-Boot)

2. Set the cross compiler::

   # export CROSS_COMPILE=/path/to/toolchain/arm-linux-gnueabi-

3. Select the output directory (optional)::

   # export KBUILD_OUTPUT=/path/to/output

   for example: use one output directory for each configuration::

   # export KBUILD_OUTPUT=stm32f4
   # export KBUILD_OUTPUT=stm32f7
   # export KBUILD_OUTPUT=stm32h7

   you can build outside of code directory::

   # export KBUILD_OUTPUT=../build/stm32f4

4. Configure U-Boot::

   # make <defconfig_file>

   For example with <defconfig_file>:

   - For **stm32f429 discovery** board : **stm32f429-discovery_defconfig**
   - For **stm32f769 discovery** board with SPL: **stm32f769-disco_spl_defconfig**
   - For **stm32f769 discovery** board without SPL: **stm32f769-disco_defconfig**

5. Configure the device-tree and build the U-Boot image::

   # make DEVICE_TREE=<name> all

   Examples:

  a) boot with SPL on stm32f746 discovery board::

     # export KBUILD_OUTPUT=stm32f746-disco
     # make stm32f746-disco_spl_defconfig
     # make all

  b) boot without SPL on stm32f746 discovery board::

     # export KBUILD_OUTPUT=stm32f746-disco
     # make stm32f746-disco_defconfig
     # make all

  c) boot on stm32h743 discovery board::

     # export KBUILD_OUTPUT=stm32h743-disco
     # make stm32h743-disco_defconfig
     # make all

  d) boot on stm32h743 evaluation board::

     # export KBUILD_OUTPUT=stm32h743-disco
     # make stm32h743-eval_defconfig
     # make all

6. U-Boot Output files

   So in the output directory (selected by KBUILD_OUTPUT),
   you can found the needed U-Boot files, for example::

     - stm32f746-disco_defconfig = **u-boot-dtb.bin** and **u-boot.dtb**

       - FSBL = u-boot-dtb.bin

     - stm32f746-disco_spl_defconfig = **u-boot-dtb.bin**, **u-boot.dtb** and **u-boot-with-spl.bin**

       - FSBL + SSBL = u-boot-with-spl.bin
       - SSBL = u-boot-dtb.bin

7. Flash U-Boot files

Plug STM32 MCUs board using the USB ST-Link connector, hence it will expose
the flash area as a mass-storage. In this mass-storage you will find the
following files:

- DETAILS.TXT: give the bootrom version and build
- MBED.HTM: shortcul to the hardware board description web page from st.com.

Copy/paste the u-boot.bin or u-boot-with-spl.bin (in case of bootchain with SPL)
to this mass-storage. The "COM" LED will blink alternatively red and green during
the flash process. When done the board will reboot automatically.

In case of boot with SPL, by default SPL will try to load either a Linux
kernel (falcon mode) or, if the key "c" is maintained pressed, the main U-Boot.
