banner
NEWS LETTER

嵌入式调试入门:串口、JTAG、OpenOCD 与 gdbserver

Scroll down

一、嵌入式调试的层次

嵌入式调试比普通应用复杂,因为问题可能出在硬件、启动链路、内核、驱动、文件系统或应用。

常见调试手段:

  • 串口日志。
  • LED 状态灯。
  • JTAG/SWD。
  • OpenOCD。
  • GDB。
  • gdbserver。
  • 逻辑分析仪。
  • 示波器。

入门阶段先掌握串口、gdbserver,再逐步学习 JTAG/OpenOCD。

二、串口调试

串口是嵌入式最重要的调试入口。

连接注意:

  • TX 接 RX。
  • RX 接 TX。
  • GND 必须共地。
  • 电平要匹配。
  • 波特率要一致。

常用参数:

1
115200 8N1

使用:

1
picocom -b 115200 /dev/ttyUSB0

串口能看到:

  • U-Boot 输出。
  • Kernel 启动日志。
  • init 日志。
  • 应用打印。

如果完全没有串口输出,优先检查硬件连接和波特率。

三、LED 状态灯

在早期启动或系统异常时,日志可能不可用。LED 是低成本状态指示。

常见设计:

  • 上电常亮:电源正常。
  • U-Boot 闪烁:bootloader 运行。
  • Kernel 慢闪:内核启动。
  • App 心跳:业务正常。
  • 快闪:错误状态。

不要小看 LED。量产设备没有屏幕时,状态灯是现场排障的重要线索。

四、gdbserver 调试应用

目标板安装 gdbserver

开发板运行:

1
gdbserver :2345 ./app

开发机运行交叉 GDB:

1
arm-linux-gnueabihf-gdb ./app

连接:

1
2
3
target remote 192.168.1.100:2345
break main
continue

注意:

  • 开发机上的 app 要带调试符号。
  • 目标板上的 app 要和开发机上的二进制对应。
  • 动态库符号路径要配置正确。

五、JTAG/SWD

JTAG/SWD 可以在 CPU 层面调试,常用于:

  • 裸机程序。
  • Bootloader。
  • RTOS。
  • 早期启动问题。
  • 内核调试。

常见调试器:

  • J-Link。
  • ST-Link。
  • CMSIS-DAP。
  • FT2232。

JTAG/SWD 能做:

  • 下载程序。
  • 设置断点。
  • 单步执行。
  • 查看寄存器。
  • 查看内存。
  • 停止 CPU。

六、OpenOCD

OpenOCD 是开源片上调试工具,常用于连接调试器和 GDB。

典型流程:

1
GDB -> OpenOCD -> JTAG/SWD -> Target

启动 OpenOCD 示例:

1
openocd -f interface/cmsis-dap.cfg -f target/stm32f4x.cfg

另开终端:

1
arm-none-eabi-gdb firmware.elf

GDB 中连接:

1
2
3
4
target remote localhost:3333
monitor reset halt
break main
continue

具体配置取决于芯片和调试器。

七、逻辑分析仪

逻辑分析仪适合看数字信号。

常见用途:

  • UART 波形。
  • I2C 地址和数据。
  • SPI 时钟和数据。
  • GPIO 翻转时序。

当软件日志显示“读不到设备”时,逻辑分析仪可以确认总线上到底有没有信号。

八、示波器

示波器适合看模拟电压和信号质量。

常见用途:

  • 电源纹波。
  • 上电时序。
  • 复位信号。
  • 时钟波形。
  • 电平是否达标。

如果设备偶发重启、通信不稳定,不要只看代码,电源和信号质量也可能是根因。

九、排错顺序

建议顺序:

  1. 电源是否正常。
  2. 串口是否有输出。
  3. Bootloader 是否运行。
  4. Kernel 是否启动。
  5. RootFS 是否挂载。
  6. 应用是否启动。
  7. 外设总线是否有信号。
  8. 驱动是否 probe。
  9. 应用协议是否正确。

不要跳过硬件基础检查。很多“软件问题”最后都是线接错、电压不对、复位没拉起来。

十、总结

嵌入式调试要分层。应用问题用日志和 gdbserver,启动问题看串口和 U-Boot,裸机和早期初始化问题用 JTAG/OpenOCD,外设问题用逻辑分析仪和示波器。

能把这些工具组合起来,嵌入式问题定位效率会明显提升。

其他文章
目录导航 置顶
  1. 1. 一、嵌入式调试的层次
  2. 2. 二、串口调试
  3. 3. 三、LED 状态灯
  4. 4. 四、gdbserver 调试应用
  5. 5. 五、JTAG/SWD
  6. 6. 六、OpenOCD
  7. 7. 七、逻辑分析仪
  8. 8. 八、示波器
  9. 9. 九、排错顺序
  10. 10. 十、总结
请输入关键词进行搜索