歡迎您光臨本站 登入註冊首頁

MICROBLAZE的調試方法介紹

admin @ 2014-03-26 , reply:0

概述

   MICROBLAZE是XILINX提供的採用大端存儲系統、指令和數據採用哈佛結構的32位軟核,可在SPARTAN2,3和VIRTEX系統上運行,現對其調試方法做一個……

    MICROBLAZE是XILINX提供的採用大端存儲系統、指令和數據採用哈佛結構的32位軟核,可在SPARTAN2,3和VIRTEX系統上運行,現對其調試方法做一個簡單介紹,希望對有興趣這方面開發的人有所幫助。
    XILINX提供的調試環境主要有GDB和SDK。即在XPS環境下可通過調用GDB完成,也可將程序導入SDK環境下進行調試。這兩種方法都是通過XMD作為底層工具與目標進行通訊。本文以XPS環境下的GDB調試為例。
    調試的方法主要由4種:MDM,XMD-stub,ISS和Virtual Platform。其中后兩為模擬調試,不需要目標硬體支持,對於沒有目標板的而又想預先程序開發的用戶是個不錯的選擇。下面對這4種方法逐一做一簡要介紹。

1. MDM(Microprocessor Debug Module)
    這種方式是基於硬體的調試方法。主機通過JTAG與FPGA中的MDM core相連,而MDM又與Microblaze的調試埠連接起來,從而完成調試信息的通訊。一個MDM模塊可以與一個和多個MicroBlaze處理器核相連,如下圖1。
 
圖1 MDM連接
    首先要加入opb_mdm模塊並完成與microblaze調試介面的連接,並設置好相應的參數,如圖2所示。如果是通過BSB創建的項目,選擇Use On-chip Debug Logic作為調試方式即可完成opb_mdm模塊的加入。
 
 
 
 
圖2 MDM相關設置
相應的MHS文件為:
BEGIN microblaze
PARAMETER INSTANCE = microblaze_0
PARAMETER HW_VER = 4.00.a
PARAMETER C_DEBUG_ENABLED = 1
PARAMETER C_NUMBER_OF_PC_BRK = 2
PARAMETER C_NUMBER_OF_RD_ADDR_BRK = 1
PARAMETER C_NUMBER_OF_WR_ADDR_BRK = 1

BUS_INTERFACE DLMB = dlmb
BUS_INTERFACE ILMB = ilmb
BUS_INTERFACE DOPB = mb_opb
BUS_INTERFACE IOPB = mb_opb
PORT CLK = sys_clk_s
PORT DBG_CAPTURE = DBG_CAPTURE_s
PORT DBG_CLK = DBG_CLK_s
PORT DBG_REG_EN = DBG_REG_EN_s
PORT DBG_TDI = DBG_TDI_s
PORT DBG_TDO = DBG_TDO_s
PORT DBG_UPDATE = DBG_UPDATE_s

END
BEGIN opb_mdm
PARAMETER INSTANCE = debug_module
PARAMETER HW_VER = 2.00.a
PARAMETER C_MB_DBG_PORTS = 1
PARAMETER C_USE_UART = 1
PARAMETER C_UART_WIDTH = 8

PARAMETER C_BASEADDR = 0x41400000
PARAMETER C_HIGHADDR = 0x4140ffff
BUS_INTERFACE SOPB = mb_opb
PORT OPB_Clk = sys_clk_s
PORT DBG_CAPTURE_0 = DBG_CAPTURE_s
PORT DBG_CLK_0 = DBG_CLK_s
PORT DBG_REG_EN_0 = DBG_REG_EN_s
PORT DBG_TDI_0 = DBG_TDI_s
PORT DBG_TDO_0 = DBG_TDO_s
PORT DBG_UPDATE_0 = DBG_UPDATE_s

END
    其中PARAMETER C_USE_UART = 1是使能MDM中的UART功能,可通過它模擬UART從JTAG口傳送數據。
    在啟動XMD與目標板連接之前,應用相應的設置如圖3所示,選擇HARDWARE,即選用MDM的調試方法。
 
