STM32CubeMX 6.11 is a new milestone as it allows developers to use the unique features of the new STM32H7R and STM32H7S. The software also continues to simplify development on STM32 by offering popular USB middleware previously bound to an OS. Similarly, it is the first version of CMake, which will significantly optimize workflows. STM32CubeMX thus continues to stand as the reference application for STM32 developers thanks to its UI that removes complexity and increases the accessibility of the STM32 ecosystem. Furthermore, the new version inaugurates support for the NUCLEO-U031R8, NUCLEO-U083RC, NUCLEO-H7S3L8, NUCLEO-H533RE.
What’s new in STM32CubeMX 6.11
Support for the STM32H7R and STM32H7S
STM32CubeMX 6.11 is a crucial update for the new STM32H7R and the STM32H7S MCUs because the software helps take advantage of their memory capabilities. Indeed, the devices have a smaller flash, which makes them the most cost-effective STM32H7. Since the device targets applications that must use external storage, the new memory can help significantly lower the bill of materials. Additionally, to make the embedded flash even more meaningful, ST introduced the boot flash, which stores the entire boot sequence, thus replacing the ROM we see on MCUs. Consequently, the embedded storage becomes even more flexible and practical since it isn’t only used for application, but boot, and initialization as well.
To make the boot flash more accessible, we are exposing the feature on STM32CubeMX. Put simply, the GUI will help developers configure the embedded flash to take advantage of its boot capabilities. Similarly, since the STM32H7R and STM32H7S will be used in systems with external memory, STM32CubeMX can set up an external loader so applications like STM32CubeProgrammer can program those discrete flash modules directly. It will also help developers load the main application in the embedded memory and the rest of the system in the external one.
Support for USBX middleware
The new version of STM32CubeMX adds support for the USBX middleware in a bare metal environment. USBX is a software stack that enables the use of a USB host or device. Until now, developers who wanted to use it had to install ThreadX RTOS. The problem is that if teams wanted to do away with the operating system to optimize their system, they couldn’t use USBX. Thanks to STM32CubeMX, it is now easier to include the right middleware into projects.
Make project generation
STM32CubeMX 6.11 inaugurates its support for CMake, an open-source suite of tools that allow developers to build, test, and package their software. It’s especially useful in large multi-platform projects because it helps streamline large workflows. The current CMake support current focuses on applications that run on a single-core MCU and do not use Trustzone. Over time, we will continue to update our CMake support to allow STM32CubeMX to generate projects for more STM32 microcontrollers.
What is STM32CubeMX?
STM32CubeMX is a graphical tool that helps developers generate code that initializes a microcontroller and its application. Users get an interface to configure the MCU’s pinout, resolve conflicts, and set up hardware peripherals and middleware. Users can also configure the clock tree and benefit from a wizard that automates specific calculations. Similarly, it can help set up and tune the DDR on STM32 MPUs. The tool also helps select MCUs or MPUs and download their software packages. Hence, it’s very often the first point of contact with developers. The tool is available in STM32CubeIDE or as a standalone download.
STM32CubeMX also assists developers in other parts of their job. For instance, finding the proper documentation can be tricky, especially with such a vast library. ST is famous for its extensive documentation, and partners tell us that it’s one of the reasons they select our devices. Hence, we offer tutorial videos within the standalone version of STM32CubeMX to help developers search for information. We offer content on configuring the clock tree, the pins, or different software features. Programmers who are new to our tools can start their application quicker, thus further lowering the barrier to entry and reducing friction.
For readers who may be less familiar with STM32CubeMX, here is a rundown of some of the features we’ve released in the past.
A UI for quick feature access
Embedded system developers must grasp the numerous layers of abstractions within their ecosystem. A typical PC or mobile app developer can do all their work with only one or very few high-level languages and scripting frameworks. Conversely, working with a microcontroller forces teams to consider the many existing layers. For instance, a team looking for the ultimate optimizations will work as close to the metal with low-level code. However, those looking for a more practical approach that can still yield excellent performance will use our hardware abstraction layer (HAL), and those with a priority on rapid development will use our board support package (BSP), which abstracts the HAL.
However, too many embedded ecosystems fail to understand that the higher the abstraction, the more developers seek convenience. Indeed, if teams must spend hours or even days setting up an abstraction layer, it becomes pointless. Consequently, CubeMX 6.10.0 introduced a new UI that helps initialize our BSP functions under “New Projects” -> “Start My Project”. The UI currently works with only a few of our newest development platforms (NUCLEO-C031C6, as well as NUCLEO-H563ZI and NUCLEO-U5A5ZJ-Q when TrustZone is disabled), but our teams are working to support more development boards over time.
Let’s take the example of a blinking light demo on the NUCLEO-H563ZI. The first step is to ensure that at least USER LED GREEN is selected in the Human Machine Interface dropdown menu. When choosing this option in the new UI, the system automatically commits the right pins, instead of just suggesting which pin to use and sets up the HAL so developers can immediately use the BSP function to toggle the LED on or off. Hence, users simply have to push the GENERATE CODE button on the top right side and open the main.c file in Core/Src/ to see the BSP_LED function initialized and ready to use in the main function and ready for use in the while loop.
Additionally, ST included a “Generate demonstration code” option, which adds comments and examples in the generated main C file. Hence, beyond automating the initialization process, the new UI can also serve as a guide for new developers who can open their new files and see how to toggle a light on and off, for instance. Consequently, even a developer with a cursory knowledge of C can run a blinking light application with minimal coaching. In a nutshell, the new version of STM32CubeMX aims to make embedded systems more accessible, even to those with minimal experience in the field.
No admin rights required
With version 6.10.0, STM32CubeMX for Windows managed to do away with the admin privilege requirement. Previously, the operating system would ask for the admin password when installing the utility. Now, thanks to a reworking of the installation process, Windows no longer asks for admin permissions, which is a tremendous help for users with a locked-down computer. Often, corporations lock their machines to prevent hacks or misuse, and it can be very cumbersome to ask the administrator to authorize an installation. STM32CubeMX 6.10.0 solved that. The Linux and macOS versions of STM32CubeMX don’t suffer the same issues due to how each operating system manages user privileges.
New support for the STM32H5 and STM32MP13
STM32CubeMX is often the first utility developers launch when working on their STM32 MCU because it lets them initialize their device, select the correct firmware package, configure the clock tree, and more. As a result, ST aims to add support for our latest devices continuously. For instance, this new version is compatible with the ability to generate files for secure projects running on our new STM32H5, which introduces new security safeguards. Similarly, STM32CubeMX now provides a memory management tool for the STM32WB and STM32WBA MCUs. The latter is also getting options to support its Thread, Zigbee, and 802.15.4 millimeter wave RF functionalities. Finally, as promised, we are also adding RTOS support for the new STM32MP13.
Memory Management Tool (MMT)
STM32CubeMX comes with a Memory Management Tool. The graphical user interface vastly facilitates the configuration of registers on devices like the STM32H5 or STM32U5, among others. For instance, it can help set up a device to use TrustZone, a secure environment, or a memory protection unit with only a few clicks. Previously, developers had to figure out which registers governed what function. The new MMT removes much of the complexity to create a far more intuitive experience. Furthermore, as STM32CubeMX 6.10.0 shows, we continue to bring the MMT to new STM32 devices.
Boot Path Management
The Boot Path Manager facilitates the configuration of the new boot loader available on the STM32H5. The latest mainstream MCU from ST supports an immutable root of trust (iRoT) and an updatable root of trust (uRoT). Depending on their security needs, developers can choose to use both, one or none. STM32CubeMX makes this possible by helping users select their configuration from a menu, automatically generate keys, and set up the boot path to secure the microcontroller. As STM32H5 development boards are increasingly available, we ensure that STM32CubeMX can help them take advantage of the new features.
Secure Manager
Secure Manager is another critical feature announced in early 2023 that is now accessible from STM32CubeMX. Secure Manager is our first Trusted Execution Environment. As part of the STM32 Trust initiative, it includes binaries and can help with certification at the system level. As a result, customers targeting a SESIL & PSA Level 3 Certification can vastly hasten their qualification process. In a nutshell, developers use STM32CubeMX to set up all the functionalities in Secure Manager, and the system then uses a scripting mechanism relying on the latest version of STM32CubeProgrammer CLI to configure the MCU.
Pre- and post-flight scripts
ST added pre- and post-flight scripting capabilities in STM32CubeMX to automate various tasks. Put simply, users can ask the application to launch scripts before and after it performs a code generation to adapt to the needs of expert users. For instance, a programmer could automatically copy files to a new folder or send them to GitHub before they are erased by the new files generated. It would enable engineers to keep a history of their configuration in case they’d like to revert to a previous state. Similarly, a post-flight script could add the newly generated files to a project and launch an IDE.
Authentication
STM32CubeMX requires users to log in to their my.ST.com account before downloading a package, which may perplex some in our community. Previously, users had to leave the application, go to ST.com, and enter their credentials when downloading a piece of software. A few versions ago, STM32CubeMX created a more cohesive experience by ensuring users don’t have to leave the software. However, it does mean asking for their credentials. However, it’s still possible to use STM32CubeMX without an account until that point