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. 确保系统装了 GDB ≥ 12.1。
-
2. 下载
MCUViewer-*.deb,执行sudo apt install ./MCUViewer-*.deb。 -
3. 若 ST‑Link 不被识别,拷贝
launch/install/Unix/udevrules/到/etc/udev/rules.d/。
• Windows
-
1. 从 Releases 页面下载安装包,双击运行。
-
2. 把 ST‑Link 切到 “STM32 Debug + Mass Storage + VCP” 模式(否则会报 libusb 错误)。
小技巧:如果显卡够强,手动把外部 GPU 挂到 MCUViewer 上,绘图更丝滑。
Variable Viewer 快速上手
-
1. 打开 Options → Acquisition Settings,选你的
*.elf(记得 Debug 编译)。 -
2. “Import variables from *.elf”,挑需要监控的变量,点 Import。
-
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