提高FPGA嵌入式處理器的系統(tǒng)除錯率
目前,越來越多的FPGA設計開始采用嵌入式處理器,如PowerPC和賽靈思(Xilinx)的MicroBlaze處理器來完成控制任務,采用C語言等軟件語言描述這些控制任務,要比使用VHDL或Verilog等硬件語言描述更加容易。
當進行嵌入式系統(tǒng)設計時,絕大部份的設計時間可能花費在除錯階段,因此縮短發(fā)現(xiàn)問題并解決問題的時間非常重要。作為一款整合除錯器,Computex公司的F-Sight同時具備硬件和軟件除錯能力。一方面,它支持FPGA內(nèi)部嵌入式處理器的全方位軟件除錯。另一方面,它還支持監(jiān)視FPGA硬件訊號。本文將介紹如何利用F-Sight提高除錯效率。
啟動除錯器
Computex公司的除錯器非常適合用來實現(xiàn)FPGA內(nèi)部嵌入式處理器的除錯。對于MicroBlaze處理器來說,工程師可以利用MicroBlaze除錯模塊(MDM)控制處理器的執(zhí)行過程并進行除錯,也可以利用賽靈思公司的MicroBlaze追蹤核心(XMTC)以非侵入方式監(jiān)控處理器程序的執(zhí)行情況。
由于FPGA的接腳限制,減少輸出到接腳的訊號數(shù)量非常重要。XMTC提供了編碼指令和數(shù)據(jù)追蹤功能,所需要的接腳數(shù)量僅為非編碼訊號所需的10%。
為了使除錯器實現(xiàn)追蹤功能,只需要將MDM和XMTC核心分別連接到MicroBlaze處理器的除錯和追蹤接口,然后將編碼后的追蹤訊號引到FPGA接腳以便F-Sight收集數(shù)據(jù)。完成FPGA設計后,再將F-Sight除錯器連接到電路板的Mictor連接器。如果使用賽靈思不帶Mictor連接器的ML400系列、ML500系列或Sparta-3E/
圖1:F-Sight透過配接器連接到Spartan-3電路板。
使用處理器追蹤功能
處理器追蹤功能可以在不中斷處理器執(zhí)行的情況下監(jiān)控程序執(zhí)行情況,因此用戶可以長時間對程序進行分析,以確定程序代碼中的問題,而不會改變處理器的執(zhí)行狀態(tài)。Computex F-Sight提供的處理器追蹤能力已證明適用在許多情況。
試想一段程序總是不停地產(chǎn)生例外。例外可能產(chǎn)生在程序的任何位置;工程師面臨的挑戰(zhàn)在于找出并厘清例外之處。為了解決這個問題,可以在例外產(chǎn)生之前或在例外向量中設置斷點,這樣當程序到達斷點時就會暫停。當程序停止時,可查看F-Sight記錄的執(zhí)行歷史數(shù)據(jù),可從中發(fā)現(xiàn)在進入例外處理前執(zhí)行了哪些指令。
在嵌入式系統(tǒng)中堆棧溢出也是一個常見的問題。程序突然開始從看起來不太正常的地方執(zhí)行。堆??赡苡捎谝绯龆黄茐?。如果懷疑產(chǎn)生了這樣的問題,可以透過設計觸發(fā)器來開始或停止追蹤數(shù)據(jù)的采集。透過設置觸發(fā)器條件進行堆棧指針和堆棧上限之間的比較,當條件滿足時,程序將及時中止,然后用戶就可以很容易地確認堆棧溢出以及產(chǎn)生的地方。
在某些實時系統(tǒng)中,為了除錯目的而停止處理器的執(zhí)行過程并非很好的選擇,因為停止執(zhí)行本身可能會改變程序行為。有時候問題可能極少出現(xiàn),因此可能需要長時間監(jiān)控程序執(zhí)行情況。F-Sight可以用來設置復雜的觸發(fā)條件并收集追蹤數(shù)據(jù),然后透過事后分析來除錯問題。
探測內(nèi)部訊號
FPGA除錯經(jīng)常從設計模擬開始。盡管仿真器能夠發(fā)現(xiàn)設計中的錯誤,但卻不能發(fā)現(xiàn)與技術指標相關的問題。而且還經(jīng)常產(chǎn)生設計在模擬時通過了所有測試、但在FPGA中實現(xiàn)時卻無法工作的情況。產(chǎn)生這種情況時,設計人員將被迫利用邏輯分析儀在實際的目標系統(tǒng)中進行除錯。
當試圖將訊號從FPGA中引出以便讓邏輯分析儀監(jiān)視其波形時,問題就出現(xiàn)了。對于大規(guī)模嵌入式系統(tǒng)設計來說,在大多數(shù)情況下即使只有很小的修改(例如將所需要的訊號引到組件外部接腳),也可能需要很長時間才能完成FPGA的重新合成和實體建置。此外,還可能會由于不同的布局和布線而帶來時序問題。執(zhí)行實體建置工具所需要的實際時間依賴于電路的規(guī)模以及主計算機的性能,但很可能一天內(nèi)只夠完成幾次除錯。
幸運的是,Computex F-sight提供了一項非常有用的功能,它不需要重新執(zhí)行合成和實體實現(xiàn)工具就能透過設計修改把內(nèi)部FPGA訊號引到組件外部接腳。這一功能被稱為‘探測’(Probing)。只需在顯示HDL原始程序代碼的視圖中簡單地選擇內(nèi)部FPGA訊號(圖2),F-Sight將自動完成其余工作,并根據(jù)上述選擇為測試接腳分配合適的布線資源。這是透過利用Xilinx ISE軟件工具中包含的FPGA編輯器實現(xiàn)的。有了這一功能,除錯時必須花在邏輯合成和布局布在線的時間被縮到了最短,因而可以有更多時間用在監(jiān)視訊號波形上。
圖2:F-Sight探測。
協(xié)同除錯
當系統(tǒng)工作不正常時,唯一能做的就是根據(jù)實際產(chǎn)生的事件檢查問題產(chǎn)生的原因。在有些情況下,利用硬件來實現(xiàn)事件追蹤會更容易;而在其它情況下,利用軟件可能更容易一些。例如,在使用硬件的情況中,如果能夠確定顯示例外的訊號,那么可以將這個訊號設為觸發(fā)訊號。在使用軟件的情況中,如果例外處理被調(diào)用,那么可以在例外處理程序處設置斷點并執(zhí)行用戶程序。這樣事件產(chǎn)生的過程將被擷取進F-Sight的追蹤緩沖器中。
然而,這兒的問題是即使擷取了事件的產(chǎn)生過程,確定原因仍然需要很長的時間,除非了解硬件和軟件之間的相關性。針對這一點,Computex實現(xiàn)了協(xié)同除錯功能,即可以在F-Sight中實現(xiàn)硬件(分析儀)和軟件(追蹤)歷史之間的同步。利用這一功能,可以在相同時間軸上檢查事件產(chǎn)生時的波形和程序行為。當在分析儀窗口中滾動顯示波形時,程序執(zhí)行歷史和原始程序代碼視圖也相應滾動(圖3)。協(xié)同除錯功能的強大之處在于能夠透過硬件和軟件協(xié)同除錯快速確定問題原因。
圖3:F-Sight協(xié)同除錯。
對閃存除錯
FPGA內(nèi)部存儲器經(jīng)常被用來儲存嵌入式處理器程序。然而,如果程序太大,內(nèi)部存儲器的容量經(jīng)常不夠用。一種可行的方法是利用外部閃存來儲存用戶程序。
雖然有些除錯器不支持閃存寫入功能,但F-Sight卻能夠像除錯位于內(nèi)部存儲器中的程序一樣,全面對外部閃存中的程序除錯。例如,它可以用來下載用戶程序,對內(nèi)存的某部份加上外掛程序,或在閃存中設置軟件斷點。
F-Sight支持1000多種類型的閃存。即使所使用的閃存不在已支持列表中,也可以透過圖形化用戶接口方便地手工增加相應項目。
評論