嵌入式系统调试的两种方式:
- Software Debugger
- gdbserver
- redboot
- Hardware Debugger
- jtag
- swd
- jlink
Software Debugger
gdb
运行于宿主机gdbserver
运行于目标机,核心依赖于ptrace
,是轻量级的GDB调试器,担任着调试代理的角色- 使用网口/串口连接通信
gdbserver
redboot
eCos redboot 包含有 GDB stub
,可当作 GDB Server
用
Hardware Debugger
gdb
运行于宿主机- 需要硬件仿真器
- 需要芯片支持
OpenOCD
OpenOCD(Open On-Chip Debugger)开源片上调试器,是一款开源软件。旨在提供针对嵌入式设备的调试、系统编程和边界扫描功能。是在仿真器的辅助下完成的,仿真器是能够提供调试目标的电信号的小型硬件单元。仿真器是必须的,因为宿主机通常不具备这种电信号的直接解析功能。
分为三部分,详见Introducing OpenOCD: Status of OpenOCD on AArch64:
- Development Hardware
- Debug Adapter
- Host Computer
Examples
- Linux
- 使用 JTAG 仿真器调试 Linux 内核
- 使用 gdbserver 调试 Linux 应用
- 同时使用
- JTAG调试内核和gdbserver冲突问题
- eCos
- 使用 JTAG 仿真器调试,带有硬件断点/watch
- 使用 RedBoot 调试
- OpenOCD
- JTAG ?
- SWD ?
- gdbserver ?