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.
- STM32CubeF7 version 1.16.0 ( or newer ) is installed. (Download)
- Download and extract STM32CubeF7 to your system. Make a note of installation path.
- Create the
STM32Cube_FW_F7_SDK_PATH
environment variable and set its value to the STM32CubeF7 installation path. For example:STM32Cube_FW_F7_SDK_PATH=<STM32Cube extraction path>\STM32Cube_FW_F7_V1.15.0
Where,
<STM32Cube extraction path>
is the STM32CubeF7 install path.
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
- automotive
- motor_cluster
- thermo
Note: build targets for this demo are thermo_big and thermo_small
- watch
- 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
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.
Note: 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.
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.
Platform-related source code
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.