目录
- 前言
- [LinkScope 是什么](#LinkScope 是什么)
- 支持的调试器(Probe)
-
- [关于 CH347 的支持说明](#关于 CH347 的支持说明)
- 核心功能
- 两种连接模式
- 支持的目标芯片(Target)
- 快速上手
- 已知限制与注意事项
- 总结与资源
前言
日常嵌入式开发中,我们常有实时观测单片机变量、在线修改参数而无需重新编译烧录的需求。最近在 GitHub 上发现一款名叫 LinkScope 的基于 OpenOCD 的非侵入式硬件调试开源项目。
此版本是基于原版LinkScope的一个fork项目,主要在两方面做了改进:优化了使用界面与操作逻辑,并重写了波形绘制界面,使其更贴合日常使用习惯。
项目地址:
LinkScope 是什么
LinkScope 是一款非侵入式硬件芯片调试软件。它直接驱动硬件调试器与单片机连接,解析编译器生成的符号文件(AXF / ELF)得到变量表,从而在不修改芯片固件的前提下,实现对目标芯片变量的实时查看、在线修改与波形绘制。
软件采用 Qt 开发,调试器后端基于 OpenOCD,因此天然继承了 OpenOCD 广泛的调试器与芯片支持能力;同时它也支持通过串口连接任意带 UART 的芯片(需移植一小段下位机程序)。

支持的调试器(Probe)
LinkScope 在理论上支持所有 OpenOCD 兼容的调试适配器,已确认明确支持的 probe 如下:
| 调试器(Probe) | 说明 |
|---|---|
| STLink | STLINK-V2 |
| JLink | Segger J-Link 系列 |
| CMSIS-DAP | 已实测 CMSIS-DAP |
| CH347(WCH 沁恒) | 通过 OpenOCD ch347 驱动接入,详见下文 |
| ESP32C3 内置 JTAG | 使用专用 OpenOCD,手动开启外部进程后连接 |
| 任意 OpenOCD 兼容适配器 | 勾选「外部进程」连接到正在运行的 OpenOCD 即可 |
关于 CH347 的支持说明
CH347 是 WCH(沁恒微电子)推出的高速 USB 转接芯片,原生同时提供 UART、I2C、SPI 以及 JTAG / SWD 接口。OpenOCD 主线已合入 CH347 驱动(代码位于 src/jtag/drivers/ch347.c,默认 VID 0x1a86、PID 0x55dd)。因此,只要使用带 CH347 驱动的 OpenOCD 版本,LinkScope 即可通过其后端直接驱动 CH347 调试器。
CH347分为两个型号,差异如下:
- CH347T:需将芯片切换至 mode3使用JTAG或SWD;
- CH347F:无需切换模式,直接使用JTAG或SWD;
相关参考资料:
OpenOCD 官方调试适配器配置文档:https://openocd.org/doc/html/Debug-Adapter-Configuration.html
CH347 系列专栏:https://blog.csdn.net/qq_43010294/category_12775144.html
核心功能
| 功能 | 说明 |
|---|---|
| 实时查看 / 修改变量值 | 采样过程中直接在线改值,立即生效 |
| 变量波形绘制 | 实时将变量值绘制成曲线(变量示波) |
| 采样数据导出 | 全部采样数据导出为 CSV 表格,便于离线分析 |
| 格式化日志输出 | 支持下位机日志(信息 / 调试 / 警告 / 错误 四级) |
| 任意 C 表达式变量名 | 变量名支持 GDB 能解析的任意合法 C 表达式 |
| 配置保存 / 导入 | 连接模式、调试器、芯片、符号文件、变量表可存为配置文件 |
变量名不仅限于单个变量,还可以是 g_pack.var1 + g_pack.var2、g_arr[2]@3、*(int*)0x20005c5c 这类表达式(结构体等复合类型仅支持查看,不支持改值与绘图)。
两种连接模式
LinkScope 提供调试器模式与串口模式两种方式连接目标芯片:
| 模式 | 侵入性 | 最高采样率 | 适用对象 |
|---|---|---|---|
| 调试器模式 | 非侵入(不改固件) | 约 100 Hz | OpenOCD 兼容的调试器与目标芯片 |
| 串口模式 | 侵入(需修改下位机源码) | 约 80 Hz | 任意带 UART 的芯片 |
调试器模式下,软件后台启动 GDB 与 OpenOCD 进程,通过 GDB 的 RSP 协议读取 / 修改变量;串口模式则把下位机程序移植到目标芯片,由上位机通过 TCP 服务解析串口数据。
支持的目标芯片(Target)
- 理论上:OpenOCD 支持的全部 MCU(如 STM32 全系列);
- 已实测设备:STM32F103RCT6、STM32F103C8T6、STM32F407ZGT6、STM32F407IGH6、ESP32C3;
- 串口模式:任意带 UART 的芯片(需移植下位机程序,可用于 Arduino 等无调试器接口的芯片,也可配合透传模块实现无线连接)。
快速上手
- 下载最新发行版,解压后双击
LinkScope.exe运行(Windows 预编译包); - 设置编译好的符号文件(AXF / ELF);
- 选择连接模式并连接:
- 调试器模式:下拉框选调试器与芯片型号,点击「连接」;或勾选「外部进程」连已有 OpenOCD;
- 串口模式:点击「刷新串口」选择端口后连接;
- 通过变量选择窗口或主表末行手动添加要查看的变量(支持 C 表达式);
- 连接成功后自动采样,可在线改值、选绘图颜色、在绘图窗口用滚轮控制缩放,鼠标控制平移,并通过「导出数据」保存 CSV。
已知限制与注意事项
- 采样率约为 100 Hz(调试器)/ 80 Hz(串口),属于「变量示波」而非高速示波器,适合观察慢变信号与控制逻辑;
- 调试器模式异常退出后可能残留
openocd.exe进程,需手动结束; - 串口模式下地址
0读取单字节恒为0; - 使用 CH347T 时需确认工作于 mode3,且仅支持 JTAG;需要 SWD 建议选用 CH347F;
- 软件不含下载 / 烧录功能,连接前请先为目标芯片烧录好程序;
- OpenOCD 的 CH347 驱动为较新特性,建议使用较新版本的 OpenOCD 以获得完整支持。
总结与资源
LinkScope 用「Qt + OpenOCD + GDB」的组合,把原本分散在各家工具里的变量观测、在线改值、波形绘制、数据导出能力整合成了一个通用、开源、非侵入的调试入口。对于手头有多种调试器、尤其是想用 CH347 这类高性价比硬件做日常调试的嵌入式开发者,它值得一试。
相关资源:
项目仓库:https://github.com/OpenChipLab/LinkScope
OpenOCD 支持的调试适配器列表:https://openocd.org/doc/html/Debug-Adapter-Configuration.html
如果本文对你有帮助,欢迎去仓库点个 Star。