C

STM32F769I Discovery Kit Setup Instructions

This topic helps you setup the development environment for STM's STM32F769I discovery kit.

Board features

  • STM32F769NIH6 MCU (ARM® Cortex®-M7)
  • 4” capacitive touch LCD display (800x480)
  • 512+16+4 Kbytes of RAM
  • 128-Mbit SDRAM
  • 2 MB Flash memory
  • 512-Mbit Quad-SPI NOR Flash memory

More information fromSTM32F769I Discovery Website

Setting up development environment

  • Ensure that the common STM prerequisites are met
  • Install STM32CubeF7 SDK 1.16.0 or newer (provided by the Qt online installer)

Qt Creator IDE

  • Launch Qt Creator and select Tools > Options > Devices > MCU.
  • Select the Qt for MCUs 1.3 - STM32F769I-DISCOVERY from the drop-down list for Target supported by the Qt for MCUs SDK.
  • Provide the STM32CubeProgrammer install path if it is not installed in the default location.
  • Select Create Kit to create a kit for the selected target. if a kit already exists, remove it first using Remove Kit.

    Note: If you don't see the option to create a kit, check your settings in the Requirements section.

  • Click Apply.

Command line setup

To get started from the command line, ensure that the following these instructions:

  • Qul_DIR to the Qt for MCUs SDK install path.
    <QT_INSTALL_PATH>\QtMCUs\<VERSION>

    where,

    • <QT_INSTALL_PATH> is the Qt install directory,
    • and <VERSION> is the directory containing the Qt Quick Ultralite version you are using, for example 1.1.0.
  • ARMGCC_DIR to the ARM Toolchain install path.
  • Add the CMake and Ninja tools to your system PATH. If you installed these tools using the Qt online installer, they are installed under <QT_INSTALL_PATH>\Tools.
  • Add STM32CubeProg install directory to System PATH if it is not installed in the default location.
  • Add ST-LINK_gdbserver.exe directory to your System PATH
    <STM32_CUBE_IDE_INSTALL_PATH>\stm32cubeide_1.3.0\plugins\com.st.stm32cube.ide.mcu.externaltools.stlink-gdb-server.win32_1.3.0.202002181050\tools\bin

    where, <STM32_CUBE_IDE_INSTALL_PATH> is the Cube IDE install path.

    Note: STM32CubeIDE is optional and required only for on-chip debugging purposes.

  • Create the STM32Cube_FW_F7_SDK_PATH environment variable and set it to the following path:
    <QT_INSTALL_PATH>\Tools\QtMCUs\STM\STM32Cube_FW_F7_V<version>

    where, <QT_INSTALL_PATH> is the Qt install directory.

Build configuration

Qt Creator provides a build configuration with the kit that you created created earlier for the Qt for MCUs 1.3 - STM32F769I-DISCOVERY target. If you are using a command line setup, configure using the following CMake variables. For more information, see the CMake Manual.

  • QUL_PLATFORM

    The platform to build for must be set to stm32f769i-discovery for this board.

    -DQUL_PLATFORM=stm32f769i-discovery
  • CMAKE_TOOLCHAIN_FILE

    This platform supports armgcc compiler.

    -DCMAKE_TOOLCHAIN_FILE=%Qul_DIR%\lib\cmake\Qul\toolchain\armgcc.cmake
  • QUL_COLOR_DEPTH

    The supported color depth by this platform is 32-bit.

    Note: If this variable is not set, default color depth is used while configuring for the platform.

    -DQUL_COLOR_DEPTH=32
  • QUL_COPY_TO_RAM

    By default, the asset data for application is copied to SDRAM on application startup. In order to keep resources in external flash, and not load it to RAM on startup, use the QUL_COPY_TO_RAM CMake option with the value Never when adding assets to the application with qul_add_resource.

Prebuilt demos and examples

The package for STM32f769I-DISCOVERY board comes with a prebuilt thermo demo binary. As Qt Quick Ultralite supports both bare metal and FreeRTOS on this board, there are different binaries for both under the demos_images directory. Also Thermo demo has two variants, one with metric units and another with imperial units.

See the flashing instructions for the ST boards section, for more information on flashing the device. For this board, select MX25L512G_STM32F769I-DISCO as the external loader.

Demos and examples source code

Qt for MCUs provides the source code of several demos and examples. You can modify, build, and flash custom binaries onto the target device.

Source code for supported demos and examples is organized in the following directory structure:

  • demos
  • examples
    • charts
    • chess
    • freertos_multitask
    • image_cache
    • interrupt_handler
    • minimal
    • redbutton
    • styling

      Note: build targets for this example are styling_custom and styling_default

    • translation

      Note: build targets for this example are translation_all and translation_lv

Note: Demos or examples that are highlighted in bold are the only ones supported on this board.

Building applications with prebuilt Qt Quick Ultralite libraries

Qt Creator IDE

Open the CMake project file for the example you want to build and configure it with the kit you created earlier. Once the project is configured, select Run or press Ctrl+r on your keyboard to build and flash the binary to the target.

Command line

The following example builds the thermo demo for this board:

cd %Qul_DIR%\demos\thermo
mkdir build
cd build
cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_TOOLCHAIN_FILE=%Qul_DIR%\lib\cmake\Qul\toolchain\armgcc.cmake -DQUL_PLATFORM=STM32F769I-DISCOVERY
cmake --build .

Once you have successfully built the thermo demo, you can flash it from command line:

cmake --build . --target flash_thermo_big

The same procedure applies to any other application.

Buliding demos and examples for FreeRTOS

