ST意法半导体
直播中

张秀兰

8年用户 1341经验值
私信 关注
[问答]

TouchGFX Designer下载工程到STM32H7S7-DK报错的原因?

我在使用TouchGFX Designer下载工程,编译无错误,下载提示错误,日志如下:
    Flash        make -f ../../gcc/Makefile flash        make -C D:/STM32/stm32H7s_work/lugl_mypro1/gcc/ --no-print-directory -f makefile_boot  flash        Linking Boot/TouchGFX/build/bin/target.elf        Producing additional output formats...          target.hex   - Combined internal+external hex          intflash.elf - Internal flash, elf debug          intflash.hex - Internal flash, hex              -------------------------------------------------------------------                               STM32CubeProgrammer v2.17.0                          -------------------------------------------------------------------        ST-LINK SN  : 003F00203033510135393935        ST-LINK FW  : V3J15M6        Board       : STM32H7S78-DK        Voltage     : 3.29V        Error: ST-LINK error (DEV_TARGET_NOT_HALTED)        2nd connect tentative with frequency (8MHz)        ST-LINK SN  : 003F00203033510135393935        ST-LINK FW  : V3J15M6        Board       : STM32H7S78-DK        Voltage     : 3.29V        Error: ST-LINK error (DEV_TARGET_NOT_HALTED)        make[2]: *** [_intflash_] Error 1        d:/stm32/stm32H7s_work/lugl_mypro1/gcc/include/flash_sections_int_ext.mk:10: recipe for target '_intflash_' failed        makefile_boot:45: recipe for target 'flash' failed        make[1]: *** [flash] Error 2        ../../gcc/Makefile:8: recipe for target 'flash' failed        make: *** [flash] Error 2        Failed    Failed看了信息的提示,是连接到STLINK错误,但是我使用STM32CubeIDE下载是正常的。

回帖(1)

李桂兰

2025-6-18 17:53:06

根据你提供的日志片段和错误描述,编译通过但下载失败,特别是在STM32H7S7-DK这种双核(CM7 + CM4)设备上,这通常是环境配置、硬件连接或项目设置问题。以下是常见原因和详细的排查步骤:




