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