jtag的基本原理與調(diào)試原理
JTAG最初是用來對芯片進(jìn)行測試的,基本原理是在器件內(nèi)部定義一個(gè)TAP(Test Access Port?測試訪問口)通過專用的JTAG測試工具對進(jìn)行內(nèi)部節(jié)點(diǎn)進(jìn)行測試。JTAG測試允許多個(gè)器件通過JTAG接口串聯(lián)在一起,形成一個(gè)JTAG鏈,能實(shí)現(xiàn)對各個(gè)器件分別測試。現(xiàn)在,JTAG接口還常用于實(shí)現(xiàn)ISP(In-System Programmable?在線編程),對FLASH等器件進(jìn)行編程。
JTAG編程方式是在線編程,傳統(tǒng)生產(chǎn)流程中先對芯片進(jìn)行預(yù)編程實(shí)現(xiàn)再裝到板上因此而改變,簡化的流程為先固定器件到電路板上,再用JTAG編程,從而大大加快工程進(jìn)度。JTAG接口可對PSD芯片內(nèi)部的所有部件進(jìn)行編程
簡單地說,JTAG的工作原理可以歸結(jié)為:在器件內(nèi)部定義一個(gè)TAP(TestAccessPort,測試訪問口),通過專用的JTAG測試工具對內(nèi)部節(jié)點(diǎn)進(jìn)行測試和調(diào)試。
邊界掃描邊界掃描(Boundary-Scan)即在芯片的每個(gè)輸入輸出管腳上都增加一個(gè)移位寄存器單元(Boundary-Scan Register Cell),因?yàn)檫@些移位寄存器單元分布在芯片的邊界上,所以被稱為邊界掃描寄存器。在JTAG 調(diào)試中,邊界掃描是一個(gè)很重要的概念,當(dāng)需要調(diào)試芯片時(shí),這些寄存器將芯片與外圍電路隔離,實(shí)現(xiàn)對芯片輸入輸出信號的觀察和控制:對于輸入管腳,可以通過與之相連的邊界掃描寄存器單元把數(shù)據(jù)加載到該管腳中;對于輸出管腳,可以通過與之相連的邊界掃描寄存器“捕獲”(CAPTURE)該管腳上的輸出信號;正常運(yùn)行狀態(tài)下,這些邊界掃描寄存器單元對芯片是透明的,所以正常的運(yùn)行不會(huì)受到影響。另外,芯片輸入輸出管腳上的邊界掃描(移位)寄存器單元可以相互連接起來,在芯片的周圍形成一個(gè)邊界掃描鏈(Boundary-Scan Chain),它可以串行的輸入和輸出,通過相應(yīng)的時(shí)鐘信號和控制信號,實(shí)現(xiàn)對處在調(diào)試狀態(tài)下的芯片的輸入和輸出狀態(tài)的觀察和控制。
在CPU外圍,處理器內(nèi)部包含了JTAG的硬件實(shí)現(xiàn),并且向外界提供接口,也就是上面所說的TMS、TCK、TDI、TDO四個(gè)引腳。
這里的CPU:是指運(yùn)算處理單元,只包含了內(nèi)部寄存器以及運(yùn)算單元等基本部件。
這里的處理器:是指CPU 擴(kuò)展芯片,不是SoC。
JTAG如何用于芯片測試呢? 其中用到的最主要部件就是邊界掃描鏈。命名為邊界掃描鏈,是由于它位置處于處理器的邊界上。
我們知道CPU是通過引腳與外圍交流的,所有的數(shù)據(jù)都會(huì)通過引腳輸入或者輸出,而JTAG就是通過監(jiān)控引腳的信號達(dá)到芯片測試的目的。而邊界掃描鏈就是在引腳上的一個(gè)部件。如下圖:
通過邊界掃描鏈,當(dāng)有信號輸入的時(shí)候,邊界掃描鏈就能獲取信號,當(dāng)CPU要輸出信號的時(shí)候,邊界掃描鏈也能獲取要輸出的信號。另外,也可以通過邊界掃描鏈來直接向外部輸出信號。
無論是信號的抓取還是輸出,都需要有接口來保存這些信號,TDI 跟 TDO 就是做這樣一些工作的。如圖:
本來邊界掃描鏈保存著引腳上的信號,當(dāng)通過TDI引腳輸入我們自己的信號的時(shí)候,會(huì)發(fā)生沿上面紅線方向的移位操作,
TDI ——〉 邊界掃描鏈 —— 〉 TDO
就能從TDO獲取邊界掃描鏈上的信號,我們從TDI輸入的信號也會(huì)到邊界掃描鏈上去。
在CPU跟外界通信的引腳上的數(shù)據(jù)無非就是 指令 跟 數(shù)據(jù)信號(包括地址跟數(shù)據(jù)) 兩種。但是這兩者的結(jié)合形成了一個(gè)完整的程序,能對它們進(jìn)行監(jiān)控就表明我們能進(jìn)行程序的調(diào)試。一般的芯片都會(huì)提供幾條獨(dú)立的邊界掃描鏈,對邊界掃描鏈的控制主要是通過 TAP(Test Access Port) Controller來完成的。
上面的只是jtag最基本的原理,要對程序更好的調(diào)試還需要控制部件,還有更多寄存器的結(jié)合等等。