You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无RTOS下通过UART使用SEGGER SystemView:函数名无法显示

SEGGER SystemView UART模式下裸机项目无法显示函数名(STM32H503RB Nucleo)

问题描述

我基于STM32H503RB Nucleo开发板搭建无RTOS裸机项目,采用UART接口配合SEGGER SystemView做调试。目前SystemView能正常接收并记录事件,但始终只显示事件ID数字,无法映射为对应的函数名。

已完成的配置与验证:

  • 遵循SEGGER无RTOS使用指南创建了SYSVIEW_NoOS.txt文件,内容为:
    33 toogleLed
    
  • 将该文件放置在SystemView指定的正确目录下,且确认软件已加载该描述文件
  • 固件中通过以下代码记录函数调用事件:
    SEGGER_SYSVIEW_RecordVoid(33);
    SEGGER_SYSVIEW_RecordEndCall(33);
    
  • 已验证:UART通信正常、事件可被接收、修改描述文件后重启了捕获流程、事件ID与固件中完全一致

想请教:是否有其他人遇到过相同问题?我是否遗漏了额外的配置步骤?

另外补充:本人在UART通信配置方面经验较多,其他用户若遇到相关问题可随时咨询;该项目完成后会公开至GitHub仓库。


可能的排查方向

  • 检查SystemView事件ID范围配置
    裸机模式下,部分SystemView版本默认的用户事件ID范围有限制。可以在Options -> Configuration中确认是否开启了自定义ID映射支持,或检查ID区间是否包含33。

  • 确认SYSVIEW_NoOS.txt格式细节

    • 确保ID与函数名之间是单个空格,无多余制表符或空格
    • 文件编码需为UTF-8无BOM格式,带BOM的编码可能导致解析失败
    • 文件名需严格为SYSVIEW_NoOS.txt,注意大小写匹配(Linux/Mac环境下敏感)
  • 手动加载描述文件
    尝试通过File -> Load Description File手动选择你的SYSVIEW_NoOS.txt,再重启捕获流程,避免自动加载异常。

  • 验证版本兼容性
    确认SystemView软件版本与SEGGER SysView库版本匹配,版本差异可能导致解析兼容问题,建议升级至最新版SystemView尝试。

  • 检查事件调用逻辑
    确保SEGGER_SYSVIEW_RecordVoid(33)和SEGGER_SYSVIEW_RecordEndCall(33)成对调用,且分别放在函数的开头与结尾位置,调用顺序或单调用可能导致事件解析异常。


内容的提问来源于stack exchange,提问作者Yael Macias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 06:22:27