嵌入式系統(tǒng)基礎(chǔ)之:嵌入式軟件開發(fā)流程
(2)硬件調(diào)試。
相對于軟件調(diào)試而言,使用硬件調(diào)試器可以獲得更強大的調(diào)試功能和更優(yōu)秀的調(diào)試性能。硬件調(diào)試器的基本原理是通過仿真硬件的執(zhí)行過程,讓開發(fā)者在調(diào)試時可以隨時了解到系統(tǒng)的當前執(zhí)行情況。目前嵌入式系統(tǒng)開發(fā)中最常用到的硬件調(diào)試器是ROMMonitor、ROMEmulator、In-CircuitEmulator和In-CircuitDebugger。
n 采用ROMMonitor方式進行交叉調(diào)試需要在宿主機上運行調(diào)試器,在宿主機上運行ROM監(jiān)視器(ROMMonitor)和被調(diào)試程序,宿主機通過調(diào)試器與目標機上的ROM監(jiān)視器遵循遠程調(diào)試協(xié)議建立通信連接。ROM監(jiān)視器可以是一段運行在目標機ROM上的可執(zhí)行程序,也可以是一個專門的硬件調(diào)試設(shè)備,它負責監(jiān)控目標機上被調(diào)試程序的運行情況,能夠與宿主機端的調(diào)試器一同完成對應(yīng)用程序的調(diào)試。
在使用這種調(diào)試方式時,被調(diào)試程序首先通過ROM監(jiān)視器下載到目標機,然后在ROM監(jiān)視器的監(jiān)控下完成調(diào)試。
優(yōu)點:ROM監(jiān)視器功能強大,能夠完成設(shè)置斷點、單步執(zhí)行、查看寄存器、修改內(nèi)存空間等各項調(diào)試功能。
確定:同軟件調(diào)試一樣,使用ROM監(jiān)視器目標機和宿主機必須建立通信連接。
其原理圖如圖4.20所示。
n 采用ROMEmulator方式進行交叉調(diào)試時需要使用ROM仿真器,并且它通常被插入到目標機上的ROM插槽中,專門用于仿真目標機上的ROM芯片。
在使用這種調(diào)試方式時,被調(diào)試程序首先下載到ROM仿真器中,因此等效于下載到目標機的ROM芯片上,然后在ROM仿真器中完成對目標程序的調(diào)試。
優(yōu)點:避免了每次修改程序后都必須重新燒寫到目標機的ROM中。
缺點:ROM仿真器本身比較昂貴,功能相對來講又比較單一,只適應(yīng)于某些特定場合。
其原理如圖4.21所示。
n 采用In-CircuitEmulator(ICE)方式進行交叉調(diào)試時需要使用在線仿真器,它是目前最為有效的嵌入式系統(tǒng)的調(diào)試手段。它是仿照目標機上的CPU而專門設(shè)計的硬件,可以完全仿真處理器芯片的行為。仿真器與目標板可以通過仿真頭連接,與宿主機可以通過串口、并口、網(wǎng)線或USB口等連接方式。由于仿真器自成體系,所以調(diào)試時既可以連接目標板,也可以不連接目標板。
在線仿真器提供了非常豐富的調(diào)試功能。在使用在線仿真器進行調(diào)試的過程中,可以按順序單步執(zhí)行,也可以倒退執(zhí)行,還可以實時查看所有需要的數(shù)據(jù),從而給調(diào)試過程帶來了很多的便利。嵌入式系統(tǒng)應(yīng)用的一個顯著特點是與現(xiàn)實世界中的硬件直接相關(guān),并存在各種異變和事先未知的變化,從而給微處理器的指令執(zhí)行帶來各種不確定因素,這種不確定性在目前情況下只有通過在線仿真器才有可能發(fā)現(xiàn)。
優(yōu)點:功能強大,軟硬件都可做到完全實時在線調(diào)試。
缺點:價格昂貴。
其原理如圖4.22所示。
n 采用In-CircuitDebugger(ICD)方式進
行交叉調(diào)試時需要使用在線調(diào)試器。由于ICE的價格非常昂貴,并且每種CPU都需要一種與之對應(yīng)的ICE,使得開發(fā)成本非常高。一個比較好的解決辦法是讓CPU直接在其內(nèi)部實現(xiàn)調(diào)試功能,并通過在開發(fā)板上引出的調(diào)試端口發(fā)送調(diào)試命令和接收調(diào)試信息,完成調(diào)試過程。如使用非常廣泛的ARM處理器的JTAG端口技術(shù)就是由此而誕生的。
JTAG是1985年指定的檢測PCB和IC芯片的一個標準。1990年被修改成為IEEE的一個標準,即IEEE1149.1。JTAG標準所采用的主要技術(shù)為邊界掃描技術(shù),它的基本思想就是在靠近芯片的輸入輸出管腳上增加一個移位寄存器單元。因為這些移位寄存器單元都分布在芯片的邊界上(周圍),所以被稱為邊界掃描寄存器(Boundary-ScanRegisterCell)。
當芯片處于調(diào)試狀態(tài)時候,這些邊界掃描寄存器可以將芯片和外圍的輸入輸出隔離開來。通過這些邊界掃描寄存器單元,可以實現(xiàn)對芯片輸入輸出信號的觀察和控制。對于芯片的輸入管腳,可通過與之相連的邊界掃描寄存器單元把信號(數(shù)據(jù))加載到該管腳中去;對于芯片的輸出管腳,可以通過與之相連的邊界掃描寄存器單元“捕獲”(CAPTURE)該管腳的輸出信號。這樣,邊界掃描寄存器提供了一個便捷的方式用于觀測和控制所需要調(diào)試的芯片。
現(xiàn)在較為高檔的微處理器都帶有JTAG接口,包括ARM7、ARM9、StrongARM、DSP等,通過JTAG接口可以方便地對目標系統(tǒng)進行測試,同時,還可以實現(xiàn)Flash編程,這是非常受歡迎的。
優(yōu)點:連接簡單,成本低。
缺點:特性受制于芯片廠商。
其原理如圖4.23所示。
評論