JTAG

JTAG

聯合測試行為組織
JTAG是英文“JointTestActionGroup(聯合測試行為組織)”的詞頭字母的簡寫,該組織成立于1985年,是由幾家主要的電子制造商發起制訂的PCB和IC測試标準。JTAG建議于1990年被IEEE批準為IEEE1149.1-1990測試訪問端口和邊界掃描結構标準。該标準規定了進行邊界掃描所需要的硬件和軟件。自從1990年批準後,IEEE分别于1993年和1995年對該标準作了補充,形成了現在使用的IEEE1149.1a-1993和IEEE1149.1b-1994。JTAG主要應用于:電路的邊界掃描測試和可編程芯片的在線系統編程。
  • 中文名:聯合測試行為組織
  • 外文名:
  • 簡稱:
  • 主管單位:
  • 登記單位:
  • 屬性:
  • 社團地址:
  • 主要成就:
  • 英文名:Joint Test Action Group
  • 簡寫:JTAG
  • 成立時間:1985年

國際協議

JTAG也是一種國際标準測試協議(IEEE 1149.1兼容),主要用于芯片内部測試。現今多數的高級器件都支持JTAG協議,如DSP、FPGA、ARM、部分單片機器件等。标準的JTAG接口是4線:

TMS、TCK、TDI、TDO,分别為模式選擇、時鐘、數據輸入和數據輸出線。相關JTAG引腳的定義為:TCK為測試時鐘輸入;TDI為測試數據輸入,數據通過TDI引腳輸入JTAG接口;TDO為測試數據輸出,數據通過TDO引腳從JTAG接口輸出;TMS為測試模式選擇,TMS用來設置JTAG接口處于某種特定的測試模式;TRST為測試複位,輸入引腳,低電平有效。GND

TI還定義了一種叫SBW-JTAG的接口,用來在引腳較少的芯片上通過最少的利用引腳實現JTAG接口,它隻有兩條線,SBWTCK,SBWTDIO。實際使用時一般通過四條線連接,VCC,SBWTCK,SBWTDIO,GND,這樣就可以很方便的實現連接,又不會占用大量引腳。

JTAG最初是用來對芯片進行測試的,基本原理是在器件内部定義一個TAP(Test Access Port測試訪問口)通過專用的JTAG測試工具對内部節點進行測試。JTAG測試允許多個器件通過JTAG接口串聯在一起,形成一個JTAG鍊,能實現對各個器件分别測試。現今,JTAG接口還常用于實現ISP(In-System Programmable;在線編程),對FLASH等器件進行編程。

JTAG編程方式是在線編程,傳統生産流程中先對芯片進行預編程後再裝到闆上因此而改變,簡化的流程為先固定器件到電路闆上,再用JTAG編程,從而大大加快工程進度。JTAG接口可對DSP芯片内部的所有部件進行編程。

在硬件結構上,JTAG 接口包括兩部分:JTAG 端口和控制器。與JTAG接口兼容的器件可以是微處理器(MPU)、微控制器(MCU)、PLD、CPL、FPGA、DSP、ASIC 或其它符合IEEE1149.1 規範的芯片。IEEE1149.1标準中規定對應于數字集成電路芯片的每個引腳都設有一個移位寄存單元,稱為邊界掃描單元BSC。它将JTAG 電路與内核邏輯電路聯系起來,同時隔離内核邏輯電路和芯片引腳。由集成電路的所有邊界掃描單元構成邊界掃描寄存器BSR。邊界掃描寄存器電路僅在進行JTAG測試時有效,在集成電路正常工作時無效,不影響集成電路的功能。

掃描技術

JTAG是一種所謂的邊界掃描技術。

邊界掃描測試是在20世紀80年代中期作為解決PCB物理訪問問題的JTAG接口發展起來的,這樣的問題是新的封裝技術導緻電路闆裝配日益擁擠所産生的。邊界掃描在芯片級層次上嵌入測試電路,以形成全面的電路闆級測試協議。利用邊界掃描--自1990年以來的行業标準IEEE 1149.1--您甚至能夠對最複雜的裝配進行測試、調試和在系統設備編程,并且診斷出硬件問題。

