MCUViewer——嵌入式开发者的实时可视化神器,摆脱调试噩梦!

 


MCUViewer 是啥玩意儿?
MCUViewer(前身 STMViewer)是一款开源的 GUI 调试工具,专门为 MCU(尤其是 Cortex‑M 系列)打造。它把两个强大的模块装进同一个窗口:

模块

主要功能

Variable Viewer

实时读取、显示、记录、甚至改写 RAM 中的全局变量

Trace Viewer

通过 SWO 端口把高频信号、函数耗时等以波形形式抛出来

唯一的硬件需求只是一根 ST‑Link 或 J‑Link,别的啥都不需要。


它到底解决了哪些痛点?

常见痛点

传统办法

MCUViewer 的解决方案

调试信息占用串口带宽,导致程序卡顿

UART 打印

直接从 RAM 读取,几乎零侵入

高频信号只能靠外部示波器,成本高

示波器/逻辑分析仪

Trace Viewer 用 SWO 把信号“搬进电脑”

只能在 IDE 里看变量,界面丑且不灵活

STMStudio、CubeMonitor

ImGui+ImPlot 打造的现代化交互界面

只能在 Windows 上跑,Linux 开发者哭晕

STMStudio 只 Windows

跨平台(Linux/Windows)原生支持


安装 & 入门

  • • Linux

  1. 1. 确保系统装了 GDB ≥ 12.1。

  2. 2. 下载 MCUViewer-*.deb,执行 sudo apt install ./MCUViewer-*.deb。

  3. 3. 若 ST‑Link 不被识别,拷贝 launch/install/Unix/udevrules/ 到 /etc/udev/rules.d/。

  • • Windows

    1. 1. 从 Releases 页面下载安装包,双击运行。

    2. 2. 把 ST‑Link 切到 “STM32 Debug + Mass Storage + VCP” 模式(否则会报 libusb 错误)。

    小技巧:如果显卡够强,手动把外部 GPU 挂到 MCUViewer 上,绘图更丝滑。

    Variable Viewer 快速上手

    1. 1. 打开 Options → Acquisition Settings,选你的 *.elf(记得 Debug 编译)。

    2. 2. “Import variables from *.elf”,挑需要监控的变量,点 Import。

    3. 3. 拖拽变量到绘图区,点 STOPPED 按钮让 MCU 停止运行,数据马上跳出来。

    Trace Viewer 小案例

    // 进入函数
    ITM->PORT[0].u8 = 0xAA;   // 标记 high
    foo();                    // 业务代码
    ITM->PORT[0].u8 = 0xBB;   // 标记 low

    在 MCUViewer 里打开 Trace Viewer,设置好系统时钟(kHz)和合适的 prescaler,点 STOPPED 开始捕获。波形一出现,你就能直观看到函数耗时、ADC 采样频率等高频信号。


    优缺点一目了然

    优点

    缺点

    零侵入式变量监控,几乎不影响程序运行

    只能监控全局变量,局部变量需要手动搬到全局

    支持 SWO 高频追踪,适用于 Release 版

    64 位变量(uint64_t、double)暂不支持

    跨平台(Linux/Windows)且 UI 现代化

    对 ST‑Link V2 的 SWO 带宽有限,需要调低 prescaler

    支持 J‑Link、ST‑Link 双平台

    初次配置(时钟、prescaler)稍显繁琐

    完全开源(1.1.0 仍保留源码)

    关闭源码后只能使用已有的 1.1.0 代码


    为什么要选 MCUViewer?
    我本身在电机控制行业干了多年,实时监控电流、转速、PWM 波形对调试至关重要。早年我用 STMStudio,功能倒是够用,但只能跑 Windows,遇到 C++ 名字混淆、ST 停止维护等一堆坑。MCUViewer 把 STMStudio 的优点搬到跨平台、支持 J‑Link,还加了 SWO Trace,简直是升级版的“嵌入式监控仪”。如果你也想摆脱串口打印的噩梦、用图形化方式直接看变量和高频信号,MCUViewer 绝对值得一试。


    小结

    • • Variable Viewer:实时、零侵入、全局变量可视化。

    • • Trace Viewer:SWO 高频波形捕获,函数耗时、模拟信号一眼可辨。

    • • 跨平台 + 只需一根调试器:Linux/Windows 都能跑,硬件门槛低。

    • • 开源+社区活跃:虽然新版本闭源,旧源码仍可自行编译。

    如果你正为调试效率低、信号捕获困难而抓狂,赶紧去玩玩 MCUViewer,感受一下“实时可视化”带来的爽快感吧!


    项目地址:https://github.com/klonyyy/MCUViewer

     

    发表评论