STM32H755zi (uGOAL)


The STM32H755zi is based on the high-performance Arm® Cortex®-M7 and Cortex®-M4 32-bit RISC cores. The Cortex®-M7 core operates at up to 480 MHz and the Cortex®-M4 core at up to 240 MHz. It incorporate a dual-bank Flash memory of 2 Mbytes, up to 1 Mbyte of RAM. The STM32H755zi is capable as an application controller for the iRJ45/SoM module.

STM32H755zi targets are only compatible with uGOAL.

uGOAL applications will be build for the Cortex®-M4.

The port for STM32H755zi bases on ST’s HAL Layers. Thus porting to any other ST hardware is very easy. See here for additional information: .



For compiling the example code, the GNU Arm Embedded Toolchain is required. It can be obtained in several ways. Further information can be found here:

Make sure, the toolchain is added properly to your path variable after the installation.


Within a example folder (e.g. projects/ugoal/02_profinet/gcc) of the software delivery build the firmware with following commands:

1 2 # build for h755zi make PLATFORM=stm32h755zi clean all


The Makefile will create two seperate binaries: one binary for the Cortex®-M4 and another one with included startup code for the Cortex®-M7. The startup code of the Cortex®-M7 resets the M4, initializes the clock settings and then start the application on the M4.

Flashing the firmware is done by copying the generated binary build/stm32h755zi/02_profinet_stm32h755zi_CM4_CM7.bin onto the STM32H755zi via the file explorer.

The binary with includes startup code must be copied to the STM32H755zi. Otherwise the Cortex®-M7 won’t start the application on the Cortex®-M4.

Integration into STM32CubeIDE

In the software delivery a project generator for STM32CubeIDE projects is integrated. It requires a python3 installation.

Within the project folder (ugoal/projects/ugoal/02_profinet/gcc) trigger project creation using the following command:

1 make PLATFORM=stm32h755zi gen_project

The multiple choice menu allows selection of a template. For STM32H755zi a template is available, which can be selected by choosing [4] (stmcubeide):

1 2 3 4 5 6 7 8 9 10 11 Please select a template - OR - press <CTRL+c> and set the GEN_PROJECT_TPL environment variable. Choose IDE: [ 1] e2studio [ 2] eclipse [ 3] mcuxpressoide [ 4] stmcubeide Choice [1-4]:
1 2 3 4 5 6 7 Choose template: [ 1] port/stmcubeide_som_stm32f103rb_nucleo [ 2] port/stmcubeide_som_stm32f429zi_nucleo [ 3] port/stmcubeide_som_stm32g071rb_nucleo [ 4] port/stmcubeide_som_stm32h755zi_nucleo Choice [1-4]:

After selection of the proper template (which needs to match the platform), an STM32CubeIDE project is located in the “ide” subfolder of the project. This project can be imported into STM32CubeIDE:

Select the project folder and import all projects for the STM32H755zi:

The imported projects can be compiled.

The project for the CM7 contains startup code to initialize clock settings and other peripherie while holding the CM4 in reset. Then the CM7 releases the CM4 and it will start the application and uGOAL.

In order to debug the uGOAL application, you have to:

  1. flash and run CM7 project and exit,

  2. flash and debug CM4 project.

The CM7 application has to be flashed only once.

Due to the reset mechanism of the CM7, you’ll have to step through the startup code until function HAL_PWREx_ClearPendingEvent();. After that, you're able to start the application.

Getting Started


Hardware Requirements

Arduino PMOD Adaptershield

Make sure following settings are set:

  • J13 - Connect “iRJ45” with “Sockel”

  • J8 - Connect “CS_SOURCE” with “PB2”

  • J7 - Connect “RST_SOURCE” with “PD7”

  • Set all DIP-Switches to “OFF”

STM32H755zi Board

There is no configuration required.

Target System

Please connect both boards with each other, before you connect them per USB to your computer.

There is no further configuration required.



The STM32H755zi provides an UART over USB cable. Choose the following settings:



Data Bits


Stop Bits




Flow Control


Application 02_profinet

The available applications are described here. Following you’ll find an example. After setting up the serial monitor and starting the debug session, the output should look like this:

1 2 3 4 5 6 7 8 9 10 11 12 13 [INF] ../rpc/goal_mctc_rb.c:277 creating rpc ring buffer with buffer size 768 and elem size 256 [INF] ../rpc/goal_mctc_rb.c:277 creating rpc ring buffer with buffer size 768 and elem size 256 [INF] ../goal_media/goal_mi_mctc.c:793 rpc transfer size set to 1024 [INF] ../goal_media/goal_mi_mctc.c:723 peer requested Sync Init [INF] ../goal_media/goal_mi_mctc.c:723 peer requested Sync Init [INF] ../goal_media/goal_mi_mctc.c:723 peer requested Sync Init [INF] ../goal_media/goal_mi_mctc.c:723 peer requested Sync Init [INF] ../goal_media/goal_mi_mctc.c:455 RPC state synchronized, running appl_setup [INF] ../goal_media/goal_mi_mctc.c:458 configuring timeout values for peer [INF] ../pnio/goal_pnio_rpc_ac.c:259 PROFINET Application Core successfully started [INF] ../example/02_profinet/goal_appl.c:188 Initializing device structure [INF] ../example/02_profinet/goal_appl.c:230 PROFINET ready [INF] ../goal_media/goal_mi_mctc.c:487 local setup done

Known Issues

EtherCAT DC is not supported.