周樂+孫大成
摘要:該文提供了一種基于嵌入式系統(tǒng)的JTAG驅(qū)動電路的實現(xiàn)方法,包括主控制單元由一個嵌入式處理器模塊來完成,處理調(diào)試計算機從接口發(fā)送過來的數(shù)據(jù)包,該數(shù)據(jù)包通過處理器模塊解析成一組基本的操作序列,這組操作序列進而進入下一級驅(qū)動器模塊,產(chǎn)生的JTAG數(shù)據(jù)碼流發(fā)送給目標(biāo)數(shù)字信號處理器;同時將目標(biāo)數(shù)字信號處理器返回的JTAG信號解碼,提交給處理器模塊返回上位機。
關(guān)鍵詞:JTAG驅(qū)動電路;嵌入式處理器;驅(qū)動器
中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2016)25-0235-04
Abstract: In this paper, we present a method which implements jtag drive circuit based on imbedded system. The main control unit achieves function by a imbedded processor,which processes data packs coming from debugging computer. The data pack is translated a group of operator by processor, then the group of operator are sent to the next drive module, resulting in jtag code to target DSP. Simultaneously, corresponding jtag code come back from target DSP, and send to host by the imbedded processor.
Key words: JTAG drive circuit;imbedded system;drive module
1 引言
目前大多數(shù)的通用數(shù)字信號處理器都采用JTAG(Joint Test Action Group,聯(lián)合測試工作組)邊界掃描技術(shù)作為其調(diào)試手段,而在該處理器的外側(cè)需要一個驅(qū)動模塊,用來作為調(diào)試計算機和目標(biāo)處理器的橋接。該橋接電路主要對從調(diào)試計算機發(fā)送來的數(shù)據(jù)進行解析、格式轉(zhuǎn)換、數(shù)據(jù)同步、數(shù)據(jù)卸載等,同時還要完成編碼和解碼等功能。
而很多的JTAG驅(qū)動電路主要通過單片機等CPU單純地通過軟件來控制,而JTAG驅(qū)動電路中一些編解碼模塊以及狀態(tài)切換操作等模塊用專用硬件電路來實現(xiàn)效率更高;還有一些JTAG驅(qū)動電路只通過FPGA的硬件邏輯來實現(xiàn),這樣放棄了軟件開發(fā)的靈活性。以上的這些設(shè)計對實現(xiàn)當(dāng)下功能越來越強大的JTAG調(diào)試是一種束縛。
本文涉及一種面向高性能通用數(shù)字信號處理器的基于嵌入式系統(tǒng)的JTAG驅(qū)動電路的實現(xiàn)方法。是一種基于嵌入式技術(shù)開發(fā)的電路系統(tǒng)可以同時兼顧軟硬件的優(yōu)勢,通過軟件開發(fā)可以豐富各種面向用戶的調(diào)試功能,結(jié)合相應(yīng)的硬件模塊可以使JTAG驅(qū)動電路高速化、模塊化。
2 系統(tǒng)概述
本文所要解決的技術(shù)問題在于提供一種既能滿足IEEE1194.1標(biāo)準(zhǔn),又能夠通過軟硬件協(xié)同處理提高JTAG驅(qū)動電路工作效率的基于嵌入式系統(tǒng)的JTAG驅(qū)動電路的實現(xiàn)方法。
本文采用以下技術(shù)方案解決上述技術(shù)問題:一種基于嵌入式系統(tǒng)的JTAG驅(qū)動電路的實現(xiàn)方法,包括以下步驟:主控制單元由一個嵌入式處理器模塊來完成,處理器模塊完成數(shù)據(jù)的接收、處理以及發(fā)出控制信息,處理器模塊是個可編程的CPU,處理調(diào)試計算機從接口發(fā)送過來的數(shù)據(jù)包,該數(shù)據(jù)包通過處理器模塊解析成一組基本的、目標(biāo)數(shù)字信號處理器能夠識別的操作序列,這組操作序列進而進入下一級驅(qū)動器模塊,驅(qū)動器模塊在處理器模塊的控制下,實現(xiàn)各種調(diào)試操作的JTAG數(shù)據(jù)碼流發(fā)送給目標(biāo)數(shù)字信號處理器;同時將目標(biāo)數(shù)字信號處理器返回的JTAG信號解碼,提交給處理器模塊,該驅(qū)動器模塊同時完成了數(shù)據(jù)的串/并、并/串轉(zhuǎn)換。
3 層次化設(shè)計
圖2 是jtag驅(qū)動電路的數(shù)據(jù)流/控制流原理圖。本設(shè)計是基于嵌入式系統(tǒng)的JTAG驅(qū)動電路,包括處理器模塊(Processor)、地址譯碼器、鎖存模塊(Latch Block)、存儲器(TDI_data RAM、TDI_address RAM、TDO_data RAM)、驅(qū)動器模塊。
3.1 控制器模塊
在該系統(tǒng)中,處理器模塊是作為控制器,在該模塊中,將內(nèi)核(cpu core)、通信接口(interface)、閃存(flash)、控制邏輯(control logic)、JTAG接口(jtag)、鎖相環(huán)(PLL)、計數(shù)器(timer)等掛載在本地總線(local bus)上形成一個典型的最小系統(tǒng)。內(nèi)核(cpu core)起到主控制作用,完成數(shù)據(jù)的接收、處理以及發(fā)出一些控制信息;通信接口(Interface)可以是網(wǎng)口、USB、串口等;閃存(flash)主要存放內(nèi)核(cpu core)的解析軟件;控制邏輯(control logic)主要完成數(shù)據(jù)的讀寫使能產(chǎn)生以及控制類參數(shù)的配置;鎖相環(huán)(PLL)主要由外接時鐘生成幾路系統(tǒng)需要的系統(tǒng)時鐘;計數(shù)器(timer)主要用于解析軟件中需要的計數(shù)功能。圖3是典型最小soc系統(tǒng)。
3.2 鎖存器和地址譯碼器
鎖存模塊(Latch Block)通過數(shù)據(jù)總線與處理器模塊互聯(lián),地址譯碼器通過地址總線與處理器模塊互聯(lián),并且與3塊RAM:TDI_data RAM、TDI_address RAM、TDO_data RAM互聯(lián)。
如圖2所示,處理器模塊主要是協(xié)議棧處理和控制信號的產(chǎn)生;地址譯碼器主要是對處理器模塊地址總線進行譯碼,譯碼后的bit位再與上一級寫請求/讀請求(NWR/NRD),生成下一級模塊的使能信號。參考圖4的處理器模塊地址總線定義說明:總線上的低5位用于對兩塊TDI RAM(測試數(shù)據(jù)輸入隨機存儲器)的尋址:TDI_data RAM和TDI_address RAM;總線上的[7:5]用于3塊RAM的讀寫使能信號的產(chǎn)生:TDI_data RAM、TDI_address RAM、TDO_data RAM;總線上的第8位為JTAG電路的復(fù)位信號;總線上的第9位為空;總線上的第10位為讀寫使能信號位,RW_flag_en有效時,鎖存模塊(Latch Block)會通過數(shù)據(jù)總線將存放到TDI RAM中每一個數(shù)據(jù)的讀寫信號發(fā)送給驅(qū)動器模塊,表示每個數(shù)據(jù)對是讀還是寫;總線上的第11位是數(shù)據(jù)對數(shù)使能信號位,TDI_num_enable有效時,鎖存模塊(Latch Block)會通過數(shù)據(jù)總線將TDI RAM中有效的數(shù)據(jù)對數(shù)導(dǎo)入驅(qū)動器模塊中;總線上的第12位是芯片信息導(dǎo)入使能位,當(dāng)Chip_info_load_en有效時,鎖存模塊(Latch Block)會通過數(shù)據(jù)總線將目標(biāo)芯片的個數(shù)、選中的目標(biāo)芯片編號、鏈信息導(dǎo)入驅(qū)動器模塊中。
3.3 JTAG驅(qū)動器模塊
JTAG驅(qū)動器模塊是一個純硬件邏輯,驅(qū)動器模塊是專門為目標(biāo)數(shù)字信號處理器(Target DSP)的JTAG通信機制定制的codec硬件邏輯,它在處理器模塊最小系統(tǒng)的控制下,實現(xiàn)各種調(diào)試操作的JTAG數(shù)據(jù)流編碼(主要是TCK、TDI、TMS信號的產(chǎn)生),發(fā)送給目標(biāo)數(shù)字信號處理器;同時將目標(biāo)數(shù)字信號處理器返回的JTAG信號TDO解碼,提交給處理器模塊最小系統(tǒng)進行相關(guān)處理。IEEE-1149.1協(xié)議規(guī)定了驅(qū)動器模塊的5個串行的JTAG信號。4個輸入信號(相對于目標(biāo)數(shù)字信號處理器):時鐘信號(TCK)、數(shù)據(jù)信號(TDI)、控制信號(TMS)、復(fù)位信號(TRST_n),1個輸出信號:數(shù)據(jù)返回信號(TDO)。除了復(fù)位信號外的3個輸入信號必須滿足一定的關(guān)系才能實現(xiàn)對目標(biāo)數(shù)字信號處理器的各種操作,此外,返回信號和TMS之間也有對應(yīng)關(guān)系。為了提高JTAG驅(qū)動電路的工作效率,專門用硬件邏輯來實現(xiàn)對3個輸入信號的編碼和1個輸出信號的解碼。根據(jù)在線調(diào)試邏輯的具體特點,掃描鏈的切換操作會頻繁使用,而且操作由固定的基本操作序列構(gòu)成,因此將掃描鏈的切換操作固化在驅(qū)動器模塊中,由硬件高速執(zhí)行,軟件只需要提供相應(yīng)的參數(shù),大大簡化了軟件的負擔(dān)。
驅(qū)動器模塊由以下三部分組成:系統(tǒng)控制單元(System Control)、掃描鏈選擇單元(JTAG_chain_sel)、掃描鏈通道單元(JTAG_Channel),系統(tǒng)控制單元與處理器模塊發(fā)出的控制信號互聯(lián),包括時鐘模塊的選擇、復(fù)位信號的輸入等;掃描鏈選擇單元與鎖存模塊(Latch Block)、處理器模塊發(fā)出的控制信號互聯(lián),發(fā)出包括目標(biāo)芯片的個數(shù)、選中的目標(biāo)芯片編號、鏈編號信息、鏈選擇使能、使能信號的關(guān)閉,而中斷返回由處理器模塊來響應(yīng);掃描鏈通道單元與RAM模塊、鎖存模塊(Latch Block)、處理器模塊發(fā)出的控制信號互聯(lián),完成數(shù)據(jù)流的通路、標(biāo)示讀寫信號、一次性寫入相應(yīng)存儲器的數(shù)據(jù)個數(shù)、通路的使能、通路的關(guān)閉,而中斷返回由處理器模塊來響應(yīng)。參見表1驅(qū)動器模塊源目的信號說明。
4 jtag驅(qū)動電路的軟硬件協(xié)同工作
該驅(qū)動電路是實現(xiàn)的硬件基礎(chǔ),還需要嵌入式軟件配合一起實現(xiàn)完整的功能,其工作原理如圖5。
其軟硬件工作流程為:
調(diào)試計算機通知通信層(Communication Layer)用戶所選擇的命令;通信層對該操作做出響應(yīng),注:通信層是IDE環(huán)境中的一個軟件模塊。根據(jù)調(diào)試操作類型(Reset、Run、StepCycle、StepInst等)做出響應(yīng),生成并行數(shù)據(jù)流,按照通信協(xié)議打包發(fā)送給驅(qū)動器模塊;
調(diào)試計算機通過通信接口發(fā)送過來的一個通信包(高級調(diào)試命令)被JTAG驅(qū)動電路的cpu core解析成一組基本的、目標(biāo)數(shù)據(jù)處理器可以識別的操作序列,這組操作序列進而進入驅(qū)動器模塊,驅(qū)動器模塊對數(shù)據(jù)進行編碼并在TCK的驅(qū)動下向目標(biāo)數(shù)據(jù)處理器芯片的在線調(diào)試邏輯發(fā)送TMS、TDI、TCK;
在TCK的驅(qū)動下,目標(biāo)數(shù)據(jù)處理器完成一次指定的操作,并將TDO數(shù)據(jù)反饋給JTAG驅(qū)動電路;
JTAG驅(qū)動電路根據(jù)JTAG協(xié)議將TDO數(shù)據(jù)進行解碼,并對返回的TDO信息進行分析,確定下一步所要進行的操作,如果有必要,則重復(fù)執(zhí)行上述的步驟;解析軟件在某些操作序列中會進行輪詢以等待目標(biāo)DSP返回指定的信息,否則不會執(zhí)行下一步。
當(dāng)用戶命令的所有分解步驟都執(zhí)行完畢之后,JTAG驅(qū)動電路會通過cpu core將所有的TDO返回信息打包發(fā)送給通信層;通信層接收到TDO應(yīng)答包,并向IDE發(fā)送結(jié)束通知;IDE接到來自通信層的結(jié)束通知后,讀取應(yīng)答包中的信息,并根據(jù)應(yīng)答包的內(nèi)容做出進一步的分析、處理與判斷;
5 結(jié)論
基于嵌入式系統(tǒng)搭建的JTAG驅(qū)動電路具有較好的系統(tǒng)穩(wěn)定性和可靠性,該驅(qū)動電路經(jīng)測試,實際工作速度穩(wěn)定在50 KB/s左右,具有單步、運行、設(shè)置斷點、觀察點、讀寫寄存器、存儲器、DDR2等功能,獲得了用戶的一致好評。
參考文獻:
[1] Institute of Electrical and Electronics Engineers.IEEE 1149.1-2001IEEE Standard Test Access Port and Boundary-Scan Architecture[S].2001.
[2] 田澤.嵌入式系統(tǒng)開發(fā)與應(yīng)用實驗教程[M].北京:北京航空航天大學(xué)出版社,2004.