新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一種片內(nèi)硬件調(diào)試支持單元設(shè)計

一種片內(nèi)硬件調(diào)試支持單元設(shè)計

作者: 時間:2011-03-07 來源:網(wǎng)絡(luò) 收藏

1.2 Trace Buffer
為了實(shí)現(xiàn)引言中提到的調(diào)試的可觀察性,本系統(tǒng)中就必須具備能夠記錄總線通信信息以及指令執(zhí)行情況的模塊。AHB Trace Buffer就是一個循環(huán)緩沖存儲體,被用來存儲AHB上通信的所有信息。AHB總線上的地址、數(shù)據(jù)和各種控制信號存儲在其中,并且可以在以后的分析中讀出;同時在需要調(diào)試寫入的時候也可以通過AHB寫總線寫入數(shù)據(jù)。本模塊因每個周期需記錄的信息位寬為128 b,所以設(shè)計的AHB TraceBuffer存儲器將采用4個位寬為32 b的同步SRAM構(gòu)成,深度可配置。若整個Buffer的容量為1 KB,則每一個SRAM大小為64×32 b,若容量為2 KB,則每一個SRAM大小為128×32 b,依次類推。
在正常總線通信中,每一筆AHB傳輸將被循環(huán)存儲到Buffer中,在處理器進(jìn)入調(diào)試模式后,AHB TraceBuffer被暫時掛起,這時可由外部調(diào)試設(shè)備利用AHB總線訪問Buffer,通過地址譯碼控制4塊SRAM各自的使能信號,進(jìn)而完成讀/寫操作。Buffer的數(shù)據(jù)輸入端為128 b,包含的有地址、數(shù)據(jù)、控制信號和控制寄存器值等,詳細(xì)見表1。

本文引用地址:http://www.butianyuan.cn/article/150984.htm

c.JPG


同樣在微處理器內(nèi)部實(shí)現(xiàn)一個指令TraceBuffer,用來存儲執(zhí)行過的指令。該部件同樣循環(huán)存儲,位寬128 b,利用4塊SRAM構(gòu)成。該存儲器中將記錄指令執(zhí)行過程中指令運(yùn)行狀態(tài),操作碼、操作數(shù)和操作結(jié)果,以及PC指針等值,用以方便以后讀出進(jìn)行診斷定位。
兩塊Buffer在系統(tǒng)正常運(yùn)轉(zhuǎn)時記錄數(shù)據(jù),所以為了保證其內(nèi)容的正確性,僅允許系統(tǒng)進(jìn)入調(diào)試模式時對其進(jìn)行讀寫訪問,而正常狀態(tài)下將禁止對其訪問。
1.3 DSU單元
對于系統(tǒng)而言,其內(nèi)部的大部分信號與微處理器的工作狀態(tài)對于開發(fā)者都是不可見的,本設(shè)計就是通過提高在系統(tǒng)開發(fā)過程中用戶對系統(tǒng)的可觀察性和可控制性從而幫助開發(fā)者更為有效的定位設(shè)計中的錯誤,從而加速開發(fā)周期。為此,本系統(tǒng)必須在片上集成單獨(dú)的調(diào)試單元用于監(jiān)測系統(tǒng)運(yùn)轉(zhuǎn)并能接管處于異常狀態(tài)時的微處理器。
借鑒CPU中程序狀態(tài)字的作用,DSU中首先需要一些寄存器能夠控制與管理整個調(diào)試單元的行為,它應(yīng)該能接收來自調(diào)試主機(jī)發(fā)布的調(diào)試命令,同時也能夠?qū)ο到y(tǒng)內(nèi)部斷點(diǎn)等觸發(fā)行為做出實(shí)時響應(yīng)以及在任何時刻都能被調(diào)試主機(jī)所訪問,為此,該調(diào)試單元設(shè)計了如圖3所示的部分關(guān)鍵寄存器。

d.JPG


