新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 調(diào)試嵌入式處理器的幾種常用方法

調(diào)試嵌入式處理器的幾種常用方法

作者:(英國ARM公司供稿) 時間:2004-07-22 來源: 收藏
調(diào)試嵌入式處理器的幾種常用方法

前言
在任何產(chǎn)品設(shè)計過程中,設(shè)計人員通常要將相當(dāng)長的一部分時間,用于系統(tǒng)的集成性和軟硬件調(diào)試。在引擎管理、硬盤控制和調(diào)制解調(diào)器之類的實時系統(tǒng)中尤其如此。
嵌入式系統(tǒng)中,由于微處理器嵌于ASIC或用戶芯片的內(nèi)部,系統(tǒng)調(diào)試變得更加困難,因為通常對處理器總線和信號的接入都是有限制的。在多處理器系統(tǒng)中(如硬盤驅(qū)動器、尋呼機(jī)、手機(jī)中常見的控制器-DSP體系結(jié)構(gòu))更是如此。
本文簡要回顧了幾種調(diào)試處理器系統(tǒng)的常見方法,并介紹了ARM公司新開發(fā)的調(diào)試方法,即通過使用電路內(nèi)仿真器(In Circuit Emulators)、監(jiān)控程序(Monitor Programs) 和邏輯分析儀(Logic Analysers)解決存在的問題。

電路內(nèi)仿真器(In Circuit Emulators,即 ICE)
ICE由實時探測、實時追蹤和記憶仿真組成,所有這些集成在一個統(tǒng)一的用戶界面上。這能為軟件工程師提供一個硬件保護(hù)層。此外,ICE不需要周圍系統(tǒng)全部正常工作后才能調(diào)試,因而在軟件開發(fā)和硬件開發(fā)之間提供了一定程度上的平衡,有利于縮短產(chǎn)品上市時間。

標(biāo)準(zhǔn)ICE存在的問題
●  ICE的眾多接點會影響目標(biāo)系統(tǒng)的正常時序,從而降低其最快速度;
●  ICE的存在使得處理器的更換牽涉到非常復(fù)雜的接點,更換處理器同時會改變原來的電氣特性,這樣就意味著有可能產(chǎn)生很多不可預(yù)知的問題; 
●  ICE的發(fā)布要落后于處理器,通常在一個新的處理器出臺后的6-9個月的時間才會有與其配合的ICE;
●  一個深度嵌入的CPU需要很多的引腳才能將內(nèi)部信號傳遞到ICE;
●  考慮到ICE所需要的資源,有些處理器的用戶變量可能不被ICE所支持;
●  ICE的成本可能十分昂貴。

調(diào)試監(jiān)控程序(Debug Monitors)
在目標(biāo)系統(tǒng)中安裝調(diào)試監(jiān)控程序是ICE外的另一個選擇,它能為用戶提供測試和調(diào)試軟件所需的許多功能,例如設(shè)定斷點、從目標(biāo)存儲器中上載數(shù)據(jù)以及下載應(yīng)用程序等。
這種方法的優(yōu)勢在于開發(fā)的軟件可以在同一個處理器上運行,并且能將硬件與最終系統(tǒng)進(jìn)行整合。而且Debug Monitor價格低廉,能幫助節(jié)約系統(tǒng)開發(fā)成本。另一方面,目標(biāo)系統(tǒng)的ROM中必須存有一個監(jiān)控程序,這是一個很大的問題,因為它必須從最終產(chǎn)品中撤除,否則就會增加額外的開銷。
另外,運行調(diào)試程序的主機(jī)和目標(biāo)之間還需要一個通信通道。通常目標(biāo)系統(tǒng)使用UART來實現(xiàn)。UART的驅(qū)動程序應(yīng)在監(jiān)控程序之前完成與目標(biāo)系統(tǒng)結(jié)合的移植工作。
監(jiān)控程序的代碼也必須根據(jù)具體的目標(biāo)系統(tǒng)進(jìn)行移植,這意味著在系統(tǒng)硬件中,應(yīng)保證主要的部分在監(jiān)控程序啟動之前能夠正常工作。

邏輯分析儀
邏輯分析儀的調(diào)試功能并不十分完備,因而常常作為以上兩種調(diào)試方法的有效補(bǔ)充使用。這是由于邏輯分析儀只能提供一個代碼執(zhí)行過程的回顧。用戶無法改變變量或跳轉(zhuǎn)至程序的其他位置,所以,在沒有重新編譯的情況下, “假設(shè)分析”測試無法進(jìn)行。除此之外,許多邏輯分析儀只配置了一個定容量的存儲器,因此每次運行的追蹤量是受到限制的。