邊界掃描的優點:

通過提供對掃描鍊的IO的訪問,可以消除或極大地減少對電路闆上物理測試點的需要,這就會顯著節約成本,因為電路闆布局更簡單、測試夾具更廉價、電路中的測試系統耗時更少、标準接口的使用增加、上市時間更快。除了可以進行電路闆測試之外,邊界掃描允許在PCB貼片之後,在電路闆上對幾乎所有類型的CPLD和閃存進行編程,無論尺寸或封裝類型如何。在系統編程可通過降低設備處理、簡化庫存管理和在電路闆生産線上集成編程步驟來節約成本并提高産量。

邊界掃描原理:

IEEE 1149.1 标準規定了一個四線串行接口(第五條線是可選的),該接口稱作測試訪問端口(TAP),用于訪問複雜的集成電路(IC),例如微處理器、DSP、ASIC和CPLD。除了TAP之外,混合IC也包含移位寄存器和狀态機,以執行邊界掃描功能。在TDI(測試數據輸入)引線上輸入到芯片中的數據存儲在指令寄存器中或一個數據寄存器中。串行數據從TDO(測試數據輸出)引線上離開芯片。邊界掃描邏輯由TCK(測試時鐘)上的信号計時,而且TMS(測試模式選擇)信号驅動TAP控制器的狀态。TRST(測試重置)是可選項。根據相關數據手冊中的說明,TRST、TDI、TMS引腳上需要接一個10KΩ的上拉電阻,而TCK需要接一個10KΩ的下拉電阻。

在PCB上可串行互連多個可兼容掃描功能的IC,形成一個或多個掃描鍊,每一個鍊都由其自己的TAP。每一個掃描鍊提供電氣訪問,從串行TAP接口到作為鍊的一部分的每一個IC上的每一個引線。在正常的操作過程中,IC執行其預定功能,就好像邊界掃描電路不存在。但是,當為了進行測試或在系統編程而激活設備的掃描邏輯時,數據可以傳送到IC中,并且使用串行接口從IC中讀取出來。這樣數據可以用來激活設備核心,将信号從設備引線發送到PCB上,讀出PCB的輸入引線并讀出設備輸出。

嵌入式系統設計中,一些高檔的微處理器都帶有JTAG接口,方便多目标系統進行測試,同時還可以實現flash編程。

接口解讀

JTAG接口解讀

通常所說的JTAG大緻分兩類,一類用于測試芯片的電氣特性,檢測芯片是否有問題;一類用于Debug;一般支持JTAG的CPU内都包含了這兩個模塊。

一個含有JTAG Debug接口模塊的CPU,隻要時鐘正常,就可以通過JTAG接口訪問CPU的内部寄存器和挂在CPU總線上的設備,如FLASH,RAM,SOC(比如4510B,44Box,AT91M系列)内置模塊的寄存器,像UART,Timers,GPIO等等的寄存器。

上面說的隻是JTAG接口所具備的能力,要使用這些功能,還需要軟件的配合,具體實現的功能則由具體的軟件決定。

例如下載程序到RAM功能。了解SOC的都知道,要使用外接的RAM,需要參照SOC DataSheet的寄存器說明,設置RAM的基地址,總線寬度,訪問速度等等。有的SOC則還需要Remap,才能正常工作。運行Firmware時,這些設置由Firmware的初始化程序完成。但如果使用JTAG接口,相關的寄存器可能還處在上電值,甚至時錯誤值,RAM不能正常工作,所以下載必然要失敗。要正常使用,先要想辦法設置RAM。在ADW中,可以在Console窗口通過Let 命令設置,在AXD中可以在Console窗口通過Set命令設置。

下面是一個設置AT91M40800的命令序列,關閉中斷,設置CS0-CS3,并進行Remap,适用于AXD(ADS帶的Debug)

setmem 0xfffff124,0xFFFFFFFF,32 ---關閉所有中斷

setmem 0xffe00000,0x0100253d,32 ---設置CS0

setmem 0xffe00004,0x02002021,32 ---設置CS1

setmem 0xffe00008,0x0300253d,32 ---設置CS2

setmem 0xffe0000C,0x0400253d,32 ---設置CS3