To build demos or examples for FreeRTOS, add the STM32F7_FREERTOS_DIR environment variable and set its value to the FreeRTOS source directory from STM32CubeF7. For example:

STM32F7_FREERTOS_DIR=%STM32Cube_FW_F7_SDK_PATH%\Middlewares\Third_Party\FreeRTOS\Source

The build steps are same as for bare metal, except that you must add -DOS=FreeRTOS to the cmake configure command:

cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=%Qul_DIR%\lib\cmake\Qul\toolchain\armgcc.cmake -DQUL_PLATFORM=STM32F769I-DISCOVERY -DOS=FreeRTOS

Note: If you already built the example earlier with default configuration, you must clean the build directory or use another build directory (build_freertos for example).

For more information about FreeRTOS integration, refer to Using Qt Quick Ultralite with FreeRTOS.

Building Qt Quick Ultralite

Qt for MCUs provides the source code for the Qt Quick Ultralite library. To build this library along with all of supported demos and examples, run following commands in terminal window:

cd %Qul_DIR%
mkdir build
cd build
cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=..\lib\cmake\Qul\toolchain\armgcc.cmake -DQUL_GENERATORS=..\lib\cmake\Qul\QulGenerators.cmake -DQUL_PLATFORM=STM32F769I-DISCOVERY
cmake --build .

Once you have successfully built Qt Quick Ultralite, you can flash the supported demos or examples from command line.

cmake --build . --target flash_<DEMO_OR_EXAMPLE_NAME>

Where, DEMO_OR_EXAMPLE_NAME is the name of demo or example.

You can find STM32F769I-DISCOVERY-related platform code in the src\platform\boards\st\stm32f769i-discovery directory:

cd %Qul_DIR%\src\platform\boards\st\stm32f769i-discovery

Some platform-related code is common for STM boards, and this code lives in the src\platform\boards\st\common directory:

cd %Qul_DIR%\src\platform\boards\st\common

Building applications using a custom built Qt Quick Ultralite

This section describes how to build an application, using a custom Qt Quick Ultralite build.

  • First, you must set up the development environment as described earlier.
  • Build Qt Quick Ultralite from the modified sources and install it to a custom location.
    mkdir some\path\custom_builds\qul
    cd some\path\custom_builds\qul
    
    mkdir qul-build
    cd qul-build
    
    cmake <PATH_TO_INSTALLED_QT_SDK>\QtMCUs\<version> \
          -G "Ninja" \
          -DCMAKE_INSTALL_PREFIX=some\path\custom_builds\qul \
          -DCMAKE_BUILD_TYPE=Release \
          -DCMAKE_TOOLCHAIN_FILE=<PATH_TO_INSTALLED_QT_SDK>\QtMCUs\<version>\lib\cmake\Qul\toolchain\armgcc.cmake \
          -DQUL_PLATFORM=<PLATFORM_NAME> \
          -DQUL_BUILD_TESTS=OFF \
          -DQUL_BUILD_DEMOS=OFF \
          -DQUL_BUILD_EXAMPLES=OFF \
          -DQUL_GENERATORS=<PATH_TO_INSTALLED_QT_SDK>\QtMCUs\<version>\lib\cmake\Qul\QulGenerators.cmake \
    
    ninja install
  • Use the custom Qt Quick Ultralite to build your application, which is not part of the Qt Quick Ultralite source tree:
    cd some\path\custom_builds
    mkdir app # Put your application here. You can use the redbutton example from the SDK.
    cd app
    mkdir build
    cd build
    
    set QUL_DIR=some\path\custom_builds\qul
    cmake .. \
          -G "Ninja" \
          -DCMAKE_BUILD_TYPE=Release \
          -DCMAKE_TOOLCHAIN_FILE=some\path\custom_builds\qul\lib\cmake\Qul\toolchain\armgcc.cmake \
          -DQUL_GENERATORS=<PATH_TO_INSTALLED_QT_SDK>\QtMCUs\<version>\lib\cmake\Qul\QulGenerators.cmake \
          -DQUL_PLATFORM=<PLATFORM_NAME> \
    
    ninja
    ninja flash_<YOUR_APP_NAME>

Reading debug messages

By default, the output of printf calls are redirected to STLink virtual COM Port, which is exposed on the host machine via USB. Serial configuration is following:

   Baud rate: 115200
   Data bits: 8
   Stop bits: 1
      Parity: None
Flow control: None

Debugging

  • Open terminal window and run the following command:
    ST-LINK_gdbserver.exe -cp "<STM32_CUBE_PROG_INSTALL_PATH>\bin"

    where, <STM32_CUBE_PROG_INSTALL_PATH> is the directory where you've installed the Cube Programmer tool.

    GDB Server is now listening for TCP connections on the default port, 61234.

    Note: Actual TCP port used by ST-LINK_gdbserver is printed out on gdbserver's console.

  • Run arm-none-eabi-gdb in a separate console
    %ARMGCC_DIR%\bin\arm-none-eabi-gdb.exe <PATH_TO>\your_app.elf
  • Connect to the target via the gdbserver in the arm-none-eabi-gdb console using
    (gdb) target remote 127.0.0.1:61234

Troubleshooting

ST-LINK_gdbserver requires up-to-date ST-LINK firmware to be installed. If you see the following error:

Error in initializing ST-LINK device. Reason: ST-LINK firmware upgrade required.

you must upgrade the firmware to the latest version using the STM32CubeProgrammer tool.

If the problem persists after upgrade, retry with ST-LINK Upgrade tool from the ST webpage ( Download ).

Available under certain Qt licenses.
Find out more.