ARM體系中調試系統概述
如圖所示為ARM體系中調試系統的結構。圖中各部分的含義將在下面介紹。
在主機上運行的調試程序用于接收用戶(hù)的命令,把用戶(hù)命令通過(guò)主機和目標機之間的通信信道發(fā)送到目標機,接收從目標機返回的數據并按照用戶(hù)制定的格式進(jìn)行顯示。調試代理(debugagent)通常運行在目標機(ARMulator除外,它運行于主機上)上,它接收主機上調試器發(fā)來(lái)的命令,可以在目標程序中設置斷點(diǎn),單步執行目標程序,顯示程序斷點(diǎn)處的運行狀態(tài)(寄存器和內存值)。在ARM體系中,調試代理可以有下面4種方式。
?。?)ARMulator是一種比較特殊的調試代理。它與其他的調試代理運行在目標機上有所不同,它是一個(gè)指令級的仿真程序,運行在主機上。使用ARMulator,不需要硬件目標系統,就可以運行于特定ARM處理器上的應用程序。由于A(yíng)RMulator可以報告各指令執行時(shí)的周期,它還可以用來(lái)進(jìn)行應用程序的性能分析。
?。?)基于JTAG的ICE類(lèi)型的調試代理。ARM公司的Multi-ICE及EmbeddedICE屬于這種類(lèi)型的調試代理。這類(lèi)調試代理利用ARM處理器中的JTAG接口及一個(gè)嵌入的調試單元可以和主機上的調試器進(jìn)行通信,完成下面的工作。
·實(shí)時(shí)地設置基于指令地址值或基于數據值的斷點(diǎn)。
·控制程序單步執行。
·訪(fǎng)問(wèn)并且可以控制ARM處理器內核。
·訪(fǎng)問(wèn)ASIC系統。
·訪(fǎng)問(wèn)系統中存儲器。
·訪(fǎng)問(wèn)I/O系統。
?。?)Angel調試監控程序。它是一組運行在目標機上的程序,可以接收主機上調試器發(fā)送的命令,執行諸如設置斷點(diǎn)、單步執行目標程序、觀(guān)察或修改寄存器`存儲器內容之類(lèi)的操作。與基于JTAG的調試代理不同,Angel調試監控程序需要占用一定的系統資源,如內存、串行端口等。使用Angel調試監控程序可以調試在目標系統運行的ARM程序或Thumb程序。
?。?)調試網(wǎng)關(guān)。通過(guò)調試網(wǎng)關(guān),主機上的調試器可以使用Agilent公司的仿真模塊開(kāi)發(fā)基于A(yíng)RM的應用系統。在主機和目標機之間需要一定的通信信道,通常使用的是串行端口、并行端口或以太網(wǎng)卡。在主機和目標機之間進(jìn)行數據通信時(shí)使用了一定的協(xié)議,這樣主機上的調試器就可以使用一個(gè)統一的接口與不同的調試代理進(jìn)行通信。在早期使用的是一個(gè)稱(chēng)為RDP(Remote Debug Protocol)的協(xié)議,它是一個(gè)基于字節流的簡(jiǎn)單協(xié)議,沒(méi)有糾錯功能。后來(lái)廣泛使用的是稱(chēng)為ADP(Angel Debug Protocol)的協(xié)議,它是一個(gè)基于數據包的通信協(xié)議,具有糾錯功能。
評論