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