微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在STM32F205上调试程序启动?

如何解决如何在STM32F205上调试程序启动?

我有一个带有 STM32 微控制器的嵌入式开发板和一个 ST-Link v2。这种设置通常有效:我可以对闪存进行编程,并与 ST 的 CubeProgrammer 工具或 openocd 连接。我可以将 gdb 附加到后者,并逐步执行代码。到现在为止还挺好。我的物理或电气设置似乎没有任何问题。

我有一个程序……不太好。初始化早期的一些事情是将芯片挂到我无法再使用任何工具连接到它的地步。我可以通过使用CubeProgrammer的“Under reset”模式,开机时按住板上的reset开关,然后在坏程序楔入芯片之前连接。

这样连接后,芯片停止。我可以刷出一个已知的好程序。或者,我可以使用 CubeProgrammer 的 MCU 核心屏幕通过坏程序的启动一次“步进”一条指令。这有效,直到我点击“运行”,然后我很快得到一个对话框“警告:与设备 0x411 的连接丢失”,并且芯片不再可用,直到我按照上述方法将它刷入。看起来代码正在将必要的引脚配置为 alt 模式以启用串行线调试,所以我认为这不是问题,但很难验证。

因此,该程序中的某些内容似乎表现不佳。我想做的是通过 openocd 设置 gdb 来调试启动。有了好的程序,就可以在程序运行的时候连接openocd,附加gdb,一切正常。但是我不知道如何让openocd做CubeProgrammer在“Under reset”模式下所做的事情,所以我可以在gdb的控制下执行芯片的初始化。

我该怎么做?或者,除了 openocd+gdb 之外,还有其他我应该尝试的工具吗?我熟悉 gdb,但我可以尝试其他工具。宿主环境为macOS。

解决方法

像这样创建一个 openOCD 配置文件:

#
# stlink to stm32f2xx by swd with system reset and no test reset
#

source [find interface/stlink.cfg]

transport select hla_swd

source [find target/stm32f2x.cfg]

reset_config srst_only connect_assert_srst

并使用 -f 标志打开OCD来使用它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。