如何在 STM32CubeIDE 中调试中断 ISR 和 FreeRTOS 任务?
想要按照 youtubehttps://www.youtube.com/watch?v=TH2aCiU9Jyo来尝试从 SEGGER SystemView Trace 软件调试 ISR。该过程需要使用 JLink 兼容固件烧录 STLink 固件,然后使用 Segger SystemVIew 实时记录和查看硬件中断和FreeRtos 任务。还应该将 RTT 库包含在项目中,并将相关代码添加到源文件中。
我想知道这是否是调试 ISR 和 Tasks 的正确方法?
我在 STM32CubeIDE 中不知道如何操作。
谁知道在利用 Segger SystemView 的 STM32CubeIDE 中调试 ISR 和FreeRtos 方法?
我也刚折腾过这套流程,STLink 换 J-Link 固件是第一步,烧完后 SystemView 才能连接 RTT 通道,不然没法看 trace。 RTT 库记得加上 SEGGER_RTT.c 和 SEGGER_RTT_Conf.c,SystemView 要靠它和 CPU 实时通信的。 CubeIDE 不太适合直接调 SystemView 的 trace,要配合 SystemView 的配置文件和初始化函数,你 main.c 里加上 SEGGER_SYSVIEW_Conf() 初始化了吗? SystemView 跟传统调试方式不一样,它是观测系统行为的,不是断点调试那种,适合看中断频率和任务调度情况。 注意 FreeRTOSConfig.h 里要打开 configUSE_TRACE_FACILITY 和 configUSE_STATS_FORMATTING_FUNCTIONS,不然任务追踪信息不会上报。 如果你用 CubeMX 生成的工程,记得在 freertos.c 的 MX_FREERTOS_Init() 最后加上 SEGGER_SYSVIEW_Start() 才能开始 trace。 SystemView 真的是神器,尤其用在中断频繁的项目上,可以看到哪个任务卡住,哪个中断频率太高。 你参考的那个 YouTube 视频讲得挺细的,不过它是裸机项目,如果你是用 CubeIDE + FreeRTOS,配置 RTT 和 trace 要稍微改下。 还可以试试 FreeRTOS+Trace 和 Percepio Tracealyzer,虽然不是免费的,但集成度和可视化更强。 如果你只是偶尔调 ISR,也可以用 CubeIDE 的 ITM 打印或者断点看中断嵌套情况,SystemView 更适合持续监控和优化。 STM32 板子自带 ST-Link,ST-Link 2.1 固件和 J-Link 兼容固件有差别
页:
[1]