嵌入式问题同时跨越软件状态机电气现实: 先区分「程序未跑到」与「程序跑到了但外设没按预期动作」,再用分层证据缩小范围。 测量手法错误会得到「看起来很真实的假波形」,要特别警惕。

入门:最小调试情报

  • 日志:UART/SWO/RTT;注意波特率、缓冲区溢出与编码(见 UTF-8)。
  • 断点与单步:注意打断实时路径可能导致时序消失;关键路径可用 GPIO 翻转配合逻辑分析仪。
  • 寄存器快照:核对时钟是否使能、引脚复用是否正确。

入门:示波器与探头接地

长地线会引入电感,看到的振铃可能是测量系统伪造;优先短弹簧地、差分探头测差分对。 带宽与采样率要覆盖信号有效谐波,否则漏掉毛刺。

深入:电源与噪声

用示波器 AC 耦合看电源纹波;定位噪声来源时可分区断电、对比空载与满载。 电流探头可看浪涌;注意方向与消磁校准。

深入:逻辑分析仪与协议解码

适合 UART/I2C/SPI 时序关系排查;采样深度与触发设置决定能否抓到偶发事件。 协议解码结果要与电气波形互相印证。

深入:片上调试(SWD / JTAG)

ARM Cortex-M 常用 SWD(时钟线 + 数据线),占用引脚少;更多内核或 FPGA 场景可能仍用 JTAG。 仿真器与目标板之间的接线电阻、过长杜邦线、错误电平(3.3 V vs 1.8 V)会导致间歇无法 halt、读寄存器随机失败——优先排除物理连接再怀疑代码。

多核或复杂 SoC 可能还有跟踪端口(trace)与缓冲深度限制;开启跟踪会影响实时性与带宽,需阅读调试器与 IDE 文档。

实践:最小排障清单(可打印)

  1. 复位后第一条日志是否输出?——区分启动文件、时钟、UART 初始化顺序。
  2. 外设寄存器复位默认值是否与假设一致?——对照 RM「复位值」列。
  3. 同样代码在评估板与自研板行为是否一致?——对照供电、晶振负载电容、BOOT 引脚。
  4. 关闭编译器优化前后现象是否变化?——警惕未定义行为与 volatile。

安全提示

高压/市电侧测量须遵守电气安全规范;本文默认≤48 V SELV 场景。

仪器型号与精度差异巨大;测量结论应注明探头、带宽限制与耦合方式。

与其它主题的衔接

嵌入式 C原理图PCB