STM32H7目标持续运行时,如何退出GDB并实现远程复位启动?
中文翻译后的问题
我正在开发一款搭载两块STM32H7(当前使用两块STM32H7 EVAL2开发板)的设备。我希望使用STMicro Cube IDE调试其中一块,同时能远程复位并启动另一块,无需按压板载复位按键。我的思路是利用已用于第一块MCU远程调试的STLink GDB Server,仅实现第二块MCU的复位启动。目前我仅能通过continue命令实现复位启动,但该命令会阻塞GDB,使用的命令为:
arm-none-eabi-gdb -q -ex "set confirm off" -ex "target remote xxx" -ex "monitor halt reset" -ex "continue"
且run命令不被支持。请问是否可实现复位启动目标后退出GDB,同时保持目标持续运行?
解决方案
可以通过调整GDB命令序列,实现复位启动目标后退出GDB且保持目标持续运行,以下是两种可行方案:
方案一:用detach命令替代continue
detach命令会断开GDB与目标MCU的连接,但不会终止目标的运行。修改后的命令如下:
arm-none-eabi-gdb -q -ex "set confirm off" -ex "target remote xxx" -ex "monitor halt reset" -ex "detach" -ex "quit"
monitor halt reset:先暂停目标再执行复位操作detach:断开GDB与目标的连接,此时目标会继续运行quit:主动退出GDB程序
方案二:结合-batch模式简化命令
-batch参数会让GDB执行完所有指定命令后自动退出,无需额外添加quit命令,命令更简洁:
arm-none-eabi-gdb -q -batch -ex "set confirm off" -ex "target remote xxx" -ex "monitor halt reset" -ex "detach"
执行完成后,GDB会自动退出,目标MCU保持复位后的运行状态。
额外提示
如果需要让目标复位后从指定地址启动,可以在monitor halt reset后添加monitor set pc 0x8000000(以STM32默认Flash起始地址为例),再执行detach命令即可。
内容的提问来源于stack exchange,提问作者Guillaume Petitjean
相关产品推荐
相关产品推荐

