調試嵌入式處理器的幾種常用方法

前言
在任何產品設計過程中,設計人員通常要將相當長的一部分時間,用于系統的集成性和軟硬件調試。在引擎管理、硬盤控制和調制解調器之類的實時系統中尤其如此。
嵌入式系統中,由于微處理器嵌于ASIC或用戶芯片的內部,系統調試變得更加困難,因為通常對處理器總線和信號的接入都是有限制的。在多處理器系統中(如硬盤驅動器、尋呼機、手機中常見的控制器-DSP體系結構)更是如此。
本文簡要回顧了幾種調試處理器系統的常見方法,并介紹了ARM公司新開發的調試方法,即通過使用電路內仿真器(In Circuit Emulators)、監控程序(Monitor Programs) 和邏輯分析儀(Logic Analysers)解決存在的問題。
電路內仿真器(In Circuit Emulators,即 ICE)
ICE由實時探測、實時追蹤和記憶仿真組成,所有這些集成在一個統一的用戶界面上。這能為軟件工程師提供一個硬件保護層。此外,ICE不需要周圍系統全部正常工作后才能調試,因而在軟件開發和硬件開發之間提供了一定程度上的平衡,有利于縮短產品上市時間。
標準ICE存在的問題
● ICE的眾多接點會影響目標系統的正常時序,從而降低其最快速度;
● ICE的存在使得處理器的更換牽涉到非常復雜的接點,更換處理器同時會改變原來的電氣特性,這樣就意味著有可能產生很多不可預知的問題;
● ICE的發布要落后于處理器,通常在一個新的處理器出臺后的6-9個月的時間才會有與其配合的ICE;
● 一個深度嵌入的CPU需要很多的引腳才能將內部信號傳遞到ICE;
● 考慮到ICE所需要的資源,有些處理器的用戶變量可能不被ICE所支持;
● ICE的成本可能十分昂貴。
調試監控程序(Debug Monitors)
在目標系統中安裝調試監控程序是ICE外的另一個選擇,它能為用戶提供測試和調試軟件所需的許多功能,例如設定斷點、從目標存儲器中上載數據以及下載應用程序等。
這種方法的優勢在于開發的軟件可以在同一個處理器上運行,并且能將硬件與最終系統進行整合。而且Debug Monitor價格低廉,能幫助節約系統開發成本。另一方面,目標系統的ROM中必須存有一個監控程序,這是一個很大的問題,因為它必須從最終產品中撤除,否則就會增加額外的開銷。
另外,運行調試程序的主機和目標之間還需要一個通信通道。通常目標系統使用UART來實現。UART的驅動程序應在監控程序之前完成與目標系統結合的移植工作。
監控程序的代碼也必須根據具體的目標系統進行移植,這意味著在系統硬件中,應保證主要的部分在監控程序啟動之前能夠正常工作。
邏輯分析儀
邏輯分析儀的調試功能并不十分完備,因而常常作為以上兩種調試方法的有效補充使用。這是由于邏輯分析儀只能提供一個代碼執行過程的回顧。用戶無法改變變量或跳轉至程序的其他位置,所以,在沒有重新編譯的情況下, “假設分析”測試無法進行。除此之外,許多邏輯分析儀只配置了一個定容量的存儲器,因此每次運行的追蹤量是受到限制的。
ARM的嵌入式ICE(EmbeddedICE)解決方案
ARM在支持這些傳統調試工具的基礎上,開發了全新的調試方案,希望解決傳統工具無力解決的問題。為了簡化調試過程,這種新的解決方案并沒有限定于某一硬件或軟件開發,而是一種面向系統調試的整體性方案。
EmbeddedICE結構體系包括:
● 一個與EmbeddedICE兼容的ARM核(如:ARM7DI),帶有邊界掃描接口和調試功能增強;
● 一個外部EmbeddedICE接口盒,連接開發主機和ARM內核;
● ARM SDT2.01主機軟件開發和調試工具。
EmbeddedICE是一個面向ARM微處理器的JTAG的調試通道。它為ARM 的Windows工具包和嵌于ASIC中的ARM微處理器提供一個接口。
EmbeddedICE具有諸多ICE功能,例如實時尋址、斷點、單步、對ARM CPU的完全控制、對ASIC系統其余部分的訪問,以及對主機顯示器外設的訪問、鍵盤輸入和磁盤存儲。后三者保證了開發人員能夠從目標向主機發送調試信息,并顯示在主機屏幕上。
ARM EmbeddedICE解決方案的優勢在于:
● 無需ICE 接點或串行接口等目標資源或特殊硬件。在目標系統中無需專門用于調試的RAM、ROM和特殊軟件(因此,目標系統中的軟件不必修改,可直接與ARM EmbeddedICE體系兼容);
● 邊界掃描引腳可復用,不用增加引腳數量;
● 成本低廉,不需要專門的ICE芯片;
● 可以在系統最高速度下進行調試;
● 完全的主機系統訪問,包括屏幕、鍵盤、目標存儲等;
● 無需移動處理器 。這解決了許多問題,例如昂貴的接點、性能不穩定和電路電氣特性的改變等等;
● 調試無需另外的通信通道;
● 與任何嵌入式ARM系統兼容;
● 支持多處理器的調試。
如圖1所示,一個與EmbeddedICE兼容的ARM7DI宏單元包括一個ARM7內核、少量的內核調試邏輯、一個JTAG測試端口( TAP)控制器和EmbeddedICE宏單元。
EmbeddedICE宏單元包括斷點寄存器,后者能夠比較地址、數據和控制總線同寄存器內的設置值。若兩者匹配,會產生一個斷點信號,該信號將被傳送到處理器。舉個例子來說,當一個特定地址的指令或一個特定的數據值被加載入指定的位置,宏單元就會產生一個斷點。
如果在一條指令上設置了斷點,當指令到達流水線的執行級時,指令的執行將被中斷,處理器進入調試狀態。然后,處理器和存儲系統通過TAP控制器由JTAG進行狀態檢測。
一旦處理器進入調試狀態,它就會停止從數據總線讀取指令,并且與存儲系統隔離。EmbeddedICE此時就可以通過掃描鏈1將指令讀入流水線、驅動處理器。寄存器和存儲內容在調試狀態下仍可以進行訪問。這個過程是可逆的,用戶可以在調試器下把代碼下載進存儲器,避免了燒寫EPROM的不便。
EmbeddedICE在多處理器debug中的使用
EmbeddedICE宏單元提供的調試特征使ARM處理器能夠在多處理器環境下進行調試。當ARM處理器遇到一個斷點時,它的執行就被中斷,控制權通過JTAG接口交由調試器。此時,ARM處理器向存儲系統發出一個“調試確認”(Debug Acknowledge)信號,告知后者處理器處于調試狀態。同時,它不再向存儲器發出訪問請求,保證了其它處理器或者DMA通道繼續工作、繼續與存儲系統通信。在調試過程的最后,ARM處理器會發出一個“存儲請求”(memory request)信號,系統控制器將根據此信號對存儲系統作出仲裁。
EmbeddedICE 接口盒
EmbeddedICE 接口盒在ARM軟件工具包的調試器協議和JTAG協議之間執行協議轉換。“在這個地址上設立一個watchpoint”之類的要求被轉換成JTAG TAP控制器狀態轉變序列、指令和數據序列。
協議轉換器可以根據不同的目標系統進行配置,例如,對含有不同掃描鏈布局的ARM7DI,也可以進行配置。
EmbeddedICE宏單元同時支持通信通道。通信通道在目標系統上提供了一個類UART的串行端口。它與處理器緊密相連,且不需要額外的引腳,因為它復用了JTAG口的引腳。這種方法需要在目標系統上安裝軟件而不需要UART。
程序開發過程
程序是在運行ARM WindowsTools 2.0的PC主機開發的。這個工具包含有編碼所需的C語言編譯器、匯編程序和連接器。
微軟Windows平臺下的窗口調試器以及Unix和DOS下的命令行調試器一起提供了調試支持。這些工具能提供完全C源代碼或匯編語言級的調試。ARM的調試器既可以在指令精確模擬器(ARMulator)又可以在目標硬件上進行代碼調試。軟件模擬與真實芯片之間的轉換只需在對話框中的輕輕一點即可。軟件工具界面繼續保持不變,用戶可以無阻礙地在各目標之間切換。
ARMulator經過配置,可以為存儲器分段指定不同的速度來仿真目標硬件。設計人員可以通過使用C 的建模工具,來對存儲器配置中三個最重要的因素:速度、空間和功耗進行優化。
ARMsd是一個符號調試器,用戶可以用它設置斷點(指令讀取階段)和觀察點(數據加載和存儲階段)、檢測和修改處理器及存儲器的狀態。無論調試對象是芯片還是ARMulator,這個過程都能獨立完成
目標程序中的semihosting也能夠被支持。這意味著包含ANSI C 庫函數的程序可以直接移植到目標,無法被目標支持的請求將被主機中途截取。例如:C 庫函數發出將狀態信息顯示在屏幕的請求被中途截取,這些信息將顯示在主機的屏幕上。
結語
調試工具多種多樣,它們各自具有不同的功能和價格。這些工具對于系統設計者來說,仍是一筆寶貴的資源,但是,隨著系統的日漸復雜化和集成化,人們需要與之相適應的新的開發環境。
在系統設計中,處理器內核常常是嵌入在ASIC設計中的,傳統的調試方法已不再適用。嵌入式調試體系(例如:ARM調試體系)成為了把握當今復雜系統市場的關鍵。
要保證產品在最短的時間內完成開發,一個完整的測試和調試環境是必需的,其中包括初始產品測試、系統設計仿真、最終產品測試等一系列調試工具。■ (英國ARM公司供稿)
存儲器相關文章:存儲器原理
評論