圖3(a)為AHB Trace Buffer控制寄存器。其中EN位將控制AHB Trace Buffer的使能;DM位表示Buffer處于延遲計數(shù)模式,設(shè)計這種模式是為了方便觀察斷點(diǎn)發(fā)生前后定長時間內(nèi)系統(tǒng)的運(yùn)轉(zhuǎn)狀態(tài);BR位則表示AHB斷點(diǎn)命中;高16位DCNT表示在延遲計數(shù)模式下的延遲計數(shù)值。AHB斷點(diǎn)寄存器有兩路,可寫入30位的精確斷點(diǎn)地址,當(dāng)AHB地址總線上廣播的地址與該斷點(diǎn)地址相吻合時,將會立即凍結(jié)AHBTrace Buffer,同時清除AHB控制寄存器的使能位。如果控制寄存器中的延遲模式被置位,那么在斷點(diǎn)命中的同時,將啟動內(nèi)置自減計數(shù)器,該計數(shù)值將由DCNT域控制,當(dāng)計數(shù)器自減至零時才能引起凍結(jié)行為。
圖3(b)為DSU控制寄存器,它與程序狀態(tài)字作用相似,能夠直接控制微處理器的行為模式,決定微處理器如何進(jìn)入調(diào)試狀態(tài)。TE位將控制處理器中指令Buffer的使能;第1~5位將作為處理器能夠被掛起的條件位,BE表示處理器發(fā)生錯誤可進(jìn)入調(diào)試模式,BW表示觸發(fā)IU監(jiān)測點(diǎn)可進(jìn)入調(diào)試模式,BS表示執(zhí)行斷點(diǎn)指令(tal)可進(jìn)入調(diào)試模式,BX表示任何陷阱可進(jìn)入調(diào)試模式,BZ是在特定陷阱才能進(jìn)入調(diào)試模式;DM將用來指示處理器進(jìn)入調(diào)試狀態(tài);EE位和EB位為只讀,將記錄DSU外部使能和調(diào)試信號;PE位用來記錄處理器是否進(jìn)入錯誤狀態(tài);HL位記錄處理器是否暫停;PW位記錄處理器是否進(jìn)入省電模式;其他位均未定義。
圖3(c)為DSU中斷和單步寄存器,由于該系統(tǒng)設(shè)計的AHB總線系統(tǒng)最大可支持16個主設(shè)備,所以這里的中斷和單步控制寄存器以及屏蔽寄存器也將能夠控制16個主設(shè)備。當(dāng)前面所述的引起系統(tǒng)進(jìn)入調(diào)試模式的條件觸發(fā)時,則相應(yīng)的BNx(break now)位將被置位,而SS(single st-ep)位則可通過外部寫入而使得處理器執(zhí)行單步操作,這些位將直接驅(qū)動對應(yīng)每一個微處理器的控制部件,由各處理器負(fù)責(zé)監(jiān)測并做出相應(yīng)的調(diào)試反應(yīng),如PC現(xiàn)場保護(hù)、凍結(jié)流水和定時器、關(guān)閉看門狗等。
圖3(d)為DSU屏蔽寄存器,考慮在多處理器系統(tǒng)中一個處理器進(jìn)入調(diào)試對其他處理器的影響,特設(shè)計此寄存器。EDx表示一個處理器進(jìn)入調(diào)試模式時,處理器x是否強(qiáng)制進(jìn)入調(diào)試模式;DMx表示處理器x是否屏蔽其他處理器進(jìn)入調(diào)試模式。當(dāng)某一處理器因觸發(fā)斷點(diǎn)或滿足。DSU控制寄存器所設(shè)定的條件時,調(diào)試單元內(nèi)部的屏蔽邏輯將會查詢該寄存器,對其中的EDx和DMx進(jìn)行相與運(yùn)算,得出的結(jié)果將直接寫入DSU中斷和單步寄存器中對應(yīng)BNx位,由此可直接決定其他處于正常狀態(tài)的處理器是否連帶進(jìn)入調(diào)試模式。

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


關(guān)鍵詞: 嵌入式

評論


相關(guān)推薦

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

關(guān)閉