一種片內(nèi)硬件調(diào)試支持單元設計
1.2 Trace Buffer
為了實現(xiàn)引言中提到的調(diào)試的可觀察性,本系統(tǒng)中就必須具備能夠記錄總線通信信息以及指令執(zhí)行情況的模塊。AHB Trace Buffer就是一個循環(huán)緩沖存儲體,被用來存儲AHB上通信的所有信息。AHB總線上的地址、數(shù)據(jù)和各種控制信號存儲在其中,并且可以在以后的分析中讀出;同時在需要調(diào)試寫入的時候也可以通過AHB寫總線寫入數(shù)據(jù)。本模塊因每個周期需記錄的信息位寬為128 b,所以設計的AHB TraceBuffer存儲器將采用4個位寬為32 b的同步SRAM構成,深度可配置。若整個Buffer的容量為1 KB,則每一個SRAM大小為64×32 b,若容量為2 KB,則每一個SRAM大小為128×32 b,依次類推。
在正??偩€通信中,每一筆AHB傳輸將被循環(huán)存儲到Buffer中,在處理器進入調(diào)試模式后,AHB TraceBuffer被暫時掛起,這時可由外部調(diào)試設備利用AHB總線訪問Buffer,通過地址譯碼控制4塊SRAM各自的使能信號,進而完成讀/寫操作。Buffer的數(shù)據(jù)輸入端為128 b,包含的有地址、數(shù)據(jù)、控制信號和控制寄存器值等,詳細見表1。本文引用地址:http://www.ex-cimer.com/article/150984.htm
同樣在微處理器內(nèi)部實現(xiàn)一個指令TraceBuffer,用來存儲執(zhí)行過的指令。該部件同樣循環(huán)存儲,位寬128 b,利用4塊SRAM構成。該存儲器中將記錄指令執(zhí)行過程中指令運行狀態(tài),操作碼、操作數(shù)和操作結果,以及PC指針等值,用以方便以后讀出進行診斷定位。
兩塊Buffer在系統(tǒng)正常運轉時記錄數(shù)據(jù),所以為了保證其內(nèi)容的正確性,僅允許系統(tǒng)進入調(diào)試模式時對其進行讀寫訪問,而正常狀態(tài)下將禁止對其訪問。
1.3 DSU單元
對于嵌入式系統(tǒng)而言,其內(nèi)部的大部分信號與微處理器的工作狀態(tài)對于開發(fā)者都是不可見的,本設計就是通過提高在系統(tǒng)開發(fā)過程中用戶對系統(tǒng)的可觀察性和可控制性從而幫助開發(fā)者更為有效的定位設計中的錯誤,從而加速開發(fā)周期。為此,本系統(tǒng)必須在片上集成單獨的調(diào)試單元用于監(jiān)測系統(tǒng)運轉并能接管處于異常狀態(tài)時的微處理器。
借鑒CPU中程序狀態(tài)字的作用,DSU中首先需要一些寄存器能夠控制與管理整個調(diào)試單元的行為,它應該能接收來自調(diào)試主機發(fā)布的調(diào)試命令,同時也能夠對系統(tǒng)內(nèi)部斷點等觸發(fā)行為做出實時響應以及在任何時刻都能被調(diào)試主機所訪問,為此,該調(diào)試單元設計了如圖3所示的部分關鍵寄存器。
圖3(a)為AHB Trace Buffer控制寄存器。其中EN位將控制AHB Trace Buffer的使能;DM位表示Buffer處于延遲計數(shù)模式,設計這種模式是為了方便觀察斷點發(fā)生前后定長時間內(nèi)系統(tǒng)的運轉狀態(tài);BR位則表示AHB斷點命中;高16位DCNT表示在延遲計數(shù)模式下的延遲計數(shù)值。AHB斷點寄存器有兩路,可寫入30位的精確斷點地址,當AHB地址總線上廣播的地址與該斷點地址相吻合時,將會立即凍結AHBTrace Buffer,同時清除AHB控制寄存器的使能位。如果控制寄存器中的延遲模式被置位,那么在斷點命中的同時,將啟動內(nèi)置自減計數(shù)器,該計數(shù)值將由DCNT域控制,當計數(shù)器自減至零時才能引起凍結行為。
圖3(b)為DSU控制寄存器,它與程序狀態(tài)字作用相似,能夠直接控制微處理器的行為模式,決定微處理器如何進入調(diào)試狀態(tài)。TE位將控制處理器中指令Buffer的使能;第1~5位將作為處理器能夠被掛起的條件位,BE表示處理器發(fā)生錯誤可進入調(diào)試模式,BW表示觸發(fā)IU監(jiān)測點可進入調(diào)試模式,BS表示執(zhí)行斷點指令(tal)可進入調(diào)試模式,BX表示任何陷阱可進入調(diào)試模式,BZ是在特定陷阱才能進入調(diào)試模式;DM將用來指示處理器進入調(diào)試狀態(tài);EE位和EB位為只讀,將記錄DSU外部使能和調(diào)試信號;PE位用來記錄處理器是否進入錯誤狀態(tài);HL位記錄處理器是否暫停;PW位記錄處理器是否進入省電模式;其他位均未定義。
圖3(c)為DSU中斷和單步寄存器,由于該系統(tǒng)設計的AHB總線系統(tǒng)最大可支持16個主設備,所以這里的中斷和單步控制寄存器以及屏蔽寄存器也將能夠控制16個主設備。當前面所述的引起系統(tǒng)進入調(diào)試模式的條件觸發(fā)時,則相應的BNx(break now)位將被置位,而SS(single st-ep)位則可通過外部寫入而使得處理器執(zhí)行單步操作,這些位將直接驅動對應每一個微處理器的控制部件,由各處理器負責監(jiān)測并做出相應的調(diào)試反應,如PC現(xiàn)場保護、凍結流水和定時器、關閉看門狗等。
圖3(d)為DSU屏蔽寄存器,考慮在多處理器系統(tǒng)中一個處理器進入調(diào)試對其他處理器的影響,特設計此寄存器。EDx表示一個處理器進入調(diào)試模式時,處理器x是否強制進入調(diào)試模式;DMx表示處理器x是否屏蔽其他處理器進入調(diào)試模式。當某一處理器因觸發(fā)斷點或滿足。DSU控制寄存器所設定的條件時,調(diào)試單元內(nèi)部的屏蔽邏輯將會查詢該寄存器,對其中的EDx和DMx進行相與運算,得出的結果將直接寫入DSU中斷和單步寄存器中對應BNx位,由此可直接決定其他處于正常狀態(tài)的處理器是否連帶進入調(diào)試模式。
評論