面向Xilinx嵌入式處理器的完整調(diào)試方案
FPGA最大的優(yōu)點(diǎn)在于其靈活性,可激發(fā)設(shè)計(jì)人員創(chuàng)造出無(wú)數(shù)不同的設(shè)計(jì)。然而,設(shè)計(jì)調(diào)試通常最后才加以考慮——如果還加以考慮的話,因此調(diào)試器通常要適應(yīng)系統(tǒng)的要求。
本文引用地址:http://www.ex-cimer.com/article/196663.htm好消息是一家在嵌入式領(lǐng)域耕耘近30年的公司推出了一款調(diào)試器,它對(duì)于解決所有您能想象得到的問(wèn)題,甚至包括那些您都不愿意去聽到的問(wèn)題具有豐富的經(jīng)驗(yàn)。在本文中,我們將通過(guò)一些例子說(shuō)明Lauterbach公司的TRACE32調(diào)試器所具有的功能,這些功能將節(jié)省您的時(shí)間,甚至保全您的項(xiàng)目。
面向靈活平臺(tái)的靈活調(diào)試
談到靈活設(shè)計(jì),我們想到了客戶推出的一套十分有趣的系統(tǒng)。該系統(tǒng)在VirtexTM-5 LX50T器件上集成兩個(gè)Xilinx®MicroBlazeTM處理器核和一個(gè)內(nèi)部block RAM存儲(chǔ)器塊。這種設(shè)計(jì)的特殊之處在于每個(gè)MicroBlaze處理器只有一個(gè)與block RAM模塊相連的I-side接口以實(shí)現(xiàn)指令提取。Block RAM的另一個(gè)存儲(chǔ)端口被連接到PCI Express接口上,以便在運(yùn)行時(shí)遠(yuǎn)程改變應(yīng)用代碼和啟動(dòng)處理器。在此面臨的挑戰(zhàn)在于如何在調(diào)試器無(wú)法讀寫的存儲(chǔ)器區(qū)域進(jìn)行調(diào)試,因?yàn)樵诖鎯?chǔ)器區(qū)域MicroBlaze處理器本身無(wú)法進(jìn)行加載/存儲(chǔ)操作。
我們利用TRACE32的內(nèi)部“虛擬存儲(chǔ)器”來(lái)解決這個(gè)問(wèn)題,這個(gè)調(diào)試器內(nèi)部的仿真存儲(chǔ)器具有無(wú)限的地址空間(64位),可以按照需要分配存儲(chǔ)容量。我們將目標(biāo)程序加載到這個(gè)虛擬存儲(chǔ)器中,并且通過(guò)配置調(diào)試器的內(nèi)部地址轉(zhuǎn)換機(jī)制將無(wú)法讀取的目標(biāo)存儲(chǔ)器映射到虛擬存儲(chǔ)器上。這使得甚至可在匯編級(jí)上進(jìn)行程序診斷。
但是這里面臨著另外一個(gè)挑戰(zhàn):為了實(shí)現(xiàn)程序的按步執(zhí)行,特別是高級(jí)語(yǔ)言行以及條件分支,人們通常使用軟件斷點(diǎn)。由于無(wú)法通過(guò)MicroBlaze處理器訪問(wèn)Block RAM,顯然無(wú)法做到這一點(diǎn)。我們的解決方案是提供“map.break”指令,強(qiáng)制調(diào)試器在給定的地址范圍內(nèi)使用硬件斷點(diǎn)。映射指令還可使您指定存儲(chǔ)器的數(shù)據(jù)寬度,更改大小頭特性,或者完全禁止調(diào)試器訪問(wèn)某些具有關(guān)鍵外設(shè)寄存器的地址范圍。
小而有用的功能
Lauterbach在JTAG調(diào)試器和仿真器方面的經(jīng)驗(yàn)充分體現(xiàn)在TRACE32調(diào)試器的功能以及其他諸多微小和意想不到的細(xì)節(jié)中??紤]到Lauterbach完全利用自身工具開發(fā)所有軟件,這一點(diǎn)并不奇怪。而日常出現(xiàn)的問(wèn)題通常會(huì)激發(fā)人們?cè)O(shè)計(jì)出最有用的功能。
您是否曾經(jīng)需要在調(diào)試階段關(guān)掉煩人的計(jì)時(shí)器中斷處理器,或者在無(wú)需重啟的情況下改變條件分支?是否曾經(jīng)需要修補(bǔ)循環(huán)以觀察處理器核是否正確執(zhí)行外部存儲(chǔ)器給出的指令?內(nèi)置的匯編器正可實(shí)現(xiàn)這些功能。
另一個(gè)調(diào)試中常見的情況是:是否經(jīng)常在某個(gè)程序行走得太遠(yuǎn)而不得不重新開始?寄存器恢復(fù)功能可以取消最后的操作。
TRACE32通過(guò)不間斷地每秒10次的存儲(chǔ)器重讀來(lái)顯示存儲(chǔ)器的內(nèi)容,甚至在處理器停止的時(shí)候也不停止重讀。為什么它要這么做呢?可能在一秒鐘內(nèi),您的系統(tǒng)中不間斷運(yùn)行的MicroBlaze處理器就造成了數(shù)據(jù)破壞,所以您希望能夠監(jiān)測(cè)這一點(diǎn)。也可能在某些時(shí)候不穩(wěn)定的存儲(chǔ)器造成了屏幕閃爍。又或者是您的JTAG接口在20MHz時(shí)并不那么穩(wěn)定。這些都是您期望知道的。另一方面,TRACE32確保它只會(huì)在需要的時(shí)候訪問(wèn)存儲(chǔ)器。
談及外設(shè),我們還應(yīng)該提到外設(shè)寄存器文件。這些文件指定了存儲(chǔ)器映射的寄存器的位置、寬度,甚至按位編碼,并且將它們分組成寄存器樹。這樣,可以很容易地訪問(wèn)外設(shè)寄存器以進(jìn)行檢查及修改:您點(diǎn)擊一下即可關(guān)掉DMA控制器,而無(wú)需仔細(xì)閱讀目標(biāo)手冊(cè)以找到正確位。調(diào)試器給出了標(biāo)準(zhǔn)外設(shè)的規(guī)格說(shuō)明,但是您可以使用簡(jiǎn)單的文本編輯器修改這些文件以滿足您的要求。對(duì)于Xilinx工具鏈,插件選項(xiàng)可以生成這些文件,并將其作為Xilinx構(gòu)建過(guò)程的一部分。
靈活I(lǐng)DE
TRACE32提供了功能強(qiáng)大的圖形用戶界面(GUI),并且其命令行的使用非常高效:屏幕下方就有調(diào)試器命令行,并且?guī)缀跛械腉UI功能都可以通過(guò)命令行—從而通過(guò)腳本實(shí)現(xiàn)。這使得可實(shí)現(xiàn)所有常規(guī)任務(wù)的自動(dòng)化,包括目標(biāo)配置,窗口布局,以及將它們分配在多個(gè)虛擬屏幕中。最好的是,不像許多IDE一樣,這些窗口沒有docking特性,但也可以任意放置以及更改這些窗口的尺寸,甚至重疊。同時(shí)還可與不同的IDE聯(lián)用,例如您可以從您的Eclipse環(huán)境中直接調(diào)用TRACE32。
圖1 連接到Xilinx ML507電路板的Lauterbach TRACE32調(diào)試和跟蹤電纜
連接多核目標(biāo)
另一個(gè)有趣的功能是Lauterbach調(diào)試多核目標(biāo)的直觀方式。比如為每個(gè)核提供GUI,并且使它們共用一根調(diào)試電纜。這對(duì)于包含了PowerPC和MicroBlaze內(nèi)核的異構(gòu)系統(tǒng)或采用TRACE32所支持的50-plus處理器架構(gòu)的其他系統(tǒng)而言同樣有效(圖1)。
TRACE32與Xilinx平臺(tái)電纜所使用的同一JTAG連接器連接,并且適用于任何由Xilinx嵌入式開發(fā)套件(EDK)創(chuàng)建的設(shè)計(jì)。對(duì)于PowerPC而言,也支持使用專用的調(diào)試連接器。
對(duì)于多核系統(tǒng),內(nèi)核的同步啟動(dòng)和關(guān)斷是一個(gè)問(wèn)題。要想在硬件中支持這一點(diǎn),例如在多MicroBlaze處理器配置中,調(diào)試器應(yīng)利用硬件功能實(shí)現(xiàn)周期精確同步,否則同步是在軟件中完成。集成腳本語(yǔ)言了解多核情況,從而允許通過(guò)一個(gè)主腳本完成所有GUI控制,包括將調(diào)試器連接到相應(yīng)的內(nèi)核并進(jìn)行復(fù)位,以及下載并啟動(dòng)應(yīng)用程序。
實(shí)時(shí)程序流和數(shù)據(jù)跟蹤
實(shí)時(shí)跟蹤的主要功能是記錄程序流,即處理器所執(zhí)行的每一條指令以及數(shù)據(jù)的處理。對(duì)于MicroBlaze處理器,這是通過(guò)Xilinx Platform Studio中的XilinxMicroBlaze跟蹤內(nèi)核(XMTC)來(lái)實(shí)現(xiàn)的。XMTC集成了一個(gè)跟蹤編碼器,其中包含一個(gè)連接到MicroBlaze處理器跟蹤端口(包含近200個(gè)未編碼信號(hào))的輸入接口。
圖2 顯示跟蹤、代碼覆蓋和函數(shù)調(diào)用圖等窗口的Lauterbach TRACE32 IDE
圖3A 面向XilinxSpartan-3E FPGA電路板的Lauterbach Mictor MicroBlaze跟蹤適配器
圖3B 面向XilinxMLx電路板的Lauterbach Mictor MicroBlaze跟蹤適配器
它還包含一個(gè)提供21信號(hào)編碼跟蹤的輸出接口。
跟蹤硬件提供了多達(dá)512MB的外部高速跟蹤存儲(chǔ)器,可用于替換稀有的片上存儲(chǔ)資源存儲(chǔ)跟蹤信息。跟蹤功能也可支持PowerPC架構(gòu)。此外,還具有更多的高級(jí)功能,包括靜態(tài)函數(shù)和任務(wù)運(yùn)行時(shí)間分析、變量訪問(wèn)、代碼覆蓋率分析等(圖2,圖3A和3B)。
操作系統(tǒng)支持
在MicroBlaze處理器上,TRACE32為μClinux和Linux提供了一個(gè)所謂的內(nèi)核敏感模塊。對(duì)于PowerPC而言,可支持更多的操作系統(tǒng),包括QNX,VxWorks以及Nucleus PLUS。這些擴(kuò)展功能使得調(diào)試器可以知道目標(biāo)中的內(nèi)核相關(guān)數(shù)據(jù)結(jié)構(gòu)。這使得可以利用進(jìn)程指定斷點(diǎn)和程序控制實(shí)現(xiàn)進(jìn)程級(jí)調(diào)試。其他功能包括支持完整的MMU,諸如加載的內(nèi)核模塊或者掛載的文件系統(tǒng)等Linux系統(tǒng)資源的實(shí)時(shí)、非侵入式顯示,任務(wù)運(yùn)行時(shí)間的統(tǒng)計(jì)評(píng)估和圖形顯示,以及函數(shù)運(yùn)行時(shí)間的任務(wù)相關(guān)評(píng)估。
總結(jié)
Lauterbach TRACE32為所有Xilinx器件系列上的PowerPC和MicroBlaze處理器提供了完整的調(diào)試解決方案。未來(lái)Xilinx相關(guān)增強(qiáng)功能將進(jìn)一步增強(qiáng)調(diào)試電纜,使得XilinxChipScopeTM分析儀可以使用調(diào)試電纜與調(diào)試器共同實(shí)現(xiàn)目標(biāo)訪問(wèn),并且通過(guò)調(diào)試器下載FPGA配置位流。
評(píng)論