jlink

J-Link 下载与在线调试工具,用于探测设备、烧录固件、读写内存、查看寄存器、复位目标、读取 RTT/SWO 日志, 以及在线调试(暂停/恢复/单步/断点运行/调用栈/变量查看)。 当用户提到 J-Link、JLink、RTT、烧录固件、写内存、读内存、寄存器查看、目标复位、探针连通性检查、 在线调试、单步、断点、调用栈时自动触发,也兼容 /jlink 显式调用。 即使用户只是说"烧录一下"、"看看 RTT 输出"或"调试一下",只要上下文涉及 J-Link 探针就应触发此 skill。

By zhinkgit · 560 installs

npx skills add zhinkgit/embeddedskills --skill jlink

Source repository · Upstream listing

J Link 下载与在线调试 本 skill 提供 J Link 探针的设备探测、固件烧录、内存读写、寄存器查看、目标复位、RTT 日志读取,以及轻量在线调试和 GDB 源码级调试能力。 配置 环境级配置(skill/config.json) skill 目录下的 config.json 包含环境级配置(工具路径、端口号等),首次使用前确认 exe 路径正确: exe :JLink.exe 完整路径(必填) gdbserver exe :JLinkGDBServerCL.exe 路径,RTT 和 GDB 调试需要 rtt exe :JLinkRTTClient.exe 路径 gdb exe :arm none eabi gdb 路径,GDB 源码级调试需要 serial no :默认探针序列号,多探针场景下使用 rtt telnet port :RTT 端口,0 表示使用工具默认值 swo command :可选,完整 SWO viewer 命令数组,供 jlink swo.py 包装 operation mode : 1 直接执行 / 2 输出风险摘要但不阻塞 / 3 执行前确认 工程级配置(.embeddedskills/config.json) 设备参数(device/interface/speed)统一在工作区的 .embeddedskills/config.json 中管理: device :芯片型号(如 STM32F407VG、GD32F470ZG) interface :调试接口,SWD 或 JTAG,默认 SWD speed :调试速率 kHz,默认 4000 参数解析优先级: CLI 显式参数 .embeddedskills/config.json (工程级) skill/config.json (环境级) .embeddedskills/state.json 默认值/报错 成功执行后,确认过的 device/interface/speed 会自动写回工程配置。 子命令 基础操作 子命令 用途 风险 info 探测探针与目标连通性 低 flash 烧录固件(.hex / .bin / .elf) 高 read mem 读取内存区域 低 write mem 写入内存 高 regs 查看 CPU 寄存器 低 reset 复位目标芯片 高 rtt 读取 RTT 日志输出 低 swo 包装外部 SWO viewer 为统一事件流 低 在线调试(JLink Commander) 子命令 用途 风险 halt 暂停 CPU,返回寄存器状态 低 go 恢复 CPU 运行 低 step 单步执行(支持指定步数),返回执行的指令和寄存器 低 run to 设置断点并运行,等待命中后返回状态 低 GDB 源码级调试 子命令 用途 依赖 gdb backtrace/locals 查看调用栈和局部变量 arm none eabi gdb gdb break/continue/next/step/finish/until one shot 控制执行流 arm none eabi gdb gdb frame/print/watch/disassemble/threads/crash report one shot 源码级诊断 arm none eabi gdb 执行流程 1. 读取 skill/config.json ,确认 exe 路径有效 2. 读取 .embeddedskills/config.json 获取工程级配置(device/interface/speed) 3. 读取 .embeddedskills/state.json 获取历史状态 4. 参数解析优先级: CLI 显式参数 .embeddedskills/config.json (工程级) skill/config.json (环境级) .embeddedskills/state.json 默认值/报错 5. 若当前动作需要 device 且仍为空,直接要求用户补充,绝不猜测 6. 多探针场景未指定 serial no 时,列出探针让用户选择,不自动选择 7. 按 operation mode 决定是否需要确认后执行 8. 使用模板生成临时 .jlink 命令文件,调用 JLink.exe 时带 NoGui 1 ExitOnError 1 AutoConnect 1 9. 解析输出和返回码,返回结构化结果 10. 成功执行后,将确认过的 device/interface/speed 写回 .embeddedskills/config.json 脚本调用 skill 目录下有四个 Python 脚本,使用标准库实现,无额外依赖。 jlink exec.py — 基础操作 + 轻量调试 通用可选参数: interface SWD JTAG 、 speed 4000 、 serial no <序列号 、 exe <JLink.exe路径 jlink rtt.py — RTT 日志读取 可选参数: serial no 、 channel 、 encoding 、 rtt port 、 gdbserver exe <路径 、 rtt exe <路径 RTT 工作原理:脚本先通过 JLinkGDBServerCL.exe 建立调试连接,再启动 JLinkRTTClient.exe 读取 RTT 数据。 json 模式输出 JSON Lines。 jlink swo.py — SWO 事件流包装 jlink swo.py 不直接实现 SWO 协议,而是把外部 viewer 的 stdout/stderr 统一包装成 JSON Lines,便于上层 workflow 或 AI 继续消费。 jlink gdb.py — GDB 源码级调试(需要 arm none eabi gdb) GDB 调试需要 ELF 文件才能进行源码级调试(断点到函数名、查看变量)。没有 ELF 时仍可使用地址级调试。 输出格式 所有脚本以 JSON 格式返回,基础字段为 status (ok/error)、 action 、 summary 、 details ,并可能附带 context 、 artifacts 、 metrics 、 state 、 next actions 、 timing 。流式观测命令使用 JSON Lines,并统一输出 source 、 channel type 、 stream type 。 成功示例: step 示例(包含执行的指令): run to 示例(断点命中): 核心规则 不自动猜测 device 芯片型号,缺失时必须询问用户 多探针场景不自动选择探针,必须让用户指定序列号 参数解析优先级为: CLI 显式参数 .embeddedskills/config.json (工程级) skill/config.json (环境级) .embeddedskills/state.json 默认值/报错 .bin 文件必须显式提供烧录地址,缺失时报错 连接失败时给出排查建议(检查连线、供电、接口类型、速度),不自动尝试更激进参数 烧录、写内存、复位在参数完整且用户意图明确时直接执行 run to 的断点在单次 JLink 会话内完成设置和清除,不存在跨会话 handle 问题 结果回显中始终包含目标芯片、接口类型和执行动作 产物路径(elf/file)不进入工程配置,仍只依赖 state.json last flash / last debug 等运行状态继续写入 state.json 调试典型工作流 快速排查(JLink Commander) 适合查看当前执行位置、寄存器状态、内存值,无需 ELF 和 GDB。 断点调试(JLink Commander) 在指定地址设置断点并等待命中,查看此时的状态。 源码级调试(GDB) 需要 ELF 文件和 arm none eabi gdb,支持函数名断点和变量查看。 参考 遇到芯片型号问题时可查阅 references/common devices.md 。