setmem 0xffe00020,1,32 ---Remap

如果要在ADW(SDT帶的DEBUG)中使用,則要改為:

let 0xfffff124=0xFFFFFFFF ---關閉所有中斷

let 0xffe00000=0x0100253d ---設置CS0

let 0xffe00004=0x02002021 ---設置CS1

let 0xffe00008=0x0300253d ---設置CS2

let 0xffe0000C=0x0400253d ---設置CS3

let 0xffe00020=1 ---Remap

為了方便使用,可以将上述命令保存為一個文件config.ini,在Console窗口輸入 ob config.ini 即可執行。

使用其他debug,大體類似,隻是命令和命令的格式不同。

設置RAM時,設置的寄存器以及寄存器的值必須和要運行程序的設置一緻。一般編譯生成的目标文件是ELF格式,或類似的格式,包含有目标碼運行地址,運行地址在Link時候确定。Debug下載程序時根據ELF文件中的地址信息下載程序到指定的地址。如果在把RAM的基地址設置為0x10000000,而在編譯的時候指定Firmware的開始地址在0x02000000,下載的時候,目标碼将被下載到0x02000000,顯然下載會失敗。

通過JTAG下載程序前應關閉所有中斷,這一點和Firmware初始化時關閉中斷的原因相同。在使用JTAG接口的時候,各中斷的使能未知,尤其是FLASH裡有可執行碼的情況,可能會有一些中斷被使能。使用JTAG下載完代碼,要執行時,有可能因為未完成初始化就産生了中斷,導緻程序異常。所以,需要先關閉中斷,一般通過設置SOC的中斷控制寄存器完成。

使用JTAG寫Flash。在理論上,通過JTAG可以訪問CPU總線上的所有設備,所以應該可以寫FLASH,但是FLASH寫入方式和RAM大不相同,需要特殊的命令,而且不同的FLASH擦除,編程命令不同,而且塊的大小,數量也不同,很難提供這一項功能。所以一般Debug不提供寫Flash功能,或者僅支持少量幾種Flash。

現今就我知道的,針對ARM,隻有FlashPGM這個軟件提供寫FLASH功能,但使用也非常麻煩。AXD,ADW都不提供寫FLASH功能。寫Flash的方法可以是,自己寫一個簡單的程序,專門用于寫目标闆的FLASH,利用JTAG接口,下載到目标闆,再把要燒寫的目标碼裝成BIN格式,也下到目标闆(地址和燒FLASH的程序的地址不同),然後運行已經下載的燒FLASH的程序。使用這種方式,比起FlashPGM的寫Flash,速度似乎要快一些。

上面說的是以前的情形,現今情況有變——哲遠科技已經開發出成熟JTAG燒寫軟件,并且經過多家公司的驗證,産品主要特點:

不需要借助仿真器、調試器,不需要原廠軟件,大大降低成本、提供生産靈活性。

不需要使用帶插座的FLASH,提高可靠性。

與CPU架構無關,支持PowerPC/ARM/MIPS等架構的CPU或SoC。

使用CPU 的JTAG 接口,無需增加任何額外電路。

支持numonyx, Spansion, Intel, AMD, ST, SST, EON,等廠家的NOR FLASH。且提供後續新FLASH型号的全程支持。

不需要CPU任何啟動代碼即可完成燒寫。

即使CPU死機或者因Flash數據損壞導緻闆卡不能啟動時,同樣可以回讀Flash内容,為維修調試提供依據。

支持塊操作(擦除、加鎖、解鎖)。

除了編程功能以外,還可以通過點燈等操作驗證JTAG器件的基本功能。

使用WH-USB-JTAG電纜,加載FLASH速度比并口電纜快10倍左右。

可以讀寫其他芯片

通過程序可以讀寫與JTAG器件(通常是CPU)相連的其他芯片(如CPLD, ASIC等),這樣在CPU沒有跑起來或沒有軟件的情況下甚至都可以去對單闆做一些調試,從而提高效率,縮短開發周期。

JTAG電纜

關于簡單JTAG電纜

