JTAG定義:(Joint Test Action Group 聯合測試行動小組),是一種國際通用的測試協議。html
JTAG 主要功能有2種或者說對絕大數JTAG來講主要有兩大類:編程
(1) 用來測試芯片的電氣特性,檢測芯片是否有問題;windows
(2) 用來DEBUG,對各種芯片以及其外圍設備進行調試。工具
一個含有JTAG Debug接口模塊的CPU,只要時鐘正常,就能夠經過JTAG接口訪問CPU的內部寄存器和掛在CPU總線上的設備,如FLASH,RAM,SOC(好比4510B,44Box,AT91M系列)內置模塊的寄存器,象UART,Timers,GPIO等等的寄存器。學習
(3) 還經常使用於實現ISP(In-System Programmable;在線編程),對FLASH等器件進行編程。傳統生產流程中先對芯片進行預編程後再裝到板上所以而改變,簡化的流程爲先固定器件到電路板上,再用JTAG編程,從而大大加快工程進度。測試
JTAG 接口組成:也是分爲兩部分。spa
(1) JTAG端口:標準的JTAG接口是4線——TMS、TCK、TDI、TDO,分別爲模式選擇、時鐘、數據輸入和數據輸出線。這裏又分爲並口的和USB接口形式的。操作系統
(2) 控制器:與JTAG 接口兼容的器件能夠是微處理器(MPU)、微控制器(MCU)、PLD、CPL、FPGA、DSP、ASIC 或其它符合IEEE1149.1 規範的芯片。(實際上IEEE1149.1就是規定了一種邊界掃描技術,規定對應於數字集成電路芯片的每一個引腳都設有一個移位寄存單元)debug
JTAG基本原理:在器件內部定義一個TAP(Test Access Port測試訪問口)經過專用的JTAG測試工具對內部節點進行測試。JTAG測試容許多個器件經過JTAG接口串聯在一塊兒,造成一個JTAG鏈,能實現對各個器件分別測試。調試
附1
Atmel的單片機一般有JTAG,ISP,Debugwire這三種接口,它們的區別。
JTAG:能夠進行程序的下載和在線仿真調試,程序下載速度快。只有部分器件支持。在JTAG使能的前提下程序的下載和仿真無需進行其餘設定便可。
ISP:只能進行程序的下載,程序下載速度慢。全部AVR單片機均支持ISP程序下載。
Debugwire:只能進行程序的在線仿真調試不能進行程序的下載。只有比較少的器件支持Debugwire方式仿真。目標MCU的ISP功能和debug WIRE功能是互斥的,使能了目標MCU的 debug WIRE 功能後ISP功能就沒法使用,使能了ISP功能後debug WIRE功能就沒法使用。
附2
在ARM燒寫中,經常使用兩種JTAG仿真器,OpenJtag 和 Jlink
OpenJTAG與JLink的區別比較:
相同點:都同時具有USB轉JTAG、USB轉串口功能
差異:
1. 操做系統:
OpenJTAG能夠用在Windows、Linux下;
JLink只能用在Windows下,在Linux下它的調試功能沒法使用,只能使用「JLink+USB轉串口2合1」中的USB轉串口功能
2. 集成開發環境:
OpenJTAG能用在全部支持GDB調試協議的工具上,好比IAR、Eclipse、winarm,不能用在支持RDI協議的工具上,好比ADS。
JLink支持多種調試協議RDI、GDB調試,幾乎全部Windows下的工具都支持,好比ADS、Keil MDK、IAR
3. 對Flash的燒寫:
OpenJTAG、JLink對FLASH的燒寫功能幾乎同樣強。
可是對於S3C24十、S3C2440來講,OpenJTAG更勝一籌:OpenJTAG能夠燒寫NAND Flash;JLink理論上也行,可是沒人實現這點。
4. 如何選擇:
若是是學習Linux,那麼OpenJTAG比較適用;
若是比較喜歡ADS、Keil等工具,那麼JLink比較適用;
若是你的開發板是S3C24十、S3C2440,那麼OpenJTAG絕對適用
附3 ARM經常使用工具簡介
Oflash 結合JTAG工具下載程序用
Tftpboot 能夠在uboot下用其下載程序至nandflash中(uboot一般是在norflash中的)
Dnw 功能與tftpboot同樣,只不過 dnw在windows7下支持不太好,不如用tftpboot
參考:
〈1〉 http://blog.sina.com.cn/s/blog_7d03f8d30100w6hx.html
〈2〉 http://www.cnblogs.com/TaigaCon/archive/2012/12/20/2826941.html
〈3〉 度娘