一種片內(nèi)硬件調(diào)試支持單元設(shè)計(jì)
調(diào)試單元的設(shè)計(jì)初衷,不僅是要能夠控制整個(gè)系統(tǒng)接受調(diào)試控制,同樣也需要用戶能夠?qū)λ衅洗鎯?chǔ)單元進(jìn)行訪問。整個(gè)片上存儲(chǔ)單元可分為3類:一是兩大Trace Buffer,包括AHB和指令追蹤緩存;二是DSU內(nèi)部寄存器,除前所述的四大關(guān)鍵寄存器,還包括用于記錄時(shí)間值的時(shí)間索引寄存器,用于控制AHBTrace Buffer內(nèi)部地址的AHB Trace 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ì)過程中設(shè)計(jì)了一套多級(jí)譯碼體體系,將片上所有存儲(chǔ)部件地址映射入此體系中?;谝陨蠈?duì)DSU功能的設(shè)計(jì)考慮,其具體的結(jié)構(gòu)組成如圖4所示。本文引用地址:http://m.butianyuan.cn/article/150984.htm
當(dāng)DSU被AHB總線譯碼器選中后,DSU內(nèi)部的第一級(jí)譯碼器將對(duì)地址總線訪問地址進(jìn)行譯碼,它將判斷當(dāng)前訪問的對(duì)象屬于三類存儲(chǔ)單元中的哪一類,如果是第二類即DSU內(nèi)部寄存器,那么將繼續(xù)進(jìn)行第二級(jí)地址譯碼,譯碼的結(jié)果將決定當(dāng)前調(diào)試主機(jī)將訪問哪一個(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í)際工作中,訪問此類存儲(chǔ)單元所需的時(shí)鐘周期要多于其他幾類存儲(chǔ)單元。在圖4中,左邊5個(gè)寄存器將共同決定AHB Trace Buffer的工作情況,斷點(diǎn)判別邏輯根據(jù)控制、斷點(diǎn)和屏蔽寄存器的內(nèi)容共同決定AHB TraceBuffer記錄值來源于總線還是調(diào)試主機(jī);時(shí)間索引寄存器值將隨時(shí)鐘周期自增加,同時(shí)也作為記錄內(nèi)容的一部分方便以后查詢;而索引寄存器也將隨時(shí)鐘周期自增,為正常通信數(shù)據(jù)提供地址,而在調(diào)試模式下,將由一級(jí)譯碼器直接提供訪問地址;右邊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è)簡單的通信協(xié)議,它支持?jǐn)?shù)據(jù)在串口和AHB接口之間的格式轉(zhuǎn)換。通過這個(gè)通信鏈路,一個(gè)讀或?qū)憘鬏斂梢栽谌我獾腁HB地址上產(chǎn)生,其結(jié)構(gòu)如圖5所示。
該系統(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ù)按字自增。
通過本接口,調(diào)試機(jī)的串行數(shù)據(jù)將能被此接口封裝成符合AHB總線協(xié)議的傳輸格式,同樣在讀傳輸時(shí),調(diào)試輸出數(shù)據(jù)也能被此接口分解為單bit數(shù)據(jù)返回到調(diào)試串口。
2 結(jié)語
當(dāng)今業(yè)界已經(jīng)出現(xiàn)了較為成熟的硬件調(diào)試系統(tǒng),如ARM公司的基于JTAG的Embeded ICE宏單元和Multi-ICE協(xié)議轉(zhuǎn)換器,它通過擴(kuò)展JTFAG測試端來實(shí)現(xiàn)通信,利用掃描鏈插入技術(shù)訪問寄存器并向處理器施加指令來訪問處理器及系統(tǒng)的狀態(tài)。但是由于安全和商業(yè)因素的原因,ARM及其調(diào)試工具提供商都沒有公開它們的細(xì)節(jié),并且其高昂的價(jià)格也使得很多用戶對(duì)其望而卻步。本文所提出的一種硬件調(diào)試單元完全自主實(shí)
現(xiàn),且順利通過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)論