boards/st/stm32h750b_dk/doc/index.rst
.. zephyr:board:: stm32h750b_dk
Overview
The STM32H750B-DK Discovery kit is a complete demonstration and development platform for Arm® Cortex®-M7 core-based STM32H750XBH6 microcontroller, with 128Kbytes of Flash memory and 1 Mbytes of SRAM.
The STM32H750B-DK Discovery kit is used as a reference design for user application development before porting to the final product, thus simplifying the application development.
The full range of hardware features available on the board helps users to enhance their application development by an evaluation of all the peripherals (such as USB OTG FS, Ethernet, microSD™ card, USART, CAN FD, SAI audio DAC stereo with audio jack input and output, MEMS digital microphone, HyperRAM™, Octo-SPI Flash memory, RGB interface LCD with capacitive touch panel, and others). ARDUINO® Uno V3, Pmod™ and STMod+ connectors provide easy connection to extension shields or daughterboards for specific applications.
STLINK-V3E is integrated into the board, as the embedded in-circuit debugger and programmer for the STM32 MCU and USB Virtual COM port bridge. STM32H750B-DK board comes with the STM32CubeH7 MCU Package, which provides an STM32 comprehensive software HAL library as well as various software examples.
More information about the board can be found at the STM32H750B-DK website_.
More information about STM32H750 can be found here:
STM32H750 on www.st.com_STM32H750xx reference manual_STM32H750xx datasheet_.. zephyr:board-supported-hw::
For more details please refer to STM32H750B-DK website_.
The STM32H750B System Clock can be driven by an internal or external oscillator, as well as by the main PLL clock. By default, the System clock is driven by the PLL clock at 480MHz. PLL clock is feed by a 25MHz high speed external clock.
The STM32H750B Discovery kit has up to 6 UARTs. The Zephyr console output is assigned to UART3 which connected to the onboard ST-LINK/V3.0. Virtual COM port interface. Default communication settings are 115200 8N1.
Programming and Debugging
.. zephyr:board-supported-runners::
STM32H750B Discovery kit includes an ST-LINK-V3E embedded debug tool interface. This probe allows flashing and debugging the board using various tools.
The board is configured to be flashed using west STM32CubeProgrammer_ runner,
so its :ref:installation <stm32cubeprog-flash-host-tools> is required.
Alternatively, OpenOCD or JLink can also be used to write app to the SoC Flash using
the --runner (or -r) option:
.. code-block:: console
$ west flash --runner openocd $ west flash --runner jlink
Here is an example for how to build and flash the :zephyr:code-sample:hello_world application.
.. zephyr-app-commands:: :zephyr-app: samples/hello_world :board: stm32h750b_dk :goals: build flash
Connect the STM32H750B-DK to your host computer using the ST-LINK USB port, then run a serial host program to connect with the board. For example:
.. code-block:: console
$ minicom -b 115200 -D /dev/ttyACM0
You should see the following message in the serial host program:
.. code-block:: console
$ Hello World! stm32h750b_dk
If the application size is too big to fit in SoC Flash,
Zephyr :ref:Code and Data Relocation <code_data_relocation> can be used to relocate
the non-critical and big parts of the application to external Flash.
You can debug an application in the usual way. Here is an example for the
:zephyr:code-sample:hello_world application.
.. zephyr-app-commands:: :zephyr-app: samples/hello_world :board: stm32h750b_dk :goals: debug
Because of the limited amount of SoC Flash (128KB), you may want to store the application
in external QSPI Flash instead, and run it from there. In that case, the MCUboot bootloader
is needed to chainload the application. A dedicate board variant, ext_flash_app, was created
for this usecase.
:ref:sysbuild makes it possible to build and flash all necessary images needed to run a user application
from external Flash.
The following example shows how to build :zephyr:code-sample:hello_world with Sysbuild enabled:
.. zephyr-app-commands:: :tool: west :zephyr-app: samples/hello_world :board: stm32h750b_dk/stm32h750xx/ext_flash_app :goals: build :west-args: --sysbuild
By default, Sysbuild creates MCUboot and user application images.
Build directory structure created by Sysbuild is different from traditional Zephyr build. Output is structured by the domain subdirectories:
.. code-block::
build/ ├── hello_world | └── zephyr │ ├── zephyr.elf │ ├── zephyr.hex │ ├── zephyr.bin │ ├── zephyr.signed.bin │ └── zephyr.signed.hex ├── mcuboot │ └── zephyr │ ├── zephyr.elf │ ├── zephyr.hex │ └── zephyr.bin └── domains.yaml
.. note::
With --sysbuild option, MCUboot will be re-built every time the pristine build is used,
but only needs to be flashed once if none of the MCUboot configs are changed.
For more information about the system build please read the :ref:sysbuild documentation.
Both MCUboot and user application images can be flashed by running:
.. code-block:: console
$ west flash
You should see the following message in the serial host program:
.. code-block:: console
*** Booting MCUboot v2.2.0-173-gb192716c969a *** *** Using Zephyr OS build v4.2.0-6260-ge39ba1a35bc4 *** I: Starting bootloader I: Image index: 0, Swap type: none I: Image index: 0, Swap type: none I: Primary image: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x3 I: Secondary image: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x3 I: Boot source: none I: Image index: 0, Swap type: none I: Image index: 0, Swap type: none I: Image index: 0, Swap type: none I: Image index: 0, Swap type: none I: Bootloader chainload address offset: 0x0 I: Image version: v0.0.0 I: Jumping to the first image slot *** Booting Zephyr OS build v4.2.0-6260-ge39ba1a35bc4 *** Hello World! stm32h750b_dk/stm32h750xx/ext_flash_app
To only flash the user application in the subsequent builds, Use:
.. code-block:: console
$ west flash --domain hello_world
With the default configuration, the board uses MCUboot's Swap-using-offset mode.
To get more information about the different MCUboot operating modes and how to
perform application upgrade, refer to MCUboot design.
To learn more about how to secure the application images stored in external Flash,
refer to MCUboot Encryption.
You can debug the application in external flash using west and GDB.
After flashing MCUboot and the app, execute the following command:
.. code-block:: console
$ west debugserver
Then, open another terminal (don't forget to activate Zephyr's environment) and execute:
.. code-block:: console
$ west attach
.. _STM32H750B-DK website: https://www.st.com/en/evaluation-tools/stm32h750b-dk.html
.. _STM32H750 on www.st.com: https://www.st.com/en/microcontrollers-microprocessors/stm32h750-value-line.html
.. _STM32H750xx reference manual: https://www.st.com/resource/en/reference_manual/rm0433-stm32h742-stm32h743753-and-stm32h750-value-line-advanced-armbased-32bit-mcus-stmicroelectronics.pdf
.. _STM32H750xx datasheet: https://www.st.com/resource/en/datasheet/stm32h750ib.pdf
.. _STM32CubeProgrammer: https://www.st.com/en/development-tools/stm32cubeprog.html
.. _MCUboot design: https://docs.mcuboot.com/design.html
.. _MCUboot Encryption: https://docs.mcuboot.com/encrypted_images.html