ARM体系中调试系统概述
扫描二维码
随时随地手机看文章
在嵌入式系统中,通常将运行目标程序的计算机系统称为目标机。由于目标系统中常常没有进行输入/输出处理的必要的人机接口,因此就需要在另一台计算机上运行调试程序,这个运行调试程序的计算机通常是一台PC,称为宿主机(或调试机、主机)。在主机和目标机之间需要一定的信道迸行通信。这样一个调试系统应该包括3部分,即主机、目标机、目标机和主机之间的通信信道。
如图所示为ARM体系中调试系统的结构。图中各部分的含义将在下面介绍。
图 ARM体系中调试系统的结构
在主机上运行的调试程序用于接收用户的命令,把用户命令通过主机和目标机之间的通信信道发送到目标机,接收从目标机返回的数据并按照用户制定的格式进行显示。调试代理(debugagent)通常运行在目标机(ARMulator除外,它运行于主机上)上,它接收主机上调试器发来的命令,可以在目标程序中设置断点,单步执行目标程序,显示程序断点处的运行状态(寄存器和内存值)。在ARM体系中,调试代理可以有下面4种方式。
(1)ARMulator是一种比较特殊的调试代理。它与其他的调试代理运行在目标机上有所不同,它是一个指令级的仿真程序,运行在主机上。使用ARMulator,不需要硬件目标系统,就可以运行于特定ARM处理器上的应用程序。由于ARMulator可以报告各指令执行时的周期,它还可以用来进行应用程序的性能分析。
(2)基于JTAG的ICE类型的调试代理。ARM公司的Multi-ICE及EmbeddedICE属于这种类型的调试代理。这类调试代理利用ARM处理器中的JTAG接口及一个嵌入的调试单元可以和主机上的调试器进行通信,完成下面的工作。
·实时地设置基于指令地址值或基于数据值的断点。
·控制程序单步执行。
·访问并且可以控制ARM处理器内核。
·访问ASIC系统。
·访问系统中存储器。
·访问I/O系统。
(3)Angel调试监控程序。它是一组运行在目标机上的程序,可以接收主机上调试器发送的命令,执行诸如设置断点、单步执行目标程序、观察或修改寄存器`存储器内容之类的操作。与基于JTAG的调试代理不同,Angel调试监控程序需要占用一定的系统资源,如内存、串行端口等。使用Angel调试监控程序可以调试在目标系统运行的ARM程序或Thumb程序。
(4)调试网关。通过调试网关,主机上的调试器可以使用Agilent公司的仿真模块开发基于ARM的应用系统。在主机和目标机之间需要一定的通信信道,通常使用的是串行端口、并行端口或以太网卡。在主机和目标机之间进行数据通信时使用了一定的协议,这样主机上的调试器就可以使用一个统一的接口与不同的调试代理进行通信。在早期使用的是一个称为RDP(Remote Debug Protocol)的协议,它是一个基于字节流的简单协议,没有纠错功能。后来广泛使用的是称为ADP(Angel Debug Protocol)的协议,它是一个基于数据包的通信协议,具有纠错功能。
ks99