BLOG

Record, summarize, and improve.

调试器

OpenOCD(Open On-Chip Debugger)开源片上调试器,是一款开源软件,最初是由Dominic Rath同学还在大学期间发起的(2005年)项目。OpenOCD旨在提供针对嵌入式设备的调试、系统编程和边界扫描功能。

OpenOCD的功能是在仿真器的辅助下完成的,仿真器是能够提供调试目标的电信号的小型硬件单元。仿真器是必须的,因为调试主机(运行OpenOCD的主机)通常不具备这种电信号的直接解析功能,仿真器支持一个或多个传输协议,每个协议涉及不同的电信号,且使用不同的协议栈进行消息传递。市面上有很多种仿真器,并且这些仿真器的命名没有统一的规律。

仿真器有时候会被封装成独立的加密狗,这种称为硬件接口加密狗。一些开发板上面直接集成了硬件接口加密狗,这样可以使开发板通过USB直接连到主机上进行调试。

例如,JTAG仿真器支持JTAG协议的信号,可以用来进行TAPs和目标板子之间符合JTAG协议(IEEE 1149.1)的通讯。TAP(Test Access Port)是处理特殊指令和数据的单元。TAPs在芯片与板子之间和之内以菊花链的形式进行连接。JTAG支持调试和边界扫描。

还有SWD仿真器,这种仿真器支持使用SWD(Serial Wire Debug)信号与一些比较新的ARM芯片进行通讯,而且还可以作为那些同时支持JTAG和SWD的芯片的仿真器。不过SWD仅支持调试,不支持边检扫描。