目前有各種各樣簡單JTAG電纜,其實隻是一個電平轉換電路,同時還起到保護作用。JTAG的邏輯則由運行在PC上的軟件實現,所以在理論上,任何一個簡單JTAG電纜,都可以支持各種應用軟件,如Debug等。可以使用同一個JTAG電纜寫Xilinx CPLD,AXD/ADW調試程序。關鍵在于軟件的支持,大多數軟件都不提供設定功能,因而隻能支持某種JTAG電纜。

關于簡單JTAG電纜的速度

JTAG是串行接口,使用打印口的簡單JTAG電纜,利用的是打印口的輸出帶鎖存的特點,使用軟件通過I/O産生JTAG時序。由JTAG标準決定,通過JTAG 寫/讀一個字節要一系列的操作,根據我的分析,使用簡單JTAG電纜,利用打印口,通過JTAG輸出一個字節到目标闆,平均需要43個打印口I/O, 在我機器上(P4 1.7G),每秒大約可進行660K次 I/O 操作,所以下載速度大約在660K/43, 約等于15K Byte/S. 對于其他機器,I/O速度大緻相同,一般在600K~800K.

關于如何提高JTAG下載速度。

很明顯,使用簡單JTAG電纜無法提高速度。要提高速度,大緻有兩種辦法,

1。使用嵌入式系統提供JTAG接口,嵌入式系統和微機之間通過USB/Ethernet相連,這要求使用MCU。

2。使用CPLD/FPGA提供JTAG接口,CPLD/FPGA和微機之間使用EPP接口(一般微機打印口都支持EPP模式),EPP接口完成微機和CPLD/FPGA之間的數據傳輸,CPLD/FPGA完成JTAG時序。

這兩種方法本人都實現過。第一個方法可以達到比較高的速度,實測超過了200KByte/S(注意:是Byte,不是Bit);但是相對來說,硬件複雜,制造相對複雜。第二種相對來說,下載速度要慢一些,最快時達到96KByte/S,但電路簡單,制造方便,而且速度可以滿足需要。第二種方案還有一個缺點,由于進行I/O操作時,CPU不會被釋放,因此在下載程序時,微機CPU顯得很繁忙。

總的來說,對于個人愛好者來說,第二種方法更可取。

電氣特性

JTAG的接口是一種特殊的4/5個接腳接口連到芯片上,所以在電路版上的很多芯片可以将他們的JTAG接腳通過Daisy Chain的方式連在一起,并且Probe隻需連接到一個“JTAG端口”就可以訪問一塊電路闆上的所有IC。這些連接引腳是:

TDI(測試數據輸入)

TDO(測試數據輸出)

TCK(測試時鐘)

TMS(測試模式選擇)

TRST(測試複位)可選。

JTAG鍊

因為隻有一條數據線,通信協議有必要像其他串行設備接口,如SPI一樣為串行傳輸。時鐘由TCK引腳輸入。配置是通過TMS引腳采用狀态機的形式一次操作一位來實現的。每一位數據在每個TCK時鐘脈沖下分别由TDI和TDO引腳傳入或傳出。可以通過加載不同的命令模式來讀取芯片的标識,對輸入引腳采樣,驅動(或懸空)輸出引腳,操控芯片功能,或者旁路(将TDI與TDO連通以在邏輯上短接多個芯片的鍊路)。TCK的工作頻率依芯片的不同而不同,但其通常工作在10-100MHz(每位10-100ns)。

當在集成電路中進行邊界掃描時,被處理的信号是在同一塊IC的不同功能模塊間的,而不是不同IC之間的。

TRST引腳是一個可選的相對待測邏輯低電平有效的複位開關——通常是異步的,但有時也是同步的,依芯片而定。如果該引腳沒有定義,則待測邏輯可由同步時鐘輸入複位指令而複位。

盡管如此,極少消費類産品提供外部的JTAG端口接口,但作為開發樣品的殘留,這些接口在印刷電路闆上十分常見。在研發後,這些接口常常為反向工程提供了非常良好的途徑。

JTAG專業術語:

    Group, Joint Test Action (JTAG)

測試行動聯合組織

2.Joint Test Action Group (JTAG)

測試行動聯合組織

相關詞條

相關搜索

其它詞條