跳转到主要内容

编译& 烧录

本节描述如何完成从TouchGFX应用程序代码到程序执行这一过程,即如何在特定的设置中进行编译和烧录。

编译TouchGFX应用程序

当编译一个TouchGFX应用程序时,有两个选项:面向PC模拟器进行编译,或面向目标硬件进行编译。

面向PC模拟器进行编译

面向PC模拟器编译项目时有两个选项:GCC和Visual Studio。
这两个选项始终可用,因为它们是由TouchGFX Designer生成的。

GCC

Makefile的位置<touchgfx_application_root_folder>/simulator/gcc/Makefile

TouchGFX包含一个MinGW环境,该环境预装了一个GCC编译器和GNU Make,可以轻松执行面向PC模拟器生成的Makefile。

TouchGFX Environment可以从C:/TouchGFX/4.18.0/env/MinGW/msys/1.0/msys.bat启动,或者从添加到Windows启动菜单的快捷方式(名为“TouchGFX x.y.z Environment”,其中x、y和z描述版本号)启动。

在启动TouchGFX Environment并导航到TouchGFX Application根文件夹后,可以执行下面的简单命令以生成一个simulator.exe文件。

make -f simulator/gcc/Makefile

然后可以使用以下命令从TouchGFX Environment启动模拟器可执行文件。

./build/bin/simulator.exe

也可以从TouchGFX Designer编译和启动PC模拟器,方法是使用Run Simulator命令。

Visual Studio

要使用Visual Studio编译PC Simulator,只需使用Visual Studio打开位于<touchgfx_application_root_folder>/simulator/msvs/Application.sln的已生成解决方案文件。

可以直接从Visual Studio启动PC 模拟器,启用代码调试

Note
在运用GCC或Visual Studio进行编译之前,从TouchGFX Designer运行Generate命令。

面向目标硬件进行编译

对于基于TouchGFX板卡设置的应用程序来说,面向STM32评估套件进行项目编译是非常简单的。

每个TouchGFX板卡设置包含面向GCC、STM32CubeIDE、IAR和Keil的项目文件:

  • GCC: <project_root_folder>/gcc/MakeFile
  • STM32CubeIDE: <project_root_folder>/STM32CubeIDE/.cproject
  • IAR: <project_root_folder>/EWARM/Project.eww
  • Keil: <project_root_folder>/MDK-ARM/<STM32_evaluation_kit_name>.uvprojx

STM32CubeMX默认设置的活动工具链为STM32CubeIDE。 请注意!所有项目文件不会同时出现。 生成的项目文件取决于在STM32CubeMX中选择的工具链

TouchGFX包含一个MinGW环境,该环境预装了面向Arm 和GNU Make的GNU嵌入式工具链,可以轻松执行所包含的面向目标硬件的Makefile。

TouchGFX Environment可以从C:/TouchGFX/4.18.0/env/MinGW/msys/1.0/msys.bat启动,或者从添加到Windows启动菜单的快捷方式“TouchGFX x.y.z Environment”启动

在启动TouchGFX Environment并导航到项目根文件夹后,可以执行下面的简单命令,面向目标硬件进行项目编译。

make -f gcc/Makefile
Note
在运用GCC、STM32CubeIDE、IAR或Keil进行编译之前,从TouchGFX Designer运行Generate命令。

烧录STM32评估套件

因为项目基于预先完成的TouchGFX板卡设置,将项目烧录到STM32评估套件是非常轻松的。

每个项目在构建之后都会生成一个二进制文件,该文件可以通过ST Link UtilitySTM32CubeProgrammer刷写。

因此,必须安装这些工具,才能进行烧录。

建议将这些工具安装到默认位置。

  • ST Link Utility默认安装位置:
    C:/Program Files (x86)/STMicroelectronics/STM32 ST-LINK Utility/ST-LINK Utility
  • STM32CubeProgrammer默认安装位置:
    C:/Program Files/STMicroelectronics/STM32Cube/STM32CubeProgrammer
Note
TouchGFX板卡设置不提供任何flash loader,用于直接从IAR、Keil、STM32CubeIDE或其他IDE进行烧录。

GCC与TouchGFX Designer

Makefile(包含在位于<project_root_folder>/gcc/MakeFile的TouchGFX板件设置中)内置一条烧录命令(如下所示),使用ST Link Utility或STM32CubeProgrammer(取决于AT)来刷写 STM32评估套件。 也可以使用桌面版烧录工具,通过生成的.hex文件烧录板卡。

make -f gcc/Makefile flash

.hex文件位于<project_root_folder>/TouchGFX/build/bin/target.hex

也可以只写入内部flash存储器,从而跳过外部flash存储器。 如果您有大量的图片,这样可以大大减少烧录时间。 但是,您需要确保自从上次写入外部flash存储器以来,外部flash存储器的内容没有改变。 如果外部flash存储器的内容已经改变,而又不重新烧录,您会看到奇怪的行为。 在这种情况下,需要同时重新烧录内部和外部flash存储器。

make -f gcc/Makefile intflash

.hex文件位于<project_root_folder>/TouchGFX/build/bin/intflash.hex

TouchGFX板件设置同样为TouchGFX Designer提供了配置,以便能够Run Target命令烧录项目。 被TouchGFX Designer用于进行烧录的命令可以在TouchGFX Designer中配置视图构建部分看见并覆盖。

STM32CubeIDE

TouchGFX板卡设置使用STM32CubeIDE输出的.elf文件支持通过STM32CubeProgrammer对用STM32CubeIDE编译的项目进行烧录。

.elf文件位于<project_root_folder>/STM32CubeIDE/Debug/<STM32_evaluation_kit_name>.elf

e.g. C:/TouchGFXProjects/MyApplication/STM32CubeIDE/Debug/STM32F746G_DISCO.elf

IAR

TouchGFX板卡设置使用IAR输出的.hex文件支持通过STM32CubeProgrammer对用IAR编译的项目进行烧录。

.hex文件位于<project_root_folder>/EWARM/<STM32_evaluation_kit_name>/Exe/<STM32_evaluation_kit_name>.hex

例如,C:/TouchGFXProjects/MyApplication/EWARM/STM32F469I-DISCO/STM32F469I-DISCO.hex

Keil

TouchGFX板卡设置使用Keil输出的.hex文件支持通过STM32CubeProgrammer对用Keil编译的项目进行烧录。

.hex文件位于<project_root_folder>/MDK-ARM/<STM32_evaluation_kit_name>/<STM32_evaluation_kit_name>.hex

e.g. C:/TouchGFXProjects/MyApplication/MDK-ARM/STM32F469I-DISCO/STM32F469I-DISCO.hex

烧录自定义硬件

如果需要刷写的是自定义硬件,而不是STM32评估套件这样的预定义硬件设置,则仍然可以使用STM32CubeProgrammer。 STM32CubeProgrammer不一定带有针对你的特定外部存储器的flash加载机制。 然而,可以创建一个自定义的flash loader。 参阅关于如何为外部存储器开发自定义加载器的用户手册可了解更多信息。