圖3
    如一切正常的話,則XMD窗口顯示的信息如圖4所示。
 
 
圖4 MDM信息顯示
此時便可啟動GNB進行軟體調試了。

2 XMDSTUB
    這是一種基於軟體的調試方法。XMDSTUB是一段從0x0開始的監控程序(ROM MONITOR),它可通過JTAG-UART(在OPB-MDM中使能的UART,當然也可單獨加入一JTAG-UART IP核)或UART口與XMD完成數據通訊,因此在MSS文件中必須有一個OPB-MDM或UARTLITE設計為XMDSTUB PERIPHERAL。相應的MSS文件如下所示:
BEGIN microblaze
PARAMETER INSTANCE = microblaze_0
PARAMETER HW_VER = 3.00.a
PARAMETER C_DEBUG_ENABLED = 0
BUS_INTERFACE DOPB = mb_opb
BUS_INTERFACE IOPB = mb_opb
BUS_INTERFACE DLMB = dlmb
BUS_INTERFACE ILMB = ilmb
PORT CLK = sys_clk_s
END
BEGIN opb_mdm
PARAMETER INSTANCE = debug_module
PARAMETER HW_VER = 2.00.a
PARAMETER C_MB_DBG_PORTS = 0
PARAMETER C_USE_UART = 1
PARAMETER C_UART_WIDTH = 8

PARAMETER C_BASEADDR = 0x80002000
PARAMETER C_HIGHADDR = 0x800020ff
BUS_INTERFACE SOPB = mb_opb
PORT OPB_Clk = sys_clk_s
END
.....
當然這也可通過GUI進行設置,PROJECT-SOFTWARE PLATFORME SETTING,如圖5所示:
 
圖5
    在Applications中完成如圖6所示的設置,保證在編譯時將XMDSTUB程序從0x0處開始放置。
    另在XMD設置中,即圖3中,應選擇stub選項。在advanced options中,默認的是JTAG方式的連接,即採用JTAG-UART方式,用JTAG口模擬UART功能。如要選用UART方式,可勾上advanced options,選擇serial,並設置好相應的串口參數,與IP CORE中選中的UARTLITE參數保持一致,保證正確連接,如圖7所示。
    另外,有一個有意思的事,不知是不是我機子的問題,就是當我將advanced options中選為SERIAL之後,就沒法再改回JTAG了,SAVE時總是報錯。一個解決的辦法就是先將CONNECTION TYPE改為其它類型SAVE,然後再改回STUB,此時就不要再選advanced options了,因為默認的是JTAG方式。
 
圖6
 
 
圖7
    上述設置完成後,便可DOWNLOAD程序,將XMDSTUB程序下載時FPGA中,然後打開XMD進行連接和啟動GDB的SEVER,最後用GDB完成應用程序的下載和調試。

3 ISS(Instruction Set Simulator)
    這是一種基於指令集模擬的調試方法,只能支持處理器和內存模型,對其它的周邊硬體不支持。在圖3中選用SIMULATOR,沒有使用過這種方法,所以不多說。

4 Virtual Platform systems
    虛擬平台是硬體系統指令周期級的模擬模型。通過它可以在沒有硬體的基礎上,進行應用程序的調試和優化。如果沒有硬體平台,這是一種很好的選擇。
    在XPS中,選擇Tools > Generate Virtual Platform創建虛擬平台。然後在圖3的XMD中便可選擇virtual platform選項。打開XMD,輸入vpconnect命令,或前三個字母vpc,完成XMD與虛擬平台的連接,如圖8所示。 最後便可運行GDB程序進行相應的調試工作了。
 
圖8
這4種調試方法先介紹到這裡,具體可參考XILINX公司提供的文檔。文中錯誤在所難免,希望大家指正,telantan@sohu.com


[admin via 研發互助社區 ] MICROBLAZE的調試方法介紹已經有4459次圍觀

http://cocdig.com/docs/show-post-42996.html