2. SWD接口硬件识别:PCB板级SWD接口查找、原理图SWD信号追踪、万用表测量SWDIO/SWCLK引脚
拿到一块陌生的板子,第一件事是什么?我个人的习惯是——先找调试接口。没有调试接口,你连芯片在跑什么都不知道,更别提安全分析了。SWD接口虽然只有两根线,但在PCB上找到它们,有时候还真得费点功夫。
这一节,咱们就聊聊怎么在硬件层面把SWD接口揪出来。说白了,就是三板斧:看板子、看图纸、拿表量。
2.1 PCB板级SWD接口查找:从外观特征入手
先说说最直观的方法——肉眼观察。SWD接口在PCB上通常有固定的“长相”。
常见的PCB接口形式有这几种:
- 2x5双排插针(10-pin):ARM标准调试接口,最常见。SWDIO和SWCLK通常在中间两列。
- 2x3双排插针(6-pin):紧凑型设计,常见于小尺寸产品。
- 单排4-pin或5-pin排针:低成本方案,引脚顺序不固定,需要查原理图确认。
- 裸焊盘(Test Pad):量产产品为了防调试,可能不装排针,只留几个小焊盘。这时候就得用万用表或示波器去戳了。
我遇到过一块工业控制板,厂家把SWD接口伪装成了JTAG接口的物理形状,但实际只连了SWDIO和SWCLK两根线。你想想看,如果只看外形就按JTAG去接,肯定连不上。
2.2 原理图SWD信号追踪:从芯片引脚到接口
如果有原理图,那事情就简单多了。但原理图有时候也不那么直观,尤其是大型项目,信号可能经过电平转换、缓冲器或者复用开关。
追踪SWD信号的步骤,我一般这么来:
- 找到目标MCU:先定位主芯片,通常是板上最大的那颗,或者带有ARM Cortex-M标识的。
- 查找SWDIO和SWCLK引脚:在芯片的引脚列表里搜索“SWDIO”、“SWCLK”、“PA13”、“PA14”(STM32系列)、“TMS”、“TCK”(有些芯片复用JTAG命名)。
- 追踪网络标号:从芯片引脚出发,沿着网络标号(Net Label)走。看它连到了哪里——是直接去了排针,还是经过了电阻、电平转换芯片、或者模拟开关。
- 检查串联电阻:很多设计会在SWDIO和SWCLK上串联一个0Ω或10Ω的电阻。这个电阻既是调试口的“保险丝”,也是安全分析的突破口——把它拆掉,调试接口就断了。
举个例子,这是一段典型的STM32F103原理图追踪逻辑:
// 芯片引脚 -> 网络标号 -> 连接路径
PA14 (SWCLK) -> SWCLK_NET -> R21 (10Ω) -> J1-4 (排针第4脚)
PA13 (SWDIO) -> SWDIO_NET -> R22 (10Ω) -> J1-2 (排针第2脚)
GND -> GND_NET -> J1-3, J1-5 (排针第3、5脚)
VCC_3V3 -> VCC_NET -> J1-1 (排针第1脚)
你看,只要顺着网络标号走,就能把整个路径摸清楚。我曾经遇到一个设计,SWD信号中间加了一颗电平转换芯片,结果调试器死活连不上,最后发现是电平转换芯片的使能脚没拉高。这种坑,原理图上一眼就能看出来。
2.3 万用表测量SWDIO/SWCLK引脚:实战确认
没有原理图怎么办?或者原理图跟实物对不上?那就得上万用表了。
万用表测量SWD接口,主要做三件事:找GND、找VCC、确认SWDIO和SWCLK。
2.3.1 找GND和VCC
先把万用表打到通断档(蜂鸣档)。
- 找GND:黑表笔接板子的地(比如USB外壳、螺丝孔、大面积的铜箔),红表笔去戳怀疑是GND的引脚。蜂鸣器响了,就是GND。
- 找VCC:万用表打到直流电压档(20V档)。黑表笔接GND,红表笔戳其他引脚。测到3.3V或1.8V的,就是VCC。
2.3.2 识别SWDIO和SWCLK
SWDIO和SWCLK在静态下(芯片没进入调试模式),有一些电气特征:
| 引脚 | 静态电压(对GND) | 对地电阻(二极管档) | 备注 |
|---|---|---|---|
| SWCLK | 通常为高电平(VCC或接近VCC) | 较大(内部上拉或浮空) | 内部有弱上拉,默认高电平 |
| SWDIO | 通常为高电平或不确定 | 较大 | 双向数据线,状态不定 |
| GND | 0V | 0Ω | 直接接地 |
| VCC | 3.3V / 1.8V | 较大(对地) | 电源 |
实际操作时,我一般这么干:
- 板子上电,万用表测所有可疑引脚的电压。
- 找到电压为VCC的引脚(电源)和0V的引脚(GND)。
- 剩下的引脚里,电压接近VCC的那个,大概率是SWCLK(因为内部上拉)。
- 电压在0V到VCC之间飘忽不定的那个,就是SWDIO。
2.4 知识体系:SWD接口硬件识别流程
下面这张图,是我自己总结的SWD接口硬件识别流程。从拿到板子到确认引脚,每一步都标清楚了。
这张图把整个识别过程串起来了。你从“拿到目标板”开始,先问自己有没有原理图。有,就走绿色通道,追踪网络标号;没有,就走红色通道,上万用表。最终汇合到确认引脚,然后连接调试器。
嗯,这里要注意一点:有些芯片出厂时SWD接口是默认开启的,但有些(比如STM32L0系列)如果设置了RDP Level 1或Level 2,SWD就会被禁用。这时候你就算找到了引脚,也连不上。所以,硬件识别只是第一步,后面还有安全分析等着我们。