Introduction

In this document general notes regarding support for STM32 controllers are given.

Thanks to uGOAL (minimalistic implementation of a small subsystem of GOAL framework functionality) nearly every STM32 controller can be used with SoM as an application controller. Porting to STM32 controller derivates can be done very quickly thanks to the usage of the ST HAL Layers.

Additional information about uGOAL can be found here: 004 - uGOAL - Introduction

Requirements and supported targets

Requirements for the used controller are minimal:

Thus nearly every STM32 Target is possible. Example ports for STM32F103RB and STM32G01RB are available. Following boards are supported right away:

https://www.st.com/en/evaluation-tools/nucleo-f103rb.html

https://www.st.com/en/evaluation-tools/nucleo-g071rb.html

https://www.st.com/en/evaluation-tools/nucleo-f429zi.html

Examples

Examples are available, where additional information can be found here: iRJ45 / SoM - uGOAL Examples

Building

The uGOAL software delivery already contains generated projects for several platforms for the STM32CubeIDE - please refer to “Integration into STM32CubeIDE”. Building a project is only necessary, if the project files for your desired platform are missing.

Examples are located in the project folder of the software delivery:

projects
├── 2015013_irj45
│   ├── 01_pnio_io_mirror
│   ├── 02_eip_io_data
│   ├── 04_pnio_validation
│   ├── 05_pnio_01_simple_io
│   ├── 06_eip_io_data_static_ip
│   ├── 07_pnio_dsn
│   ├── 08_pnio_01_simple_io_http
│   ├── 09_ecat_slave
│   ├── 10_pnio_process_alarm
│   ├── 11_firmware_update
│   ├── 12_ecat_validation
│   ├── 13_firmware_update_callback
│   ├── 14_ip_management
│   └── 15_tcp_proxy
├── goal_http
│   ├── 01_get
│   ├── 02_post
│   ├── 03_list_res
│   ├── 04_auth
│   ├── 05_template_cm
│   ├── 06_template_list
│   └── 07_template_table
├── goal_net
│   ├── 01_udp_receive
│   ├── 02_tcp_client
│   └── 03_tcp_server
└── ugoal
    ├── 01_ethercat
    ├── 02_profinet
    ├── 03_eip
    ├── 04_profinet_dyn_modules
    ├── 05_ccm
    ├── 06_ethercat_minimal
    ├── 07_http_ip_management
    ├── 08_pnio_io_mirror
    └── 09_pnio_io_mirror_new_api

To build an example enter its folder and execute the following build command:

cd projects/ugoal/02_profinet/gcc
make

This command will list all supported platforms

 *** Please specify platform from the list ***
    > make PLATFORM=atmega2560
    > make PLATFORM=linux
    > make PLATFORM=osx
    > make PLATFORM=rl78g14
    > make PLATFORM=stm32
    > make PLATFORM=stm32f103rb
    > make PLATFORM=stm32f429zi
    > make PLATFORM=stm32g071rb

Building for a specific platform is done with the following command:

# build for f103rb
make PLATFORM=stm32f103rb clean all
3# build for g071rb
make PLATFORM=stm32g071rb clean all

Flashing

Flashing the firmware is done with the following command. Please use the UART device for your system.

make PLATFORM=stm32f103rb UART=/dev/tty.ACM0 flash

To get serial logging an additional Makefile target “serial” is available. It will use the pyserial-miniterm tool from the pyserial package. Flashing and opening a serial console can be combined in one call:

make PLATFORM=stm32f103rb UART=/dev/tty.ACM0 flash serial

Integration into STM32CubeIDE

The uGOAL delivery already contains project files for STM32CubeIDE for several platforms. Just skip the creation of the Project and go straigth to importing project into STMCubeIDE.

Create Project with command line

If you want to build your own project, just use the project generator which is delivered with the uGOAL software. It requires a python3 installation.

Within the project folder trigger project creation using the following command:

make PLATFORM=stm32g071rb gen_project

Please select a template - OR - press <CTRL+c> and set the
GEN_PROJECT_TPL environment variable.

Choose IDE:
  [ 1] e2studio
  [ 2] eclipse
  [ 3] stmcubeide


Choice [1-3]:

The multiple choice menu allows selection of a template. For STM32G071RB and STM32F429ZI templates are available, which can be selected by choosing menu 3 (stmcubeide):

Choose template:
  [ 1] port/stmcubeide_som_stm32f429zi_nucleo
  [ 2] port/stmcubeide_som_stm32g071rb_nucleo

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

Import Projects into STMCubeIDE

The projects can be imported into STM32CubeIDE via “File”->”Import…”:

Select the project folder for project import, check your desired platform and click “Finish”:

The imported project can be compiled and debugged: