J-Link MCP

io.github.Klievan由 GitHub 账号 Klievan 发布v0.8.0更新于 Oct 29, 2026

Debug embedded firmware on real hardware: J-Link probes, Cortex-M faults, RTT logs, GDB.

已验证STDIO仅桌面开发者工具安全与监控

概览

AI 生成的概览

让 AI 助手通过 SEGGER J-Link 调试器调试 ARM Cortex-M 嵌入式固件:寄存器、内存、烧录、RTT 日志、故障分析与 GDB。

可以做什么
  • 检查调试环境:检查配置、列出调试器、搜索并设置目标器件名、序列号、SVD 与 RTT 地址
  • 控制目标:暂停、恢复、复位、单步、读写内存、读取寄存器、设置与清除断点
  • 烧录与擦除固件,并抓取完整设备状态快照
  • 通过解码 Cortex-M 故障寄存器和异常栈帧诊断崩溃
  • 启动 GDB 服务器并连接 GDB 客户端,进行回溯、加载 ELF 符号和执行任意 GDB 命令
  • 读取、搜索并通过 RTT 发送日志,或将 RTT 转发给外部解码器
适用场景
适合在真实硬件上调试固件时使用:让助手读取设备状态、解析故障、借助 CMSIS-SVD 文件查看外设寄存器,或驱动 GDB 会话,而不必手敲 J-Link 命令。
运行要求
以 npm 包(npx jlink-mcp)通过 stdio 在本机运行,需要 Node 18+、SEGGER J-Link 软件,以及连接 ARM Cortex-M 目标的调试器。JLINK_DEVICE 为必填,JLINK_SERIAL、JLINK_RTT_ADDR 和 SVD_PATH 可选。OpenOCD 或 Black Magic Probe 后端需要 OpenOCD 或 arm-none-eabi-gdb。仅限桌面端。
安装前请注意
助手可以写入硬件:烧录和擦除固件、写内存、复位、暂停与恢复目标,并通过 RTT 下行通道发送数据。一个 J-Link 同时只服务一个客户端,遗留运行的 GDB 服务器会阻塞其他工具。服务器还暴露原始调试器命令。只连接你愿意被重新烧录的调试器与目标。

安装

在 SourceWeft 中

  1. 打开 控制台中的 J-Link MCP,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[jlink-mcp logo]

jlink-mcp

Give AI hands to touch silicon.
An MCP server that lets LLMs debug embedded devices through SEGGER J-Link probes.

[MCP Server] [TypeScript] [J-Link] [ARM Cortex-M]

[GitHub Stars] [License] [npm] [npm downloads] [VS Code Marketplace] [Latest release] [MCP Compatible] [CI] [Hardware tested]


See it work

[A terminal session: the MCP server finds the probe, flashes firmware, opens a debug session, streams RTT logs, injects a fault, and decodes the resulting HardFault — naming the faulting instruction.]

Real MCP tool calls against a real nRF52840-DK. Reproduce it yourself: npm run demo

Your firmware just crashed. One tool call:

> diagnose_crash
## Crash Diagnosis
### CPU StateCore: PC=0x000000B8 SP=0x2003FFA8 R0=0x0000000A R1=0x000007FF R2=0x00000001 ...Status: XPSR=0x21000003 CONTROL=0x00000000 PRIMASK=0x00000000 ...Stack: MSP=0x2003FFA8 PSP=0x00000000
⚠ CPU is in exception handler (IPSR=0x00000003)
### Fault RegistersCFSR=0x01000000 HFSR=0x40000000 DFSR=0x00000000 MMFAR=0xe000edf8 BFAR=0xe000edf8
### Decoded Faults## UsageFault (UFSR):  - UNALIGNED: Unaligned memory access## HardFault (HFSR):  - FORCED: Forced HardFault (escalated from configurable fault)
### Exception Stack Frame  R0    = 0x0000000A     R1  = 0x000007FF  R12   = 0x00000000     LR  = 0x000001F5  PC    = 0x00000254     xPSR = 0x21000000
→ Faulting instruction at PC=0x00000254
### Recent Errors/Warnings from RTT  [WRN] sensor_drv: sample out of range, clamping seq=2

Fault decoded, exception frame unwound, faulting instruction named, and the device's own log correlated — from one call, without a human reading a datasheet to find out what bit 24 of CFSR means.

And it knows what the silicon is

Point it at your target's CMSIS-SVD file and peripheral registers stop being hex:

> read_peripheral FICR
FICR @ 0x10000000INFO.PART @ 0x10000100 = 0x00052840  (read-only)  [31:0]    PART             0x52840 → N52840INFO.RAM @ 0x1000010C = 0x00000100  (read-only)  [31:0]    RAM              0x100 → K256INFO.FLASH @ 0x10000110 = 0x00000400  (read-only)  [31:0]    FLASH            0x400 → K1024

0x400 means 1024 KB of flash — but only if you know that, and an LLM guessing at bit layouts is exactly the failure this avoids. The addresses come from the vendor's own description, and the meanings from its enumerations.

Both transcripts are verbatim output from an nRF52840-DK in this project's hardware test suite.

What is this?

jlink-mcp connects AI assistants (Claude, Copilot, etc.) to your embedded hardware via SEGGER J-Link debug probes using the Model Context Protocol.

Instead of manually typing J-Link commands, your AI assistant can:

  • Read registers and memory to understand device state
  • Flash firmware and reset devices
  • Stream RTT logs and search them by level/module/regex
  • Diagnose crashes by auto-decoding ARM Cortex-M fault registers
  • Control execution — halt, step, resume, breakpoints
  • Start GDB servers for full debugging sessions

Also supports OpenOCD (ST-Link, CMSIS-DAP, FTDI) and Black Magic Probe backends.

Installing

You need the SEGGER J-Link software — that is what this server drives — a probe connected to an ARM Cortex-M target, and Node 18+. For the other backends, OpenOCD or arm-none-eabi-gdb instead.

Claude Code — from the plugin marketplace. This brings the embedded-debugging skill along with the server, which is what stops an assistant guessing at your hardware:

/plugin marketplace add Klievan/jlink-mcp/plugin install jlink-mcp

Any other agent — point it at this repository and ask it to set itself up:

Install the MCP server at https://github.com/Klievan/jlink-mcp and configure it for my board.

It will find what it needs here. If you would rather do it by hand, the server is on npm and needs no build step: npx -y jlink-mcp, with JLINK_DEVICE set to your target. mcp-config.json is a config you can paste.

VS Code — install the extension. It registers the server for Copilot Chat, Claude, and any MCP-aware client, so there is nothing to configure.

Nix / NixOS — run directly from the flake without installing:

bash
# Run standalone MCP servernix run github:Klievan/jlink-mcp
# Or in an MCP client configuration (e.g. Claude Desktop / Claude Code)# "command": "nix", "args": ["run", "github:Klievan/jlink-mcp", "--"]

Or add jlink-mcp and jlink-mcp-skills to your system configuration or flake:

nix
# flake.nix inputsinputs.jlink-mcp.url = "github:Klievan/jlink-mcp";
# In your packages:inputs.jlink-mcp.packages.''${system}.jlink-mcpinputs.jlink-mcp.packages.''${system}.jlink-mcp-skills

Note for NixOS users: Add your preferred probe tools (segger-jlink / segger-jlink-headless, openocd, or gdb) to environment.systemPackages or your devShell. segger-jlink requires nixpkgs.config.allowUnfree = true; and services.udev.packages = [ pkgs.segger-jlink ]; for probe USB permissions.

Then check it

Ask for check_setup. One call, and it says what is missing and what to do:

Not ready to debug yet.
OK    probe software — J-Link software found at /Applications/SEGGER/JLinkBLOCK probe — none detected (Connecting to J-Link via USB...FAILED). Check the USB cable.BLOCK target device — not set. Find the exact name with search_devices, then set_device.note  SVD — not loaded, so peripheral reads stay raw hex. Set SVD_PATH to a CMSIS-SVD file.

You do not need your device's exact part number up front. search_devices searches all 9800 that J-Link supports, by part number, manufacturer, or core.

Tools (48)

Workflow Tools (start here)

ToolDescription
start_debug_sessionOne-call setup. Starts GDB server + connects RTT + returns boot log.
snapshotCaptures full device state: registers, fault status, stack dump, RTT output.
diagnose_crashAuto-reads and decodes ARM Cortex-M fault registers (CFSR, HFSR, MMFAR, BFAR) with exception stack frame.

Device Setup

ToolDescription
list_devicesScan for connected probes and show the configured target
set_deviceChange the target device at runtime — no restart needed
set_serial_numberChange the probe serial number at runtime (for multi-probe setups)
get_configCurrent probe, target device, and GDB server state

Device Control

ToolDescription
device_infoProbe type, target CPU, compact register summary
haltHalt CPU
resumeResume CPU
resetReset device. halt stops it at the reset vector; strategy picks a J-Link reset type, or omit it and let J-Link choose
stepSingle-step one instruction

Peripherals (CMSIS-SVD)

Set jlinkMcp.svdPath to your target's SVD — the same file Cortex-Debug takes as svdFile. Vendors publish one per part.

ToolDescription
list_peripheralsEvery peripheral and base address on the chip
read_peripheralRead a peripheral's registers and decode each one's bit fields by name
decode_registerDecode one register — read from the device, or interpret a value you already have

Memory & Registers

ToolDescription
read_memoryRead memory at address (clean hex dump output)
write_memoryWrite 32-bit value to address
read_registersAll CPU registers in compact format
read_registerRead specific register (PC, SP, R0-R12, etc.)

Flash

ToolDescription
flashFlash .hex/.bin/.elf firmware to device
eraseErase entire flash

Breakpoints

ToolDescription
set_breakpointSet hardware breakpoint at address
clear_breakpointsClear all breakpoints

GDB Server

ToolDescription
gdb_server_startStart probe's GDB server
gdb_server_stopStop GDB server + disconnect RTT
gdb_server_statusGDB server, RTT, and proxy status

Source-Level Debugging

Attach a real GDB client for symbol-aware work — backtraces, variable inspection, and stepping by source line rather than by instruction.

ToolDescription
gdb_connectAttach a GDB client (auto-starts the server; optional ELF for symbols)
gdb_loadLoad an ELF for debug symbols, optionally flashing it too
gdb_backtraceCall stack, optionally with locals in each frame
gdb_commandRun any GDB command — print sensor_state, info threads, break main
gdb_waitWait for the target to stop (after a continue or a breakpoint)
gdb_disconnectDetach the client, clearing breakpoints and debug hardware

RTT (Real-Time Transfer)

ToolDescription
rtt_connectConnect to RTT telnet port
rtt_disconnectDisconnect from RTT
rtt_readRead recent log lines (ANSI stripped, Zephyr format parsed)
rtt_searchFilter logs by level (err/wrn/inf/dbg), module, or regex
rtt_sendSend data to device via RTT down-channel
rtt_clearClear RTT buffer

Telnet Proxy (Trice / Pigweed)

ToolDescription
telnet_proxy_startStart TCP proxy that tees RTT for external detokenizers
telnet_proxy_stopStop proxy
telnet_proxy_statusProxy connection status
telnet_proxy_readRead raw proxy buffer

Advanced

ToolDescription
probe_commandExecute raw probe commands
get_configCurrent probe and server configuration

The status bar knows who has the probe

A J-Link serves one client at a time, so a GDB server left running blocks everything else — and the usual way that happens is an assistant starting one through MCP and nobody noticing. The extension cannot detect that by remembering what it did: the MCP server runs in a separate process, so an LLM-started server is invisible to it.

So it watches the GDB port instead, which is true whoever is responsible. When something is listening the status bar turns amber and reads J-Link · MCP · 47m — who started it, and how long ago. Those are the two facts that turn "something has the probe" into "the assistant has had it since before lunch". Clicking offers to stop it.

The tooltip carries the rest: device, ports, whether RTT is up, and why it matters. And it never claims an uptime it did not watch — a server that was already running when the window opened is reported as known about for that long, not up for it.

It will not kill a process it cannot identify as a J-Link GDB server. A listening port proves something is there, not that it is ours.

The skill

The tools tell a model what it can do. They do not tell it what is worth doing, and two things go wrong constantly without that: models never think to load the ELF, so every backtrace is bare addresses; and they reason about what the hardware should be doing instead of spending one call asking it.

skills/embedded-debugging/SKILL.md is a Claude Code skill that covers both — the two files that change everything (ELF for names, SVD for meanings), the halt/read/resume rule, workflows for crashes, hangs, peripherals and silent devices, and a table of beliefs paired with the tool call that actually checks each one.

Claude Code picks it up if you install this repo as a plugin (.claude-plugin/plugin.json), or you can copy the directory into .claude/skills/ in your firmware project. MCP itself has no notion of skills — its portable equivalent is prompts, and this server ships four.

Its claims are tested. test/hil/s04-symbols.test.ts proves on real silicon that a backtrace without symbols has no function names, that loading the ELF gives them, and that a symbols-only load does not reprogram the device.

Multi-Probe Support

jlink-mcp supports multiple debug probe backends through a common ProbeBackend abstraction:

BackendProbe HardwareStatusRTT Support
J-LinkSEGGER J-Link, J-Link OB, J-Link EDUProductionYes
OpenOCDST-Link, CMSIS-DAP, FTDI, J-Link (via OpenOCD)BetaNo
Black Magic ProbeBMP (built-in GDB server on serial)BetaNo
probe-rsAll probe-rs supported probesPlannedPlanned

Selecting a Backend

bash
# J-Link (default)PROBE_TYPE=jlink JLINK_DEVICE=nRF52840_XXAA node out/mcp/standalone.js
# OpenOCD with ST-LinkPROBE_TYPE=openocd \  OPENOCD_INTERFACE=interface/stlink.cfg \  OPENOCD_TARGET=target/stm32f4x.cfg \  node out/mcp/standalone.js
# Black Magic ProbePROBE_TYPE=blackmagic \  BMP_SERIAL_PORT=/dev/ttyACM0 \  node out/mcp/standalone.js

Architecture

┌─────────────────────────────────────────────────────┐│                    MCP Client                        ││          (Claude, Copilot, any MCP client)           │└──────────────────────┬──────────────────────────────┘                       │ JSON-RPC over stdio┌──────────────────────▼──────────────────────────────┐│                  jlink-mcp                           ││                                                      ││  ┌──────────┐  ┌──────────┐  ┌───────────────────┐  ││  │ 31 Tools │  │4 Resources│  │    4 Prompts      │  ││  └────┬─────┘  └────┬─────┘  └───────┬───────────┘  ││       │              │                │              ││  ┌────▼──────────────▼────────────────▼───────────┐  ││  │              ProbeBackend                       │  ││  │  ┌─────────┐ ┌─────────┐ ┌──────────────────┐  │  ││  │  │ J-Link  │ │ OpenOCD │ │ Black Magic Probe│  │  ││  │  └────┬────┘ └────┬────┘ └────────┬─────────┘  │  ││  └───────┼───────────┼───────────────┼─────────────┘  ││          │           │               │              ││  ┌───────▼───┐ ┌─────▼────┐ ┌───────▼──────────┐  ││  │ RTTClient │ │TelnetProxy│ │  ProcessManager  │  ││  └───────────┘ └──────────┘ └──────────────────┘  │└─────────────────────────────────────────────────────┘                       │          ┌────────────▼────────────┐          │    Debug Probe (USB)    │          │  → Target MCU (SWD/JTAG)│          └─────────────────────────┘

Source Layout

src/├── probe/│   ├── backend.ts      # ProbeBackend abstract class + shared utilities│   ├── jlink.ts        # SEGGER J-Link implementation│   ├── openocd.ts      # OpenOCD implementation│   ├── blackmagic.ts   # Black Magic Probe implementation│   └── factory.ts      # Probe creation from config├── mcp/│   ├── server.ts       # MCP server (45 tools, 4 resources, 4 prompts)│   └── standalone.ts   # Standalone entry (stdio transport)├── rtt/│   └── rtt-client.ts   # RTT client with ANSI stripping + Zephyr log parsing├── telnet/│   └── telnet-proxy.ts # TCP proxy for Trice/Pigweed detokenizer├── utils/│   ├── config.ts       # VSCode settings / env var config│   ├── logger.ts       # Logging│   └── process-manager.ts # Child process lifecycle└── extension.ts        # VSCode extension + MCP provider registration

Design Decisions (LLM-Optimized)

This server was built by having an AI use it against real hardware, then fixing every friction point.

What read_registers would give you

Raw JLinkExe output for halt; regs — 77 lines, of which about six carry information. Every token here costs context, and the register values are buried in the middle:

SEGGER J-Link Commander V9.70 (Compiled Aug 19 2026 12:16:13)DLL version V9.70, compiled Aug 19 2026 12:15:25Connecting to J-Link ...O.K.Firmware: J-Link OB-nRF5340-NordicSemi compiled Jun 11 2026 13:12:28Hardware version: V1.00J-Link uptime (since boot): 0d 00h 34m 29sS/N: 1050298247License(s): RDI, FlashBP, FlashDL, JFlash, GDB...30 more lines of connect banner...PC = 00000044, CycleCnt = 00EB67E5R0 = 20000000, R1 = 9D56C547, R2 = 00000000, R3 = 00000000...FPS0 = 00000000, FPS1 = 00000000, FPS2 = 00000000, FPS3 = 00000000...28 more lines of zeroed FP registers...

What it actually gives you

Three lines. Same information, grouped by what you would ask for:

Core: PC=0x00000046 SP=0x20010000 R0=0x20000000 R1=0x01D43416 R2=0x00000000 ...Status: XPSR=0x01000000 CONTROL=0x00000000 PRIMASK=0x00000000 BASEPRI=0x00000000Stack: MSP=0x20010000 PSP=0x00000000

Both captured from the same board. The rest of the design follows the same rule — return what was asked for, and nothing else:

  • Output parsing strips the connection banner. Only data comes back.
  • Registers are compact and grouped (core / status / stack).
  • FP registers only shown if non-zero (they're usually all zeros).
  • RTT output has ANSI escape codes stripped and Zephyr log format parsed into structured fields.
  • Composite tools (start_debug_session, snapshot, diagnose_crash) replace multi-step workflows with single calls.
  • Fault decoding is automatic — reads CFSR/HFSR/MMFAR/BFAR and explains each bit.
  • rtt_search lets you find errors without reading the entire log.
  • Peripheral registers decode through the vendor's own CMSIS-SVD, so the model reads RAM = K256 rather than guessing what 0x100 means in that field of that register.
  • Failures say what to do. "Target is running; use halt" beats "could not read memory", and a fault-register read that did not happen reports itself rather than decoding zeroes into "no faults detected".

Verified on real hardware

Most of what can go wrong between an LLM and a debug probe fails quietly: a tool returns success with an empty payload, a parser drops half a line, a session dies and the next command reports something plausible instead. None of that is visible from reading the code, and a test suite that asserts "the call did not error" passes on all of it.

So this project runs a hardware tier: 58 tests against a real nRF52840-DK on a self-hosted runner, driving the actual MCP server over stdio exactly as a client would. It covers probe discovery, flash and verify, halt/step/resume under a live GDB session, memory and peripheral reads, RTT streaming and filtering, and crash diagnosis against faults injected on demand.

It has caught bugs that had been shipping green, including:

  • diagnose_crash reporting "No faults detected" during real crashes — the memory-dump parser was dropping half of every line
  • every GDB-routed tool returning empty output while the server reported itself healthy
  • sessions leaving the target unbootable, with breakpoint comparators still armed that no reset clears
  • reset reporting success while doing nothing at all — the GDB server is a synchronous remote and refuses commands while the target runs, so every command of the reset sequence was rejected in turn and the failure discarded
  • the session teardown that disarms debug hardware being refused in its entirety for the same reason, and reporting "debug hardware disarmed" regardless — the fix above is what made this one visible
  • a GDB server reported running when it had already exited, because startup returned on the spawn without waiting to see whether it got the probe
  • RTT going silent after a reset or a flash — the target was still logging and the probe had stopped collecting, which reads exactly like a quiet device. Caught by reading the control block from both ends: 490 bytes written by the firmware, none collected
  • an assignment that was silently discarded, taking RTT out for the rest of the session — the flag guarding it asked whether a state enum read GDB_RUNNING, when the question it meant to ask was whether the GDB server was running

Every one of those reported success. That is the point of the hardware tier, and the reason the suites assert on parsed content rather than on the call having returned without error — a suite that checked for errors would have passed on all of them.

Raw probe output captured during those runs is committed as golden transcripts, so a fast unit tier replays real device bytes in seconds on any machine — no probe required to catch a format regression.

bash
npm test          # ~257 tests, seconds, no hardwarenpm run test:hil  # hardware tier; needs HIL=1 and a probe

Environment Variables

J-Link

VariableDefaultDescription
PROBE_TYPEjlinkProbe backend: jlink, openocd, blackmagic
JLINK_DEVICEUnspecifiedTarget device (e.g., nRF52840_XXAA, STM32F407VG)
JLINK_INSTALL_DIRAuto-detectPath to SEGGER J-Link installation
JLINK_INTERFACESWDDebug interface: SWD or JTAG
JLINK_SPEED4000Connection speed in kHz
JLINK_SERIALJ-Link serial number (multi-probe)
JLINK_GDB_PORT2331GDB server port
JLINK_RTT_PORT19021RTT telnet port
JLINK_RTT_ADDRAutoAddress of the RTT control block (your _SEGGER_RTT symbol). J-Link finds this by scanning RAM but never reports it back — supplying it is what lets RTT survive a target reset

OpenOCD

VariableDefaultDescription
OPENOCD_BINARYopenocdPath to openocd binary
OPENOCD_INTERFACEinterface/stlink.cfgInterface config file
OPENOCD_TARGETtarget/stm32f4x.cfgTarget config file
OPENOCD_GDB_PORT3333GDB server port
OPENOCD_TELNET_PORT4444Telnet command port

Black Magic Probe

VariableDefaultDescription
BMP_GDB_PATHarm-none-eabi-gdbPath to GDB binary
BMP_SERIAL_PORT/dev/ttyACM0BMP serial port
BMP_TARGET_INDEX1Target index after scan

Contributing

Adding a new probe backend:

  1. Create src/probe/yourprobe.ts implementing ProbeBackend
  2. Add a case to src/probe/factory.ts
  3. That's it — all 31 MCP tools work automatically

License

MIT - see LICENSE


Built by The Sprk Factory

来源:README.md,提交 ad0c023

工具

48

list_devices

Scan for connected PROBES — the debuggers plugged into this machine, not target chips. Despite the name it does not list target devices; use search_devices for those. Shows probe serial numbers and whether one is reachable.

无需输入参数。

check_setup

Check that everything needed to debug is in place: the probe software, a connected probe, a target device name, and the optional files that make output readable. Run this first when anything fails, or when starting on a machine for the first time.

无需输入参数。

set_svd_path

Point the server at a CMSIS-SVD file for the target at runtime, so peripheral reads come back with named fields and decoded values instead of raw hex. Mirrors set_device — you do not have to restart with SVD_PATH set.

输入参数path必填

set_rtt_address

Tell the server where the firmware's RTT control block is (its _SEGGER_RTT symbol), at runtime. Without it RTT cannot be recovered after a reset or flash, and a stopped stream is indistinguishable from a quiet device. Mirrors set_device.

输入参数address必填

search_devices

Search the device names this J-Link installation accepts, by part number, manufacturer, or core. Use this before set_device instead of guessing a part number — the name must match exactly, and a wrong one fails in a way that looks like broken hardware.

输入参数limitquery必填

set_device

Set the target device name at runtime. Required before any debugging commands will work. The name must match J-Link's exactly — use search_devices to find it rather than guessing a part number. Examples: 'nRF52840_XXAA', 'nRF5340_xxAA_APP', 'STM32F407VG', 'STM32L476RG'.

输入参数device必填

set_serial_number

Set the debug probe serial number at runtime. Required when multiple probes are connected to select which one to communicate with. Run list_devices to see connected serial numbers.

输入参数serialNumber必填

start_debug_session

One-call setup: starts GDB server via SEGGER J-Link, connects RTT (if supported), waits for initial output. This is the recommended first tool to call. If no device is configured, use list_devices and set_device first.

无需输入参数。

snapshot

Capture complete device state: CPU registers (compact), fault status, recent RTT output, and stack dump.

输入参数rttLines

diagnose_crash

Auto-read and decode ARM Cortex-M fault registers (CFSR, HFSR, MMFAR, BFAR), exception stack frame, and recent errors.

无需输入参数。

device_info

Halt the target and read its registers via SEGGER J-Link. Returns the probe name and a compact register summary. Leaves the target HALTED — call resume when you are done.

无需输入参数。

halt

Halt the target CPU

无需输入参数。

resume

Resume the target CPU

无需输入参数。

reset

Reset the target device. Halting leaves the core stopped at the reset vector, which is where you want it before flashing, or to watch startup run.

输入参数haltstrategy

step

Step one CPU instruction

无需输入参数。

read_memory

Read memory from the target. Returns clean hex dump.

输入参数length必填address必填

write_memory

Write a 32-bit value to memory

输入参数value必填address必填

read_registers

Read all CPU registers (compact format, FP only if non-zero).

无需输入参数。

read_register

Read a specific CPU register by name

输入参数register必填

flash

Flash firmware to the target device

输入参数filePath必填baseAddress

erase

Erase target flash memory

无需输入参数。

list_peripherals

List the target's peripherals and base addresses, from its CMSIS-SVD description. Requires an SVD file to be configured.

输入参数filter

read_peripheral

Read every register of a peripheral from the target and decode each one's bit fields by name. This is read_memory plus the meaning of what was read.

输入参数registersperipheral必填

decode_register

Decode a value into named bit fields using the target's SVD. Reads from the device unless a value is supplied — useful for interpreting a number you already have.

输入参数valueregister必填peripheral必填

set_breakpoint

Set a hardware breakpoint

输入参数address必填

clear_breakpoints

Clear all breakpoints, including any left armed in the debug hardware by an earlier session

无需输入参数。

gdb_server_start

Start SEGGER J-Link GDB server

无需输入参数。

gdb_server_stop

Stop SEGGER J-Link GDB server and disconnect RTT

无需输入参数。

gdb_server_status

Get GDB server, RTT, and telnet proxy status

无需输入参数。

gdb_connect

Connect a GDB client to the running GDB server. Enables source-level debugging: backtraces, variable inspection, conditional breakpoints, stepping by source line. Optionally load an ELF file for symbol info.

输入参数hostportelfFile

gdb_command

Send any GDB command and get the response. For execution commands (continue, step, next, finish, until), blocks until the target stops or times out. If the target doesn't stop, use gdb_wait to poll. Examples: 'bt' (backtrace), 'info threads', 'print myVar', 'break main', 'continue', 'next', 'step', 'finish', 'info registers', 'x/10xw 0x20000000'

输入参数command必填timeout

gdb_wait

Poll for target stop after a continue/step that timed out. Returns the stop reason (breakpoint hit, signal, finished stepping, etc.) when the target halts.

输入参数timeout

gdb_load

Load an ELF file into GDB. By default loads symbols only (for source-level debugging: backtraces with file:line, variable names). Set flash=true to also program it onto the target.

输入参数flashelfFile必填

gdb_backtrace

Get a stack backtrace. With debug symbols loaded, shows function names, file paths, and line numbers.

输入参数full

gdb_disconnect

Disconnect the GDB client (does not stop the GDB server)

无需输入参数。

rtt_connect

Connect to RTT

无需输入参数。

rtt_disconnect

Disconnect from RTT

无需输入参数。

rtt_read

Read RTT log lines (clean, parsed Zephyr format). Non-destructive — reading does not consume the buffer. Returns the NEWEST lines by default; oldest:true returns the start of the buffer. Note the buffer spans reflashes: its oldest lines may be from firmware you have since replaced. rtt_clear drops them.

输入参数countoldest

rtt_send

Send data to device via RTT down-channel

输入参数data必填

rtt_status

Read SEGGER's RTT control block on the target: is it initialised, how much has the firmware written, and how much has the probe collected. Use this when RTT is silent — it separates a quiet device from a probe that stopped collecting, which look identical from rtt_read.

输入参数address

rtt_clear

Clear RTT buffer

无需输入参数。

telnet_proxy_start

Start a TCP relay that re-serves the RTT stream on another port, so an external decoder (Trice, Pigweed, or your own) can consume it alongside this server. It relays bytes; it does not decode them.

无需输入参数。

telnet_proxy_stop

Stop telnet proxy

无需输入参数。

telnet_proxy_status

Get telnet proxy status

无需输入参数。

telnet_proxy_read

Read raw data from telnet proxy buffer

输入参数lines

probe_command

Execute raw SEGGER J-Link commands

输入参数commands必填

get_config

Get current probe and server configuration

无需输入参数。

版本历史

2
  1. v0.8.0最新Oct 26, 2026
  2. v0.6.0Sep 16, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分