硬件接口(JTAG / UART / Flash 读取)

SkillDev tools

硬件接口:JTAG/UART/flash 读取。 触发词:JTAG、UART、串口、flash芯片、硬件提取、逻辑分析仪

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the 硬件接口(JTAG / UART / Flash 读取) skill

What this skill tells your AI

The instructions your AI receives, as published by dslsdzc/rev-skills in .claude/skills/re-hardware-io/SKILL.md and read by ahel’s review.

何时使用 / 何时不用

  • 用:有实物板子,需要提取固件、抓启动日志、硬件调试
  • 用:JTAG/SWD 调试、UART 串口、flash 芯片直读、逻辑分析仪抓信号
  • 不用:只有固件文件(走 [[re-fw-extract]],硬件提取是最后手段)
  • 不用:已解出 rootfs 只需静态分析(走 [[re-fw-rootfs]])
  • 不用:需要运行固件(先试 [[re-fw-emulate]] 更安全、更便宜)

工具准备

所有工具先验证再使用。硬件操作风险高:先万用表测电平、共地、核对丝印再上电(见坑 3/4)。遵循 [[re-analyze/platform-tips]] 先给最轻可行方案:软件手段(文件→解包→仿真)耗尽后再上硬件。

openocd —— JTAG/SWD 调试

  • Linux: apt install openocd / dnf install openocd / pacman -S openocd
  • macOS: brew install openocd
  • Windows: choco install openocd(或官方 Windows 构建)
  • 验证: openocd --version

picocom / minicom —— 串口终端

  • Linux: apt install picocom(或 apt install minicom)/ dnf install picocom / pacman -S picocom
  • macOS: brew install picocom
  • Windows: choco install putty(PuTTY 支持串口)或 WSL 内 Linux 版
  • 验证: picocom --version

