嵌入式系统交叉调试方法一般分为两种,一种是基于JTAG的片上调试方法,一种是基于调试代理的远程调试方法。 JTAG是一种国际标准芯片测试协议,目前大多数CPU体系都支持JTAG。基于JTAG的片上调试方法最突出的代表就是JLink调试器,其定义了一个软件调试层面的RDI接口标准,然后JLink调试器将调试环境软件(IAR、KEIL等)发出的RDI接口转化为JTAG命令,对芯片进行调试。该方法多适用于嵌入式系统底层驱动调试、裸系统调试和单应用调试。 file:///C:\Users\郭晓娟\AppData\Local\Temp\ksohtml\wpsDF4.tmp.png 基于调试代理的远程调试方法是在目标机上运行一个调试代理程序,与宿主机的调试器进行通信交互,一起配合完成调试的任务。该方法主要使用软件陷入来模拟断点以接管CPU来完成调试。GDB远程调试是主要代表,其提供两种方式。一种是gdbserver,其能在目标机的系统上独立运行,用于调试有操作系统的应用程序;另一种是stub,其和嵌入式系统程序一起链接运行,一般用于调试系统程序。Gdbserver比较容易,但需要操作系统支持;stub调试比较难,需要针对具体的芯片体系进行移植。两者的工作原理是相似的。GDB调试基于串口协议或者TCP/IP协议。由于调试代理、串口驱动或者TCP/IP驱动需要占用大量的内存空间,因此该方法一般用于内存资源比较丰富的嵌入式系统的调试。
|