STM32U599 开发 TouchGFX GUI 应用时,使用 STM32CubeIDE 下载常卡在 93% 并报错,而 IAR 和 STM32CubeProgrammer 可正常下载,核心原因是 TouchGFX 生成的工程指定的 Flash Loader 文件名,与 CubeIDE 安装目录下的 Loader 文件名不一致,导致 Loader 加载失败。本文基于 ST 官方 LAT1384 应用笔记,详解问题排查、根源分析及 1 分钟解决流程,适用于所有外扩 NorFlash 的 TouchGFX+STM32 项目。
1. 核心问题与现象
1.1 应用场景
- 硬件:STM32U599 芯片(外扩 NorFlash,接法与 STM32U599J_DK 开发板一致);
- 软件:STM32CubeIDE 1.14.0、TouchGFX Designer 4.22、STM32CubeProgrammer 2.15.0;
- 现象:CubeIDE 下载 TouchGFX 应用时,进度到 93% 停滞,报错 “Error finishing flash operation”,IAR 编译后下载正常,CubeProgrammer 手动下载也正常。
1.2 关键排查结论
- 排除硬件故障:OSPI 裸机程序读写 NorFlash 正常,CubeProgrammer 用 STM32U599J_DK 的 Flash Loader 可正常操作;
- 排除 Loader 本身问题:官方 Loader 适配开发板接法,可正常使用;
- 锁定问题范围:CubeIDE 与 TouchGFX 工程的 Flash Loader 配置不匹配。
2. 问题根源:CubeIDE 与 TouchGFX 的 Loader 文件名不一致
2.1 两个关键 Loader 目录(独立不共用)
- STM32CubeProgrammer 的 Loader 目录:默认在安装路径 “bin/ExternalLoader”,包含适配多种开发板的 stldr 文件;
- STM32CubeIDE 的 Loader 目录:独立于 CubeProgrammer,路径为:
STM32CubeIDE_1.14.0STM32CubeIDEpluginscom.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.win32_2.1.100.202311100844toolsbinExternalLoader
2.2 文件名不匹配的核心冲突
- TouchGFX 生成的工程:默认指定的 Flash Loader 名为
MX25LM51245G_STM32U599J-DK.stldr; - CubeIDE 目录下的 Loader:实际存在的对应 Loader 名为
MX25UM51245G_STM32U5x9J-DK.stldr; - 冲突结果:CubeIDE 找不到工程指定的 Loader 文件,加载失败,导致下载中断在 93%。
3. 解决方案:1 分钟修改 CubeIDE Loader 配置
无需修改 Loader 文件本身,仅需在 CubeIDE 工程中选择正确名称的 Loader,步骤如下:
3.1 打开工程 Loader 配置页面
- 在 STM32CubeIDE 中打开 TouchGFX 工程,点击顶部菜单栏「Run」→「Run Configurations」;
- 在弹出的窗口中,展开「STM32 Application」,选中当前工程的运行配置(如 “STM32U5A9J-DK-FreeRTOS”);
- 切换到「Debugger」标签页,找到「External loaders」选项组。
3.2 替换为正确的 Loader 文件
- 此时可见工程默认选中的 Loader 为
MX25LM51245G_STM32U599J-DK.stldr(红色或灰色表示未找到); - 点击「Remove」删除该 Loader;
- 点击「Add」,在弹出的列表中选择 CubeIDE 目录下存在的 Loader:
MX25UM51245G_STM32U5x9J-DK.stldr; - 勾选「Enabled」,确保「Initialize」为 false,点击「Apply」保存配置。
3.3 测试下载
点击「Run」开始下载,进度可正常走到 100%,TouchGFX 应用成功烧录并运行,报错彻底解决。
4. 关键注意事项(避坑核心)
- Loader 目录独立:CubeIDE 不共用 CubeProgrammer 的 Loader,需确保工程指定的 Loader 在 CubeIDE 的 ExternalLoader 目录中存在;
- 硬件接法复用:外扩 NorFlash 时,尽量沿用 STM32 官方开发板(如 STM32U599J_DK)的引脚接法,可直接复用官方 Loader,无需自行开发;
- 版本兼容性:TouchGFX 生成的工程可能默认指定旧版或特定名称的 Loader,升级 CubeIDE 后需重新核对 Loader 名称是否匹配;
- 快速验证:若不确定哪个 Loader 适配,可在 CubeProgrammer 中测试 Loader 可用性,再到 CubeIDE 中选择同名文件。
STM32CubeIDE 下载 TouchGFX 应用的 93% 报错,并非硬件或 Loader 本身问题,而是文件名不匹配导致的配置冲突。核心解决思路是 “让工程指定的 Loader 名称,与 CubeIDE 目录下的实际 Loader 名称一致”,操作仅需 1 分钟,无需修改代码或硬件。
阅读全文
136