新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 應(yīng)對(duì)高級(jí)嵌入式處理器系統(tǒng)調(diào)試挑戰(zhàn)

應(yīng)對(duì)高級(jí)嵌入式處理器系統(tǒng)調(diào)試挑戰(zhàn)

作者: 時(shí)間:2010-08-18 來源:網(wǎng)絡(luò) 收藏

  FPGA最大的優(yōu)點(diǎn)在于其靈活性,可激發(fā)設(shè)計(jì)人員創(chuàng)造出無數(shù)不同的設(shè)計(jì)。然而,設(shè)計(jì)通常最后才加以考慮――如果還加以考慮的話,因此器通常要適應(yīng)的要求。

  好消息是一家在領(lǐng)域耕耘近30年的公司推出了一款器,它對(duì)于解決所有您能想象得到的問題,甚至包括那些您都不愿意去聽到的問題具有豐富的經(jīng)驗(yàn)。在本文中,我們將通過一些例子說明Lauterbach公司的TRACE32調(diào)試器所具有的功能,這些功能將節(jié)省您的時(shí)間,甚至保全您的項(xiàng)目。

面向靈活平臺(tái)的靈活調(diào)試

  談到靈活設(shè)計(jì),我們想到了客戶推出的一套十分有趣的。該在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)。在此面臨的在于如何在調(diào)試器無法讀寫的存儲(chǔ)器區(qū)域進(jìn)行調(diào)試,因?yàn)樵诖鎯?chǔ)器區(qū)域MicroBlaze處理器本身無法進(jìn)行加載/存儲(chǔ)操作。
  我們利用TRACE32的內(nèi)部“虛擬存儲(chǔ)器”來解決這個(gè)問題,這個(gè)調(diào)試器內(nèi)部的仿真存儲(chǔ)器具有無限的地址空間(64位),可以按照需要分配存儲(chǔ)容量。我們將目標(biāo)程序加載到這個(gè)虛擬存儲(chǔ)器中,并且通過配置調(diào)試器的內(nèi)部地址轉(zhuǎn)換機(jī)制將無法讀取的目標(biāo)存儲(chǔ)器映射到虛擬存儲(chǔ)器上。這使得甚至可在匯編級(jí)上進(jìn)行程序診斷。

  但是這里面臨著另外一個(gè):為了實(shí)現(xiàn)程序的按步執(zhí)行,特別是語言行以及條件分支,人們通常使用軟件斷點(diǎn)。由于無法通過MicroBlaze處理器訪問Block RAM,顯然無法做到這一點(diǎn)。我們的解決方案是提供“map.break”指令,強(qiáng)制調(diào)試器在給定的地址范圍內(nèi)使用硬件斷點(diǎn)。映射指令還可使您指定存儲(chǔ)器的數(shù)據(jù)寬度,更改大小頭特性,或者完全禁止調(diào)試器訪問某些具有關(guān)鍵外設(shè)寄存器的地址范圍。

小而有用的功能

  Lauterbach在JTAG調(diào)試器和仿真器方面的經(jīng)驗(yàn)充分體現(xiàn)在TRACE32調(diào)試器的功能以及其他諸多微小和意想不到的細(xì)節(jié)中。考慮到Lauterbach完全利用自身工具開發(fā)所有軟件,這一點(diǎn)并不奇怪。而日常出現(xiàn)的問題通常會(huì)激發(fā)人們設(shè)計(jì)出最有用的功能。

  您是否曾經(jīng)需要在調(diào)試階段關(guān)掉煩人的計(jì)時(shí)器中斷處理器,或者在無需重啟的情況下改變條件分支?是否曾經(jīng)需要修補(bǔ)循環(huán)以觀察處理器核是否正確執(zhí)行外部存儲(chǔ)器給出的指令?內(nèi)置的匯編器正可實(shí)現(xiàn)這些功能。

  另一個(gè)調(diào)試中常見的情況是:是否經(jīng)常在某個(gè)程序行走得太遠(yuǎn)而不得不重新開始?寄存器恢復(fù)功能可以取消最后的操作。

  TRACE32通過不間斷地每秒10次的存儲(chǔ)器重讀來顯示存儲(chǔ)器的內(nèi)容,甚至在處理器停止的時(shí)候也不停止重讀。為什么它要這么做呢?可能在一秒鐘內(nèi),您的系統(tǒng)中不間斷運(yùn)行的MicroBlaze處理器就造成了數(shù)據(jù)破壞,所以您希望能夠監(jiān)測這一點(diǎn)。也可能在某些時(shí)候不穩(wěn)定的存儲(chǔ)器造成了屏幕閃爍。又或者是您的JTAG接口在20MHz時(shí)并不那么穩(wěn)定。這些都是您期望知道的。另一方面,TRACE32確保它只會(huì)在需要的時(shí)候訪問存儲(chǔ)器。

  談及外設(shè),我們還應(yīng)該提到外設(shè)寄存器文件。這些文件指定了存儲(chǔ)器映射的寄存器的位置、寬度,甚至按位編碼,并且將它們分組成寄存器樹。這樣,可以很容易地訪問外設(shè)寄存器以進(jìn)行檢查及修改:您點(diǎn)擊一下即可關(guān)掉DMA控制器,而無需仔細(xì)閱讀目標(biāo)手冊以找到正確位。調(diào)試器給出了標(biāo)準(zhǔn)外設(shè)的規(guī)格說明,但是您可以使用簡單的文本編輯器修改這些文件以滿足您的要求。對(duì)于Xilinx工具鏈,插件選項(xiàng)可以生成這些文件,并將其作為Xilinx構(gòu)建過程的一部分。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁 1 2 3 下一頁

評(píng)論


相關(guān)推薦

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

關(guān)閉