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