Last edited 2 days ago

STM32CubeIDE

Applicable for STM32MP13x lines, STM32MP15x lines, STM32MP21x lines, STM32MP23x lines, STM32MP25x lines

This article explains some of the basics of STM32CubeIDE support for STM32 MPU. STM32CubeIDE is an all-in-one multi-OS development tool, which is part of the STM32Cube ecosystem.

For more information about STM32CubeIDE, refer to its user guide.

1. STM32CubeIDE purpose[edit | edit source]

STM32CubeIDE is an advanced C/C++ development platform with peripheral configuration, code generation, code compilation, and debug features for STM32 microcontrollers and microprocessors. It is based on the Eclipse®/CDT framework, GCC toolchain for the development and GDB for the debugging.

It allows the integration of the hundreds of existing plugins that complete the features of the Eclipse® IDE..

With STM32CubeIDE, you can

  • select the appropriate STM32 device corresponding to your needs from Empty projects.
  • Cube projects need to be imported in STM32CubeIDE after being created by STM32CubeMX.
  • configure the device using STM32CubeMX
  • develop and debug applications on top of Arm® Cortex®-M


2. How to install STM32CubeIDE[edit | edit source]

STM32 MPU support, inside STM32CubeIDE, is available on Linux® and Windows® host PCs, but it is NOT on macOS®.

STM32CubeIDE for Linux® host PC STM32CubeIDE for Windows® host PC
Download

Version 2.0.0

  • Download the preferred all-in-one Linux installer from st.com
    • Generic Linux Installer - STM32CubeIDE-Lnx
    • RPM Linux Installer - STM32CubeIDE-RPM
    • Debian Linux Installer - STM32CubeIDE-DEB

Version 2.0.0

  • Download the all-in-one Windows installer from st.com
    • Windows Installer - STM32CubeIDE-Win
Installation guide
  • Refer to STM32CubeIDE installation guide (UM2563) available on st.com.
User manual
  • When the installation is completed, see additional information about STM32CubeIDE in st.com:
    • STM32CubeIDE quick start guide (UM2553)
Detailed release note
  • Details about the content of this tool version are available in the STM32CubeIDE release v1.19.0 release note from st.com
Restrictions
  • Main restrictions are identified in this chapter
  • STM32CubeIDE errata (This page is available in the stm32mcu wiki, be aware that, visiting this page, you will leave the stm32mpu wiki)

Minor releases may be available from the update site. Check chapter 10 in (UM2609) for more information on how to update STM32CubeIDE.


3. How to get started with STM32CubeIDE[edit | edit source]

This section links to two different how to articles depending on whether you are migrating from SW4STM32 to STM32CubeIDE or starting a new project with STM32CubeIDE.

3.1. How to create STM32CubeMPU project in STM32CubeIDE[edit | edit source]

How to create STM32CubeMPU project in STM32CubeIDE.

3.2. How to migrate from SW4STM32 to STM32CubeIDE[edit | edit source]

How to import SW4STM32 project in STM32CubeIDE

4. Project structure[edit | edit source]

A hierarchical project structure is created together with the creation of an STM32 MPU project.

The project structure for single-core projects is flat.
On the contrary, in a multi-core project, the hierarchical project structure is used.

When the user creates or imports an STM32 MPU project (multi-core project), its structure is made of one root project together with sub-projects, referred to as STM32 MCU projects, for each core. A hierarchical structure example is shown below.

Hierarchical project structure

5. Arm® Cortex®-M debug on STM32 MPU device[edit | edit source]

Two modes are used to debug Arm® Cortex®-M firmware on STM32 MPU devices.

5.1. Developer mode (STM32MP1 only)[edit | edit source]

Only for STM32MP1 series

Info white.png Information
Note:
  • CM33 dev load/debug mode is not supported for STM32MP2 due to RIF and system resource configuration. Only production mode is supported through Linux Core

Very powerful to debug preliminary Arm® Cortex®-M, the developer mode implies a specific boot mode: the developer boot mode where only the Cortex®-M is started. Firmware is loaded via JTAG/SWD into its dedicated RAM.

This mode is not the default one. It must be set via the "Debug Configuration" menu, in the "Debugger" tab , with "through JTGA/SWD link (developer mode)" option selected.

Warning white.png Warning
The initialization normally done in the Cortex®-A (such as clock tree setup or others) must be handled by the Arm® Cortex®-M.

Debugging in developer mode, in an STM32 MPU device, is very similar to a standard STM32 MCU debug in terms of functionality, except that, in this case, the Arm® Cortex®-M core has only one dedicated memory, no Flash memory type.

5.2. Production mode[edit | edit source]

In production mode for STM32MP2 series, the Cortex®-A core runs a Linux® operating system that provides the high-level application environment and system services, including debugging support infrastructure. Meanwhile, the Cortex®-M core executes the real-time firmware application, typically developed and debugged using STM32CubeIDE.

The board, also named "target", is booted in the production mode from the Flash memory (example, the SD card); it is connected to the Host:

  • via the Ethernet network, using an Ethernet cable or dedicated USB cable,
  • and via a USB cable to the ST-LINK probe, giving access to the JTAG/SWD and Linux® console

ST-LINK automatically brings support for Cortex®-A Linux® console via VCP (Virtual COM port). This enables the Target Status widget, visible on the bottom-right of STM32CubeIDE panel, and allowing target IP address discovery. For production mode setup, it is recommended to get the target IP address discovered by the Target Status widget before creating the debug configuration. This principle is depicted in the Debug Configuration screenshot below.