? 最可能的原因(结合日志线索)




  1. ?️ 路径过长或特殊字符问题 (Windows常见):



    • 你的项目路径 D:/stm32/stm32H7s_work/lugl_mypro1/gcc/... 看起来有点长。Windows命令行工具对长路径比较敏感,强烈建议将整个TouchGFX工程文件夹移到更短的路径下,例如直接放在磁盘根目录(如 D:MyProject。这是STM32开发中导致奇怪下载问题的常见原因❗




  2. ⚙️ ST-LINK驱动或连接问题:



    • 物理连接: 检查开发板与PC的USB线连接是否牢固可靠,最好尝试更换另一条USB数据线。

    • ST-LINK驱动:

      • 卸载并重新安装最新版驱动: 访问 ST官网 ST-LINK驱动下载页 下载安装最新驱动。

      • 检查设备管理器: 在Windows设备管理器中:

      • 开发板通电连接后,检查通用串行总线控制器下是否有STMicroelectronics STLink dongle或类似设备,没有感叹号表示驱动正常。

      • 检查端口(COM和LPT)下是否有STLink Virtual COM Port


    • 尝试其他工具: 使用ST官方软件STM32CubeProgrammer连接开发板,看是否能正常识别设备并通信。连接时请确认PortST-LinkMode选择Under Reset有时更稳定。




  3. ? 供电问题:



    • H7开发板功耗较高,特别是带屏运行时。确保开发板是通过配套的高品质USB线缆连接到PC的USB 3.0端口或电源适配器供电。某些PC主板的前置USB口供电能力不足,请用主板后置USB口。

    • 检查开发板上的电源指示灯是否正常点亮(通常是绿色LED)。




  4. ⚠️ 目标设备配置错误:



    • 在TouchGFX Designer中(或在其生成的STM32CubeMX工程中),请务必确认选择的正确设备型号是STM32H7S7L8I8STM32H7S7L8H8(根据DK版本)。错误型号会导致内存映射和启动地址异常。

    • 双核配置问题(H7S特有): STM32H7S7是双核设备(Cortex-M7 + Cortex-M4)。TouchGFX通常在M7上运行。

      • 检查工程是否配置为单核启动(仅M7启动)或正确配置了双核启动序列。

      • 在CubeMX的Project Manager -> Code Generator中确认Generated files选项中勾选Generate peripheral initialization as a pair of .c/.h files per peripheral

      • Cortex-M7Cortex-M4的设置中,检查启动后HSEM(硬件信号量)初始化是否正确,这对双核协同很关键。可以暂时停用CM4,将工程配置为纯单核启动测试。





  5. ? Flash编程算法缺失或不匹配:



    • 在IDE/链接器设置中需包含STM32H7S7系列的正确内部Flash编程算法文件(.flash.stldr格式)。

    • 检查位置: 在工具链的makefile或链接器脚本中引用的算法路径是否正确。可尝试手动复制STM32H7S7_xxxx_YYY.FLM到项目gcc目录下(或工具链算法目录)。

    • 确认目标Flash大小和地址范围设置是否正确。




  6. ? Bootloader配置冲突:



    • STM32H7S7-DK开发板上可能预装了特定Bootloader。查看板载BOOT0跳线帽是否设置正确(正常启动位置),在下载时尝试按下开发板复位按钮,或使用Connect under reset下载选项。






?️ 具体排查步骤




  1. ? 立即简化路径:



    • 将整个工程文件夹(包含gccsimulator等目录)移到短路径如D:TGX_Project下。重新生成代码并尝试下载测试。




  2. ? 基础连接性测试:



    • 拔插USB线,检查开发板ST-LINK的红色(PWR)、绿色(COM)指示灯是否稳定亮起。

    • 打开STM32CubeProgrammer -> 点击Connect -> 模式选ST-LINK -> 点击连接:

      • 能连接成功读出设备ID? ✅ (证明驱动和物理层正常)

      • 无法连接? ❌ 进入“设备管理器”检查驱动状态(见上文原因2)。





  3. ?️ 查看完整编译/下载日志:



    • TouchGFX Designer的下载窗口通常有滚动条或“详细输出”选项。找到make flash命令执行失败时的确切错误信息(通常在日志最后几行)。

      • 常见关键字:Error: Flash Download failedTimeoutProgramming algorithm not foundCannot read memory





  4. ? 验证最小工程:



    • 在TouchGFX Designer中新建一个空项目或最简UI按钮示例工程(选择正确STM32H7S7设备型号),编译后尝试下载到开发板:

      • 如成功 → 证明是你原始项目配置问题。

      • 如失败 → 证明是开发环境或硬件问题。





  5. ? 重启和复位尝试:



    • 完全退出TouchGFX Designer和IDE进程,重启PC和开发板。开发板完全断电重启后再次尝试下载。




  6. ? 检查开发板兼容性:



    • 确认你使用的是官方STM32H7S7L8I-DISCO开发板。板号通常印刷在PCB背面。






? 针对性解决方案建议




  • 若CubeProgrammer能识别设备但TouchGFX仍失败:



    • 在CubeMX中重新配置外部晶振、时钟树设置(确保HSE和PLL配置符合你的硬件)。

    • 在CubeMX Pinout & Configuration -> System Core -> GPIO中检查所有调试引脚配置(SWDIO/SWCLK)是否设置正确。

    • Project Manager -> Settings中重新生成代码选项设置为ApplicationCopy only necessary files




  • 若双核导致问题:



    • 临时方案: 在CubeMX的.ioc文件中,System Core的Cortex-M4设置页,设置Boot Mode=Disabled(停用CM4)。

    • 解决方案: 确保CM7的默认工程启用了正确的SCB->VTOR寄存器,Flash地址通常从0x08000000开始。




  • 若提示Programming算法相关错误:



    • STM32CubeIDE(如果有安装)中找到默认路径下的Flash算法文件,如:
      C:STSTM32CubeIDE_1.12.0STM32CubeIDEpluginscom.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.win32_xxxtoolsbinExternalLoader

    • STM32H7S7_xxx_YYY.stldr文件手动复制到项目的gcc目录下,并确认makefile中路径引用正确。






? 关键总结



  • 优先解决路径问题(95%概率Windows环境下的根本原因!) → 把工程移动到根目录下的短路径文件夹里立即测试。?

  • 确认ST-LINK驱动无误 → 用CubeProgrammer连接成功是关键验证点。?

  • 设备型号需精确匹配STM32H7S7L8I8/H8 → 在TouchGFX初始化工程和CubeMX中双重检查。?

  • 排查双核配置隐患 → 检查启动模式是否为从内部Flash启动(单核优先)。?


完成上述步骤后,90%的下载问题应该能得到解决。若错误依旧存在,请贴出完整的终端错误日志(从Linking...开始到最终报错结束),我会进一步帮你分析!?

举报

更多回帖

发帖
×
20
完善资料,
赚取积分