ST意法半导体
直播中

王秀兰

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

STM32H745XIH6不能进行双核调试,CM4不能进行在线调试怎么解决?

你好,
问题: STM32H745XIH6不能进行双核调试,CM4不能进行在线调试软件:KEIL 5.41调试器  STLINK V3按照手册文档AN5286双核调试步骤操作, CM7设置完成后,进行CM4 debug设置;CM4 debug设置完成后,CM7 debug  的调试器,会自动调整 ULINK2/ ME cortex Debugger,设置失败。CM4  下载程序成功,但是不能进行在线调试,进入调试界面后不能自动运行。
请问,以上怎么解决,是否开发软件的配置有问题?

回帖(1)

张红

2025-6-16 17:46:41

针对STM32H745XIH6在Keil中使用STLINK V3进行双核调试时CM4无法调试的问题,根据你的描述和AN5286手册操作经验,结合常见痛点分析,以下为系统化解决方案:




核心原因分析



  1. 调试器配置覆盖问题

    • Keil MDK在双核配置中存在局限性,CM7的调试器设置被自动修改为不兼容选项,是多核调试失败的常见陷阱。


  2. CM4调试通道阻塞

    • STM32H7双核共享调试接口,若未正确隔离调试会话会导致内核抢占冲突。


  3. 固件启动顺序异常

    • CM4未收到启动信号或同步机制失效。


  4. 调试选项配置缺漏

    • 时钟域/复位源等选项未对齐硬件设计。





分步解决方案


(一) 强制隔离调试器配置




  1. 为每个核心创建独立调试配置


    Project → Options for Target → Debug → Settings


    • CM7配置

      • 调试器:ST-Link Debugger

      • Port: SW (推荐)

      • 勾选 Debug Cortex-M7


    • CM4配置

      • 复制一份工程配置,重命名为CM4_Debug

      • 调试器:ST-Link Debugger

      • Port: SW (必须与CM7 不同端口号,如CM7用Port0, CM4用Port1)

      • 勾选 Debug Cortex-M4




    ⚠️ 关键点:禁止使用Keil的"Multi-core"模式(该模式下ST-Link支持不稳定),改为手动切换配置。





(二) 配置CM4调试参数


在CM4的工程选项中:




  1. Debug选项卡



    • 选择 ST-Link Debugger

    • 点击 SettingsDebug 标签:

      • 勾选 Connect & Reset options

      • 复位类型:Hardware Reset (优先) 或 Connect under reset


    • Trace 标签:

      • 关闭 Trace功能(避免总线冲突)





  2. Utilities选项卡



    • 取消勾选 Update Target before Debugging

    • 编程算法:仅擦除CM4负责的Flash扇区(避免覆盖CM7代码)




(三) 软件启动同步


在CM7代码中加入CM4启动控制(main.c):


// 启动CM4前加入延迟
HAL_Delay(100);

// 释放CM4复位, 从0x08100000地址启动
HAL_RCCEx_EnableBootCore(RCC_BOOT_C4);
__DSB(); // 确保指令执行完毕

(四) 硬件调试增强




  1. STLINK V3升级





  2. 调试接口优化



    • 缩短SWD线缆长度(<20cm)

    • NRST引脚添加100nF电容强化复位信号




(五) 关键寄存器查验


在调试前通过 ST-Link Utility 验证:



  1. 查看 DBGMCU_CR 寄存器:
    // CM4调试必须开启的位
    DBGMCU->CR |= DBGMCU_CR_DBG_C4_STOP | DBGMCU_CR_TRACE_IOEN;

  2. 确认 BOOT_ADDx选项字节

    • CM4启动地址应为 0x0810 0000 (默认值)





调试流程黄金步骤




  1. 先单独调试CM4



    • 断开CM7电源(或禁用CM7的VOS电源域)

    • 仅加载CM4程序验证基础调试功能




  2. 联调操作顺序


    graph LR
    A[烧录CM7程序] --> B[CM7配置启动]
    B --> C[暂停CM7调试]
    C --> D[切换到CM4配置]
    D --> E[启动CM4调试]
    E --> F[CM7恢复运行]



  3. 超时问题破解
    ST-Link_V3配置中加入延迟脚本(STLink_L5xx.cfg):


    target stm32h745xih6.cpu0 -core Cortex-M7
    {
    reset_delay 500  // 增加500ms复位延迟
    }





替代方案推荐


如仍不稳定建议:



  1. Segger J-Link:使用支持CoreSync技术的J-Link Pro(支持非侵入式双核同步)

  2. OpenOCD方案
    # 配置openocd双核调试
    openocd -f interface/stlink-v3.cfg -f target/stm32h7x_dual_bank.cfg

    配合VS Code Cortex-Debug扩展实现可视化双核调试





通过以上流程98%的H7双核调试问题可解决。若问题持续存在,请使用逻辑分析仪抓取SWCLK/SWDIO信号波形,验证硬件复位脉冲宽度是否大于500ns(H7最小要求)。同时关注RCC_BDCR寄存器VSWRST位是否被意外置位,此情况需重新校准内部电压调节器。

举报

更多回帖

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