ARM的嵌入式ICE(EmbeddedICE)解決方案
ARM在支持這些傳統(tǒng)調(diào)試工具的基礎(chǔ)上,開發(fā)了全新的調(diào)試方案,希望解決傳統(tǒng)工具無力解決的問題。為了簡化調(diào)試過程,這種新的解決方案并沒有限定于某一硬件或軟件開發(fā),而是一種面向系統(tǒng)調(diào)試的整體性方案。
EmbeddedICE結(jié)構(gòu)體系包括:
●  一個與EmbeddedICE兼容的ARM核(如:ARM7DI),帶有邊界掃描接口和調(diào)試功能增強(qiáng);
●  一個外部EmbeddedICE接口盒,連接開發(fā)主機(jī)和ARM內(nèi)核;
●  ARM SDT2.01主機(jī)軟件開發(fā)和調(diào)試工具。
EmbeddedICE是一個面向ARM微處理器的JTAG的調(diào)試通道。它為ARM 的Windows工具包和嵌于ASIC中的ARM微處理器提供一個接口。
EmbeddedICE具有諸多ICE功能,例如實時尋址、斷點、單步、對ARM CPU的完全控制、對ASIC系統(tǒng)其余部分的訪問,以及對主機(jī)顯示器外設(shè)的訪問、鍵盤輸入和磁盤存儲。后三者保證了開發(fā)人員能夠從目標(biāo)向主機(jī)發(fā)送調(diào)試信息,并顯示在主機(jī)屏幕上。
ARM EmbeddedICE解決方案的優(yōu)勢在于:
●  無需ICE 接點或串行接口等目標(biāo)資源或特殊硬件。在目標(biāo)系統(tǒng)中無需專門用于調(diào)試的RAM、ROM和特殊軟件(因此,目標(biāo)系統(tǒng)中的軟件不必修改,可直接與ARM EmbeddedICE體系兼容);
●  邊界掃描引腳可復(fù)用,不用增加引腳數(shù)量;
●  成本低廉,不需要專門的ICE芯片;
●  可以在系統(tǒng)最高速度下進(jìn)行調(diào)試;
●  完全的主機(jī)系統(tǒng)訪問,包括屏幕、鍵盤、目標(biāo)存儲等;
●  無需移動處理器 。這解決了許多問題,例如昂貴的接點、性能不穩(wěn)定和電路電氣特性的改變等等;
●  調(diào)試無需另外的通信通道;
●  與任何嵌入式ARM系統(tǒng)兼容;
●  支持多處理器的調(diào)試。
如圖1所示,一個與EmbeddedICE兼容的ARM7DI宏單元包括一個ARM7內(nèi)核、少量的內(nèi)核調(diào)試邏輯、一個JTAG測試端口( TAP)控制器和EmbeddedICE宏單元。
EmbeddedICE宏單元包括斷點寄存器,后者能夠比較地址、數(shù)據(jù)和控制總線同寄存器內(nèi)的設(shè)置值。若兩者匹配,會產(chǎn)生一個斷點信號,該信號將被傳送到處理器。舉個例子來說,當(dāng)一個特定地址的指令或一個特定的數(shù)據(jù)值被加載入指定的位置,宏單元就會產(chǎn)生一個斷點。
如果在一條指令上設(shè)置了斷點,當(dāng)指令到達(dá)流水線的執(zhí)行級時,指令的執(zhí)行將被中斷,處理器進(jìn)入調(diào)試狀態(tài)。然后,處理器和存儲系統(tǒng)通過TAP控制器由JTAG進(jìn)行狀態(tài)檢測。
一旦處理器進(jìn)入調(diào)試狀態(tài),它就會停止從數(shù)據(jù)總線讀取指令,并且與存儲系統(tǒng)隔離。EmbeddedICE此時就可以通過掃描鏈1將指令讀入流水線、驅(qū)動處理器。寄存器和存儲內(nèi)容在調(diào)試狀態(tài)下仍可以進(jìn)行訪問。這個過程是可逆的,用戶可以在調(diào)試器下把代碼下載進(jìn)存儲器,避免了燒寫EPROM的不便。

