[STM32F4] CubeIDE 调试器(GDB )的 SWO 输出问题

[复制链接]
858|16
 楼主| SocialButterfly 发表于 2025-4-6 21:47 | 显示全部楼层 |阅读模式
CubeIDE 调试器(GDB )的 SWO 输出问题。
当我在调试配置中启用 SWO 输出并打印某些内容时,SWV ITM 数据窗口中只显示前几行。
然后发生以下情况之一:
  • Debugger无法识别taget
  • 由于访问未对齐而发生硬件故障00、
[backcolor=var(--darkreader-background-ffffff, #141617)]但是在调试配置中禁用了未对齐的访问异常,当相同的程序在不仿真的情况下运行时,可以长时间运行而不会出现异常。


公羊子丹 发表于 2025-4-7 07:25 | 显示全部楼层
我之前也遇到过类似问题,SWV ITM 输出前几行正常,之后就挂了,后来发现是时钟设置和实际不一致,Core Clock 那边要手动填对。
周半梅 发表于 2025-4-7 07:26 | 显示全部楼层
有时候 SWO 配置里面的 TPIU 设置不对也会导致输出中断,尤其是 async clock 频率写错了就很容易出错。
帛灿灿 发表于 2025-4-7 07:27 | 显示全部楼层
你有没有在 ITM Stimulus Ports 那边把 Port 0 勾选上?SWV 只监听了端口 0,不开的话后面全丢了。
童雨竹 发表于 2025-4-7 07:28 | 显示全部楼层
STM32F4 默认是支持非对齐访问的,但如果你代码中手动启用了 UNALIGN_TRP,那在 ITM trace 输出时可能会触发异常。
万图 发表于 2025-4-7 07:29 | 显示全部楼层
我试过的一个 trick 是:调试开始后先别点运行,先点一下 SWV viewer,让它先开始监听,再运行程序,丢包现象少很多。
Wordsworth 发表于 2025-4-7 07:30 | 显示全部楼层
你可以在 SystemInit() 里确认是否真的关闭了非对齐访问异常,有时候 CubeMX 设置和实际代码不一致。
Bblythe 发表于 2025-4-7 07:32 | 显示全部楼层
如果调试过程中出现“无法识别 target”的提示,可能是 ST-Link 的固件需要更新,之前老版本会影响 SWO trace。
Pulitzer 发表于 2025-4-7 07:33 | 显示全部楼层
ITM trace 输出速度跟芯片主频和 trace 速率有关系,太高会丢数据,建议你在调试配置中把 SWO 输出速度降一点试试。
Uriah 发表于 2025-4-7 07:34 | 显示全部楼层
有时候 SWO 停止输出其实是芯片跑飞了,可以在 output 最后一行打个断点看是不是程序崩在某个位置了。
Clyde011 发表于 2025-4-7 07:35 | 显示全部楼层
看你说不仿真时能长时间跑,估计跟 debug 环境相关,GDB 和 SWO trace 占用资源多,有可能把调试接口冲垮。
海滨消消 发表于 2025-4-7 14:26 | 显示全部楼层
SWO 缓冲区溢出可能会导致部分数据丢失。
elephant00 发表于 2025-4-7 14:35 | 显示全部楼层
如果 ITM 通道未正确初始化,可能会导致数据无法正确传输到 SWV ITM 数据窗口。
两只袜子 发表于 2025-4-7 16:23 | 显示全部楼层
可能是SWO 配置错误。
laocuo1142 发表于 2025-4-7 16:23 | 显示全部楼层
CubeIDE 或 GDB 本身可能存在 bug,导致调试器无法正确处理 SWO 数据。
jcky001 发表于 2025-4-7 19:23 | 显示全部楼层
检查代码中是否存在未对齐的内存访问。
flycamelaaa 发表于 2025-4-7 23:00 | 显示全部楼层
升级 CubeIDE 和调试器固件,用最新版本。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

57

主题

57

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部