總線實(shí)現(xiàn)片內(nèi)硬件調(diào)試支持單元設(shè)計(jì)
圖3( b) 為DSU 控制寄存器,它與程序狀態(tài)字作用相似,能夠直接控制微處理器的行為模式,決定微處理器如何進(jìn)入調(diào)試狀態(tài)。T E 位將控制處理器中指令Buf fer 的使能; 第1~ 5 位將作為處理器能夠被掛起的條件位,BE 表示處理器發(fā)生錯(cuò)誤可進(jìn)入調(diào)試模式,BW表示觸發(fā)IU 監(jiān)測(cè)點(diǎn)可進(jìn)入調(diào)試模式,BS 表示執(zhí)行斷點(diǎn)指令( ta1) 可進(jìn)入調(diào)試模式,BX 表示任何陷阱可進(jìn)入調(diào)試模式,BZ 是在特定陷阱才能進(jìn)入調(diào)試模式; DM 將用來(lái)指示處理器進(jìn)入調(diào)試狀態(tài); EE 位和EB 位為只讀,將記錄DSU 外部使能和調(diào)試信號(hào); PE 位用來(lái)記錄處理器是否進(jìn)入錯(cuò)誤狀態(tài); HL 位記錄處理器是否暫停;PW 位記錄處理器是否進(jìn)入省電模式; 其他位均未定義。
圖3( c) 為DSU 中斷和單步寄存器,由于該系統(tǒng)設(shè)計(jì)的AHB 總線系統(tǒng)最大可支持16 個(gè)主設(shè)備,所以這里的中斷和單步控制寄存器以及屏蔽寄存器也將能夠控制16 個(gè)主設(shè)備。當(dāng)前面所述的引起系統(tǒng)進(jìn)入調(diào)試模式的條件觸發(fā)時(shí),則相應(yīng)的BNx ( break now ) 位將被置位,而SS( single step) 位則可通過(guò)外部寫入而使得處理器執(zhí)行單步操作,這些位將直接驅(qū)動(dòng)對(duì)應(yīng)每一個(gè)微處理器的控制部件,由各處理器負(fù)責(zé)監(jiān)測(cè)并做出相應(yīng)的調(diào)試反應(yīng),如PC 現(xiàn)場(chǎng)保護(hù)、凍結(jié)流水和定時(shí)器、關(guān)閉看門狗等。
圖3( d) 為DSU 屏蔽寄存器,考慮在多處理器系統(tǒng)中一個(gè)處理器進(jìn)入調(diào)試對(duì)其他處理器的影響,特設(shè)計(jì)此寄存器。EDx 表示一個(gè)處理器進(jìn)入調(diào)試模式時(shí),處理器x 是否強(qiáng)制進(jìn)入調(diào)試模式; DMx 表示處理器x 是否屏蔽其他處理器進(jìn)入調(diào)試模式。當(dāng)某一處理器因觸發(fā)斷點(diǎn)或滿足DSU 控制寄存器所設(shè)定的條件時(shí),調(diào)試單元內(nèi)部的屏蔽邏輯將會(huì)查詢?cè)摷拇嫫?,?duì)其中的EDx和DMx 進(jìn)行相與運(yùn)算,得出的結(jié)果將直接寫入DSU中斷和單步寄存器中對(duì)應(yīng)BNx 位,由此可直接決定其他處于正常狀態(tài)的處理器是否連帶進(jìn)入調(diào)試模式。
調(diào)試單元的設(shè)計(jì)初衷,不僅是要能夠控制整個(gè)系統(tǒng)接受調(diào)試控制,同樣也需要用戶能夠?qū)λ衅洗鎯?chǔ)單元進(jìn)行訪問(wèn)。整個(gè)片上存儲(chǔ)單元可分為3 類: 一是兩大T race Buf fer,包括AHB 和指令追蹤緩存; 二是DSU 內(nèi)部寄存器,除前所述的四大關(guān)鍵寄存器,還包括用于記錄時(shí)間值的時(shí)間索引寄存器,用于控制AHBTrace Buf fer 內(nèi)部地址的AHB T race Buffer 地址索引寄存器,用于存儲(chǔ)精確斷點(diǎn)地址的AHB 斷點(diǎn)寄存器和與其配套的掩碼寄存器; 三是微處理器內(nèi)部寄存器,包括cache,IU 寄存器堆,SPR,PSR,F(xiàn)SR,窗口寄存器,PC 和NPC 指針,陷阱寄存器等。為了能對(duì)如此多的寄存器和存儲(chǔ)器進(jìn)行準(zhǔn)確定位,必須有一套完整的尋址機(jī)制,所以在DSU 設(shè)計(jì)過(guò)程中設(shè)計(jì)了一套多級(jí)譯碼體體系,將片上所有存儲(chǔ)部件地址映射入此體系中。基于以上對(duì)DSU 功能的設(shè)計(jì)考慮,其具體的結(jié)構(gòu)組成如圖4所示。
圖4 DSU 內(nèi)部結(jié)構(gòu)框圖
當(dāng)DSU 被AHB 總線譯碼器選中后,DSU 內(nèi)部的第一級(jí)譯碼器將對(duì)地址總線訪問(wèn)地址進(jìn)行譯碼,它將判斷當(dāng)前訪問(wèn)的對(duì)象屬于三類存儲(chǔ)單元中的哪一類,如果是第二類即DSU 內(nèi)部寄存器,那么將繼續(xù)進(jìn)行第二級(jí)地址譯碼,譯碼的結(jié)果將決定當(dāng)前調(diào)試主機(jī)將訪問(wèn)哪一個(gè)功能寄存器; 如果是第一類存儲(chǔ)部件,由于它們?nèi)萘枯^大,并需要其128 b 的位寬能與總線位寬相兼容,所以需要在這些循環(huán)存儲(chǔ)體內(nèi)設(shè)計(jì)一個(gè)獨(dú)立的譯碼器,能夠?qū)HB 索引寄存器或一級(jí)譯碼送出的地址再譯碼;對(duì)于第三類存儲(chǔ)部件,由于此類存儲(chǔ)部件位于DSU 外部,所以除了需要DSU 內(nèi)部的第一、二級(jí)譯碼外,在處理器內(nèi)部仍然需要更深層次的輔助譯碼,因此在實(shí)際工作中,訪問(wèn)此類存儲(chǔ)單元所需的時(shí)鐘周期要多于其他幾類存儲(chǔ)單元。在圖4 中,左邊5 個(gè)寄存器將共同決定AHB T race Buf fer 的工作情況,斷點(diǎn)判別邏輯根據(jù)控制、斷點(diǎn)和屏蔽寄存器的內(nèi)容共同決定AHB TraceBuf fer 記錄值來(lái)源于總線還是調(diào)試主機(jī); 時(shí)間索引寄存器值將隨時(shí)鐘周期自增加,同時(shí)也作為記錄內(nèi)容的一部分方便以后查詢; 而索引寄存器也將隨時(shí)鐘周期自增,為正常通信數(shù)據(jù)提供地址,而在調(diào)試模式下,將由一級(jí)譯碼器直接提供訪問(wèn)地址; 右邊3 個(gè)寄存器將共同控制微處理器的工作狀態(tài),在DSU 外部使能信號(hào)下處理器進(jìn)入調(diào)試模式后,處理器將程序指針入棧保護(hù),同時(shí)輸出信號(hào)指示當(dāng)前調(diào)試狀態(tài)并將定時(shí)器凍結(jié)。當(dāng)DSU 控制寄存器中的BN 位被清零時(shí),則處理器定時(shí)器解凍,程序指針恢復(fù),退出調(diào)試狀態(tài)。
1. 4 調(diào)試通信鏈路
在圖1 中就已經(jīng)提到在本系統(tǒng)設(shè)計(jì)中需要一個(gè)調(diào)試接口,該接口將連接調(diào)試主機(jī)與AHB 總線,它包含一個(gè)連接在AHB 總線上的專用UART。該系統(tǒng)為此設(shè)計(jì)了一個(gè)簡(jiǎn)單的通信協(xié)議,它支持數(shù)據(jù)在串口和AHB 接口之間的格式轉(zhuǎn)換。通過(guò)這個(gè)通信鏈路,一個(gè)讀或?qū)憘鬏斂梢栽谌我獾腁HB 地址上產(chǎn)生,其結(jié)構(gòu)如圖5 所示。
圖5 調(diào)試通信鏈路
該系統(tǒng)設(shè)計(jì)的UART 包含一個(gè)波特率發(fā)生器,它利用一個(gè)18 位寬的自減計(jì)數(shù)器產(chǎn)生所需的波特率,在時(shí)鐘的驅(qū)動(dòng)下,每當(dāng)計(jì)數(shù)器下溢,則產(chǎn)生一個(gè)脈沖信號(hào),同時(shí)將一個(gè)重載寄存器的預(yù)定值重新載入計(jì)數(shù)器,最終產(chǎn)生的UART 脈沖頻率將是所需波特率的8 倍。
調(diào)試機(jī)的串口支持的數(shù)據(jù)幀結(jié)構(gòu)為10 位,包括1 位起始位、8 位數(shù)據(jù)位和1 位停止位( 高電平) 。當(dāng)進(jìn)行的是讀傳輸時(shí),除了將讀地址按照規(guī)定的幀格式進(jìn)行拆分外,在開始階段需另加1 個(gè)控制幀,其中包含指明當(dāng)前傳輸?shù)念愋鸵约斑B續(xù)傳輸?shù)膲K數(shù); 若進(jìn)行的是寫傳輸,那么在地址發(fā)送完后,還需要按照幀結(jié)構(gòu)發(fā)送調(diào)試數(shù)據(jù)。每次進(jìn)行連續(xù)傳輸時(shí),只需要發(fā)出1 個(gè)首地址,以后地址將按照控制幀中指定的塊數(shù)按字自增。
通過(guò)本接口,調(diào)試機(jī)的串行數(shù)據(jù)將能被此接口封裝成符合AHB 總線協(xié)議的傳輸格式,同樣在讀傳輸時(shí),調(diào)試輸出數(shù)據(jù)也能被此接口分解為單bit 數(shù)據(jù)返回到調(diào)試串口。
2 結(jié) 語(yǔ)
本文所提出的一種硬件調(diào)試單元完全自主實(shí)現(xiàn),且順利通過(guò)Modelsim 的功能仿真,所以它不但能夠有效的完成對(duì)片上處理器的診斷與調(diào)試,而且其擁有的跟蹤技術(shù)也能對(duì)程序的運(yùn)轉(zhuǎn)以及片內(nèi)的通信狀況進(jìn)行實(shí)時(shí)監(jiān)控,同時(shí)專用的硬件協(xié)議轉(zhuǎn)換模塊在片內(nèi)就實(shí)現(xiàn)了遠(yuǎn)程調(diào)試連接,能夠方便的與調(diào)試機(jī)進(jìn)行通信。
評(píng)論