EmbeddedICE在多處理器debug中的使用
EmbeddedICE宏單元提供的調(diào)試特征使ARM處理器能夠在多處理器環(huán)境下進(jìn)行調(diào)試。當(dāng)ARM處理器遇到一個斷點時,它的執(zhí)行就被中斷,控制權(quán)通過JTAG接口交由調(diào)試器。此時,ARM處理器向存儲系統(tǒng)發(fā)出一個“調(diào)試確認(rèn)”(Debug Acknowledge)信號,告知后者處理器處于調(diào)試狀態(tài)。同時,它不再向存儲器發(fā)出訪問請求,保證了其它處理器或者DMA通道繼續(xù)工作、繼續(xù)與存儲系統(tǒng)通信。在調(diào)試過程的最后,ARM處理器會發(fā)出一個“存儲請求”(memory request)信號,系統(tǒng)控制器將根據(jù)此信號對存儲系統(tǒng)作出仲裁。

EmbeddedICE 接口盒
EmbeddedICE 接口盒在ARM軟件工具包的調(diào)試器協(xié)議和JTAG協(xié)議之間執(zhí)行協(xié)議轉(zhuǎn)換?!霸谶@個地址上設(shè)立一個watchpoint”之類的要求被轉(zhuǎn)換成JTAG TAP控制器狀態(tài)轉(zhuǎn)變序列、指令和數(shù)據(jù)序列。
協(xié)議轉(zhuǎn)換器可以根據(jù)不同的目標(biāo)系統(tǒng)進(jìn)行配置,例如,對含有不同掃描鏈布局的ARM7DI,也可以進(jìn)行配置。
EmbeddedICE宏單元同時支持通信通道。通信通道在目標(biāo)系統(tǒng)上提供了一個類UART的串行端口。它與處理器緊密相連,且不需要額外的引腳,因為它復(fù)用了JTAG口的引腳。這種方法需要在目標(biāo)系統(tǒng)上安裝軟件而不需要UART。

程序開發(fā)過程
程序是在運行ARM WindowsTools 2.0的PC主機(jī)開發(fā)的。這個工具包含有編碼所需的C語言編譯器、匯編程序和連接器。
微軟Windows平臺下的窗口調(diào)試器以及Unix和DOS下的命令行調(diào)試器一起提供了調(diào)試支持。這些工具能提供完全C源代碼或匯編語言級的調(diào)試。ARM的調(diào)試器既可以在指令精確模擬器(ARMulator)又可以在目標(biāo)硬件上進(jìn)行代碼調(diào)試。軟件模擬與真實芯片之間的轉(zhuǎn)換只需在對話框中的輕輕一點即可。軟件工具界面繼續(xù)保持不變,用戶可以無阻礙地在各目標(biāo)之間切換。
ARMulator經(jīng)過配置,可以為存儲器分段指定不同的速度來仿真目標(biāo)硬件。設(shè)計人員可以通過使用C 的建模工具,來對存儲器配置中三個最重要的因素:速度、空間和功耗進(jìn)行優(yōu)化。
ARMsd是一個符號調(diào)試器,用戶可以用它設(shè)置斷點(指令讀取階段)和觀察點(數(shù)據(jù)加載和存儲階段)、檢測和修改處理器及存儲器的狀態(tài)。無論調(diào)試對象是芯片還是ARMulator,這個過程都能獨立完成
目標(biāo)程序中的semihosting也能夠被支持。這意味著包含ANSI C 庫函數(shù)的程序可以直接移植到目標(biāo),無法被目標(biāo)支持的請求將被主機(jī)中途截取。例如:C 庫函數(shù)發(fā)出將狀態(tài)信息顯示在屏幕的請求被中途截取,這些信息將顯示在主機(jī)的屏幕上。

結(jié)語
調(diào)試工具多種多樣,它們各自具有不同的功能和價格。這些工具對于系統(tǒng)設(shè)計者來說,仍是一筆寶貴的資源,但是,隨著系統(tǒng)的日漸復(fù)雜化和集成化,人們需要與之相適應(yīng)的新的開發(fā)環(huán)境。
在系統(tǒng)設(shè)計中,處理器內(nèi)核常常是嵌入在ASIC設(shè)計中的,傳統(tǒng)的調(diào)試方法已不再適用。嵌入式調(diào)試體系(例如:ARM調(diào)試體系)成為了把握當(dāng)今復(fù)雜系統(tǒng)市場的關(guān)鍵。
要保證產(chǎn)品在最短的時間內(nèi)完成開發(fā),一個完整的測試和調(diào)試環(huán)境是必需的,其中包括初始產(chǎn)品測試、系統(tǒng)設(shè)計仿真、最終產(chǎn)品測試等一系列調(diào)試工具?!?(英國ARM公司供稿)

存儲器相關(guān)文章:存儲器原理




關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