硬件接口命令速查与操作序列(UART / JTAG-SWD / Flash / 逻辑分析仪)
工具族分工:picocom/minicom(串口终端)→ openocd(JTAG/SWD 调试与 flash dump)→ flashrom(SPI flash 直读)→ sigrok-cli/pulseview(逻辑分析仪)→ JTAGulator(未知板引脚枚举)。硬件操作前置:万用表测电平、共地、核对丝印(见 gotchas 与 SKILL.md 坑)。
命令族速查
串口(picocom / minicom)
| 用途 |
命令 |
| 打开串口 |
picocom -b 115200 /dev/ttyUSB0 |
| 退出 picocom |
Ctrl+A Ctrl+X |
| 无流控模式 |
picocom -b 115200 --nolock /dev/ttyUSB0(权限不够时配合 sudo) |
| minicom 版 |
minicom -D /dev/ttyUSB0(Ctrl+A Z 帮助,Ctrl+A X 退出) |
| 串口设备确认 |
ls /dev/ttyUSB* /dev/ttyACM*;`dmesg |
| 记录到文件 |
`picocom ... |
openocd —— JTAG/SWD(Telnet 交互 + 命令行)
| 用途 |
命令 |
| ST-Link + STM32F1 |
openocd -f interface/stlink.cfg -f target/stm32f1x.cfg |
| 其他适配器 |
ls /usr/share/openocd/scripts/interface/(jlink/swd 等按名选) |
| 一行命令模式 |
openocd -f <if> -f <target> -c "init; halt; flash read_bank 0 dump.bin; exit" |
| 交互模式 |
启动后连 telnet localhost 4444(默认端口) |
| halt 暂停 |
halt |
| 读寄存器 |
reg pc / reg sp / reg(全部) |
| 读内存 |
mdw <addr> 16(32 位读 16 个)/ mdb / mwh |
| 写内存 |
mww <addr> <val>(危险操作,先读后写) |
| dump flash |
flash read_bank 0 dump.bin(bank 号与镜像大小以 flash banks 为准) |
| 擦/写 flash |
flash erase_sector 0 0 last / flash write_bank 0 firm.bin(写会破坏原内容,先备份) |
| 复位 |
reset / reset halt |
| 解锁(读保护) |
stm32f1x unlock 0 类命令(按目标系列;见 gotchas) |
flashrom —— SPI flash 直读
| 用途 |
命令 |
| 列芯片型号 |
flashrom -p ch341a_spi(不带 -r 先识别) |
| 读取 |
flashrom -p ch341a_spi -r backup.bin |
| 板载 SPI(spidev) |
flashrom -p linux_spi:dev=/dev/spidev0.0 -r backup.bin |
| 校验 |
flashrom -p ch341a_spi -v backup.bin(读回比对) |
| 写入 |
flashrom -p ch341a_spi -w new.bin(破坏性,先读后写) |
| 强制指定型号 |
-c <chipname>(识别失败但已知型号时,flashrom -p ch341a_spi -c "W25Q128" 类) |
逻辑分析仪(sigrok-cli)
| 用途 |
命令 |
| 列设备 |
sigrok-cli -L / sigrok-cli --scan |
| 采样抓取 |
sigrok-cli -d <driver>:conn=<设备> -c samplerate=1M -O <格式> -o data.sr -t 10s |
| UART 解码 |
sigrok-cli -d ... -A uart:rx=<通道>:baudrate=115200 -o out.txt |
| SPI 解码 |
-A spi:clk=<脚>:mosi=<脚>:miso=<脚>:cs=<脚> |
| 图形查看 |
pulseview(GUI,加载 .sr 逐协议解码) |
JTAGulator —— 引脚枚举
常用操作序列
1. UART 启动日志抓取(最轻的固件情报)
2. SPI flash 直读(离线提取)
3. JTAG/SWD 连上 dump flash(板载在线)
4. 逻辑分析仪抓 UART 验证波特率
实现教训(内化)
- 硬件操作不可逆程度高:先观测(万用表/逻辑分析仪/启动日志)后动手(焊/写)
- 每次接线/换挡记录照片与笔记:丝印、引脚编号、电平、接线颜色——返工排查全靠它
- flash 写操作前必读备份并校验(-v)——写坏救不回来
- 一个工具不通换路径:JTAG 锁了走 UART + flash 直读;flash 焊接位坏走在线读;始终保留最轻方案
- 提取产物(dump.bin + sha256 + 板型/芯片型号)入档,供 re-fw-extract / re-fw-rootfs 消费
使用注意
- 断电操作接线;带电插拔是烧板第一原因(见 gotchas)
- 提取的镜像与日志 sha256 存档;硬件操作记录(时间/步骤/照片)写分析笔记(re-triage 惯例)
- 板子来源与授权:仅分析自己持有或有权限的硬件