flashrom —— flash 芯片读取

  • Linux: apt install flashrom / dnf install flashrom / pacman -S flashrom
  • macOS: brew install flashrom
  • Windows: 官方构建或 WSL(编程器 ch341a 在 WSL 内用 flashrom -p ch341a_spi
  • 验证: flashrom --version

逻辑分析仪(sigrok-cli / pulseview)

  • Linux: apt install sigrok-cli pulseview / dnf install sigrok-cli pulseview / pacman -S sigrok-cli pulseview
  • macOS: brew install sigrok-cli pulseview
  • Windows: sigrok 官方 Windows 安装包(sigrok.org)
  • 验证: sigrok-cli --version / pulseview --version

JTAGulator —— 引脚识别板(开源硬件)

  • 开源硬件项目 git clone https://github.com/grandideastudio/JTAGulator(含固件与文档);需自行购买/打样 JTAGulator 板
  • 验证: 串口连接后发送 help 显示命令清单
  • 用它对未知板自动枚举 UART/JTAG 引脚(步骤 1/2 的得力工具)

硬件选购指引(常见方案与电平)

  • USB-UART 适配器: CH340 / CP2102 / FTDI 三种芯片方案均可,选支持 3.3V TTL 电平的型号(带 3.3V/5V 跳线更通用)——3.3V 板上插 5V TTL 会烧接口(见坑 3)
  • 调试器: ST-Link v2(STM32 系,SWD/JTAG 都支持)、J-Link(通用,授权收费)、CMSIS-DAP/DAPLink(开源固件方案)——按目标芯片厂牌选
  • SPI flash 编程器: ch341a(最便宜的 SOIC8 方案)+ 夹子/测试座;多协议需求用 RT809H 类编程器
  • 逻辑分析仪: 采样率按信号速率选——UART 115200 与低速 SPI 用 8 通道 24MHz 级别够用;高速 SPI(数十 MHz)需要 100MHz+ 采样(经验值:采样率至少为信号速率的 4 倍)
  • 电平转换: 1.8V/2.5V 板子与 3.3V 工具混接时用 TXS0108 类双向电平转换模块

操作步骤

按顺序执行,每步记下结果。

  1. 板子拆解与接口定位
    • 拆壳观察 PCB:丝印(TX/RX、VCC、GND、JTAG/SWD 测试点)、插针、flash 芯片型号(如 W25Q128、MX25L、GD25Q)
    • 万用表:测供电电平(3.3V 常见,也有 5V / 1.8V)、找 GND;UART TX 脚特征——上电瞬间拉高到逻辑高电平的方波
    • 拍照存档:丝印、引脚编号、flash 型号,供后续接线核对
  2. UART 串口调试(波特率枚举)
    picocom -b 115200 /dev/ttyUSB0        # 先试 115200
    # 乱码 → Ctrl+A Ctrl+X 退出,换 9600 / 57600 / 38400 / 19200 / 230400
    # 或 minicom -D /dev/ttyUSB0
    
    • TX/RX 需交叉接线(板子 TX ↔ 适配器 RX);共地必须
    • 上电瞬间抓启动日志——是了解系统最快途径(见坑 4)
  3. JTAG/SWD 连接(openocd)
    openocd -f interface/stlink.cfg -f target/stm32f1x.cfg   # ST-Link + SWD 示例
    # 其他适配器在 /usr/share/openocd/scripts/interface/ 下选对应 cfg
    
    • 确认接口类型(JTAG 4/5 线 vs SWD 2 线)与电平(1.8V 板子需电平适配器)
    • 连上后 halt 暂停、读寄存器、dump flash(flash read_bank 0 dump.bin
    • 一行命令模式(脚本化/无交互): openocd -f interface/stlink.cfg -f target/stm32f1x.cfg -c "init; halt; flash read_bank 0 dump.bin; exit"
  4. flash 芯片读取(flashrom/编程器)
    # 板载 SPI flash(linux_spi 需内核 spidev 支持):
    flashrom -p linux_spi:dev=/dev/spidev0.0 -r backup.bin
    # 离线读取(ch341a 编程器 + SOIC8 夹子,先断电):
    flashrom -p ch341a_spi -r backup.bin
    
    • 核对芯片型号与封装(SOIC8 夹子/测试座),引脚方向别接反
    • 读出的镜像转 [[re-fw-extract]] 解包
  5. 启动日志抓取
    • 串口连好 → 板子上电 → 全量抓日志(picocom 输出 tee log.txt,或 minicom 捕获)
    • 日志含 bootloader、内核启动、文件系统挂载、服务自启信息;与 [[re-fw-rootfs]] 的启动脚本对照定位
    • UART 没输出 → 回到步骤 1 复查接线/波特率,或用逻辑分析仪抓 TX 脚波形验证

跨域联合

  • [[re-firmware]]:工作流第 5 步(需实物时)调用本技能
  • 提取的 flash 镜像 → [[re-fw-extract]] 解包 → [[re-fw-rootfs]] 分析;需要运行 → [[re-fw-emulate]]
  • 硬件上抓到的通信/协议 → [[re-protocol]]
  • 硬件提取是固件分析的最后手段:软件手段(文件 → 解包 → 仿真)全部耗尽后再上
  • 物理层芯片/PCB 分析(decap/裸片/木马检测)→ [[re-hw-chip]]

常见坑与陷阱

  • 波特率不对 → 乱码:现象——串口输出全是乱码或无输出;原因——波特率/数据位不匹配、TX/RX 接反;对策——按 9600 / 115200 优先枚举(57600 / 38400 / 230400 兜底),用逻辑分析仪看 TX 波形验证,共地必须
  • JTAG 被熔断/锁定:现象——openocd 连不上,IDCODE 全 0 或超时;原因——量产板熔断 JTAG、读保护(RDP)开启;对策——试 SWD、stm32f1x unlock 类解锁序列,或放弃 JTAG 改走 UART + flash 直读(步骤 4)
  • 5V/3.3V 电平误接烧板:现象——接线后板子发热/冒烟/永久损坏;原因——电平不匹配(3.3V 板上接 5V TTL)、供电接错、VCC/GND 反接;对策——先万用表测电平与 GND 再接线;3.3V 系统用 3.3V 适配器;绝不带电插拔
  • 先看启动日志再动手:现象——盲目拆焊 flash / 连 JTAG 导致损坏或数据丢失;原因——跳过低成本观察直接上硬件手段;对策——先 UART 抓启动日志了解系统(步骤 2/5),再决定是否硬件读取——这是 [[re-analyze/platform-tips]] 先给最轻可行方案在硬件域的执行
  • Intel DCI 调试工具链兼容性坑:现象——Intel System Studio 2019(System Debugger)在 Win10/11 安装/运行失败,DCI 线缆连不上 CPU;原因——该软件基于 Win7 开发且带环境检测与 License 校验:Win11 提示缺 Win7 安全补丁、公开 License 文件在 Windows 版无效;对策——安装用兼容模式;运行加 --noprereq 跳过环境检查;License 校验核心在 issa.dll 导出函数中(三个校验函数),patch 后替换即可;DCI 配置按平台选型(如 KBL=Kaby Lake、SPT=200 系主板、DBC=Debug Class 线缆),CLI 调试用 DAL 目录的 PythonConsole.cmd(Python 2.7 环境,itp.cores/itp.halt() 等命令);ME 端需 UTOK 解锁才响应调试命令(见 [[re-fw-extract]])
  • 命令族速查与操作序列见 [[commands]];工具特有坑与版本差异见 [[gotchas]]

Signals

GitHub stars
57
Forks
8
Last commit
Sep 2026

ahel review

  • K1binfo
    installs-packages

Automated review, not a security audit. Ruleset v1+k2.

Advanced
Catalog kind
skill
Gateway key
re-hardware-io
Source
github.com/dslsdzc/rev-skills