Network connection can be set up in two ways:

  • Ethernet
    • managed network: IP address attributed by DHCP server
    • unmanaged network: IP address to be manually configured
  • USB
    • using the dedicated USB OTG connection for Ethernet point to point.




Debug is performed though the following workflow:
1. The firmware built binary is transferred to the target using the network (SSH protocol), more precisely to the Cortex®-A Linux® file system. 2. Firmware is loaded to Cortex®-M core using the “remoteproc” framework. 3. Finally, the debug session is started via the JTAG/SWD connection

The production mode is the default one when you create a new debug configuration. It is automatically set via the "Debug Configuration" menu.

Debug configuration, production mode activated.

More information on how to use "STM32CubeIDE target status" are given in article How to use the Target Status widget in STM32CubeIDE.

At debug launch, some specific pop-up appear:

  • The SSH Password must be completed: the default one is root.
  • The RSA key must be approved.

Defining an Arm® Cortex®-M project in an STM32 MPU context also means to define where are downloaded in the Arm® Cortex®-A Linux® file system:

  • the Cortex®-M firmware: <ProjectName>.elf
  • the load/unload script fw_cortex_m4.sh used by the STM32CubeIDE if present it can be customized
  • and a README, informing a user having a direct connection onto the target.

This is the purpose of "Remote Path Setting" property which is linked to the project. Its default value at creation is /usr/local/project/<ProjectName>, but can also be changed using the Remote Settings properties item.

Inside project structure, directory "<ProjectName>_CM4/Core/RemoteProc/" defines the tree downloaded when debugging in the production mode.

Note: load script mechanism described above is NOT supported with STM32MP2 (RemoteProc/ shall not be present).

5.3. Secure Project (STM32MP2 only)[edit | edit source]

Only for STM32MP2 series

On STM32MP2 series}, Arm® Cortex®-M33 supports secure project, refer to How to build and debug secure project on Cortex-M33 coprocessor in STM32CubeIDE.

5.4. ST-LINK sharing support[edit | edit source]

It is possible to connect to an ST-LINK probe several applications, in parallel of openOCD. This support relies onto 'ST-Link Server'.
It is enabled by checking Shared ST-Link inside "Debug Configuration > Debugger > ST-Link Client Setup".

6. OpenSTLinux project support on Cortex®-A[edit | edit source]

On Linux® host ONLY, STM32CubeIDE supports OpenSTLinux projects and its associated Yocto Project® SDK:

A contextual menu is available selecting the Cortex®-A sub-project (named <project-name>_CA7 on STM32MP1, <projet-name>_CA35 on STM32MP2):

  • "Setup OpenSTLinux" - in charge of Yocto Project® SDK set-up and OpenSTLinux Eclipse® plugin installation
  • "Import an OpenSTLinux Project..." - allowing to import one OpenSTLinux inside selected STM32Cube project
OpenSTLinux Contextual Menu

Note that Yocto Project ® SDK set-up can also be made from "Window > Preferences" menu selecting "OpenSTLinux SDK Manager" menu from "STM32Cube" preferences.

It exists two flavors for OpenSTLinux plugins:

  • STM32MP1 source support plugin requiring 32-bit Yocto Project® SDK
  • STM32MP2 source support plugin requiring 64-bit Yocto Project® SDK

These Eclipse® plugins allow to easily import OpenSTLinux projects.

Warning white.png Warning
In STM32CubeIDE, there is no way to install both versions of Yocto Project® SDK, 32-bit & 64-bit. A special attention is needed to set-up the appropriate version.

Note that a minimum disk space of 5 GBytes is needed under "/tmp" during the installation phase.

6.1. How to install Yocto Project® SDK in STM32CubeIDE[edit | edit source]

This article How to install the Yocto Project SDK in STM32CubeIDE explains how to point to an already existing SDK installation.

6.2. How to import and build OpenSTLinux projects[edit | edit source]

All projects from OpenSTLinux can be imported inside STM32CubeIDE and are available for compilation with Yocto Project® SDK.

See How to import and build STM32MPU OpenSTLinux projects in STM32CubeIDE.

6.3. How to develop a user space application[edit | edit source]

STM32CubeIDE provides support for creating, building and debugging projects aiming to run into the Linux® user space of STM32 MPUs. This includes executable, static and shared library.

6.4. How to develop a OP-TEE trusted application[edit | edit source]

STM32CubeIDE provides support for creating, building and debugging projects aiming to run into the Linux® user space of STM32 MPUs with support of secure service thanks to OP-TEE trusted application.

7. For M33-TD flavor More info green.png STM32MP2 support[edit | edit source]

STM32CubeIDE provides support for importing, building and debugging projects based onto MCUboot. It is recommended to first read the TF-M overview article.

STM32MP2 project with M33-TD flavor More info green.png must be created thanks to STM32CubeMX.

As depicted hereafter, for full support, this STM32CubeIDE project needs:

  1. to be opened in STM32CubeIDE providing:
    1. Cortex®-M33 non-secure STM32CubeIDE project
    2. device trees sources for Cortex®-M33 and Cortex®-A35
  2. TF-M CMake project needs to be imported providing sources for:
    1. MCUboot
    2. TF-M
  3. OpenSTLinux Makefile projects need to be imported providing sources for:
    1. TF-A
    2. U-Boot
    3. OPTEE
    4. Linux
STM32MP2 M33-TD flavor More info green.png project overview

Refer to :