我對嵌入式系統還很陌生,我一直看到這個詞一直在使用,但是我不太明白它是什麼。在線快速搜索即可找到以下Wikipedia頁面: https://en.wikipedia.org/wiki/Joint_Test_Action_Group,將其描述為某種調試協議。但是在其他情況下,它就像能夠像程序員一樣對芯片的存儲器進行編程。它是什麼?
我對嵌入式系統還很陌生,我一直看到這個詞一直在使用,但是我不太明白它是什麼。在線快速搜索即可找到以下Wikipedia頁面: https://en.wikipedia.org/wiki/Joint_Test_Action_Group,將其描述為某種調試協議。但是在其他情況下,它就像能夠像程序員一樣對芯片的存儲器進行編程。它是什麼?
就像USB,SPI,I2C和其他“總線”一樣,它有許多受歡迎的用途,不僅限於:
特別是一種正在測試中在每個零件上投入過多的矽之前,例如,當芯片仍在晶片上時,您可以檢查大部分零件。劃片可能會損壞晶圓,因此您想再次測試,但也許要在包裝之前,之後進行。
您可以使用它在板上進行邊界掃描。您可以在生產線上使用電路板(必須正確設計電路板,並且一定比例的芯片必須支持此功能),但是您可以進行低速連接測試,刺激走線一端的引腳並掃描另一端
因為這些芯片已經具有這些專用引腳,所以對於處理器來說,為什麼不使用與該接口相同的接口?與片上調試器(OCD)對話的一種方法,在處理器中設計一些東西,並允許通過jtag與之對話。
這是一種通用的方式,可讓您隔離要向其中發送一系列比特或從中獲取一系列比特的鏈上的事物您想與之交談的每種事物的方式可以針對從小到大的各種位數進行設計。對於調試器,您自然會使其寫入或讀取芯片中寄存器大小的東西-可能是16位寄存器或32位。但是對於矽片或電路板測試,您的掃描鏈可能只有幾十個位。如果需要,您要處理的每件事情的大小都可以與其他事物有所不同,這使得它成為一種通用性很強的總線,其引腳數量相對較少,對於這些類型的用例來說很有吸引力。
也許由於軟件調試的普及,他們現在有一些兩種引腳的解決方案可以節省微控制器的引腳數,也許其他人會採用,也許不是。
JTAG最初是用於在組裝後測試PCB的接口。可以通過JTAG端口控制和讀取芯片上的IO線,從而可以執行板級測試序列。後來,它也開始用作編程和調試接口。通過JTAG可以使用的功能取決於您要處理的特定IC。
與大多數其他編程接口相比,JTAG的一個優勢是可以採用菊花鏈方式連接設備。因此,一個JTAG端口可用於對多個設備進行編程/調試/測試(儘管我建議您設計系統,以便可以將不同品牌的芯片劃分到不同的鏈上,而不幸的是,低級JTAG協議已相當標準化)來對芯片進行編程/調試)。
JTAG有點奇怪。首先,該術語可以指定特定的連接器和協議,包括時鐘信號(TCK),模式選擇(TMS)和數據輸入/輸出(TDI / TDO)。這包括設備網絡,其中每個設備的TDO在所謂的掃描鏈中連接到下一個設備的TDI。 TMS用於將所有設備同時置於各種模式。
掃描鏈上的設備通常以一個大移位寄存器的形式連接,該移位寄存器由每個單獨設備中的寄存器組成。當設備處於SHIFT_IR或SHIFT_DR狀態時,它們連接到兩個臨時寄存器之一的掃描鏈:指令寄存器和數據寄存器。
一旦移入值,便會進入UPDATE_IR或UPDATE_DR模式可以通過在切換TCK時適當設置TMS來激活。此時,該值移入寄存器“生效”。例如,將各種序列移入FPGA的IR並轉換為UPDATE_IR,將導致FPGA進入各種模式,例如配置,回讀,正常運行時,或訪問設計中實例化的特定用戶寄存器和特定於JTAG的原語。 p>
同樣,捕獲狀態可用於從設備“讀取”一個值並將其放入IR或DR中,以通過TDO移出並最終由JTAG程序員讀取。
JTAG定義了一個串行協議和一些命令,以允許訪問複雜IC中的內部寄存器。這樣一來,測試人員就可以使用很少的針腳以標準方式獲得 observability 和 controllability 。
最初用於“邊界掃描”,其中所有I / O引腳可以由環繞芯片的大型移位寄存器讀取和驅動。但是,很快就增加了它,增加了更多的移位寄存器來訪問芯片內部,包括存儲器。
您很少對JTAG進行位衝擊,訪問通常是通過IC製造商提供的庫或驅動程序進行的。,並由測試系統和測試訪問適配器使用。
JTAG是什麼意思,JTAG是什麼。正如其他人指出的那樣,JTAG'是'用於製造測試的行業標準總線接口,如 J oint T est A 部分 G 組。
對嵌入式軟件開發人員而言,JTAG的“含義”是SoC /微處理器上的調試接口,用於對芯片上運行的嵌入式軟件進行外部調試。市場上幾乎所有的CPU / SoC都不僅使用JTAG接口進行製造測試,而且還使用JTAG接口進行軟件調試。您會在從服務器類x86 CPU到價格低於50美元的家用WiFi路由器的所有產品上找到JTAG接口。使用正確的接口硬件和正確的軟件,這些接口將使您能夠讀取/寫入內存,設置斷點和單步代碼。
當然關鍵是要獲得正確的硬件和軟件。即使基本的JTAG接口是標準化的,設備中可用的特定軟件調試功能也可能沒有。 JTAG就像TCP / IP。它存在於應用程序堆棧的中間。您需要正確的物理層與設備進行通信(即,這意味著使用10-Base-2嗎?!?!?),並且還需要上面的正確應用程序軟件(這意味著我需要Gopher)客戶?!?!?!)。但是,ARM生態系統的優勢已導致那裡的某種程度的標準化(請參閱OpenOCD)。
您還詢問了有關使用JTAG編程閃存的問題。是的,某些軟件也將其用於此目的。SoC可以提供從CPU存儲器地址空間讀取/寫入的JTAG功能,可以提供對閃存控制器的直接訪問,而JTAG至少可以提供對芯片邊緣I / O引腳的原始低級別訪問(這是JTAG的初衷是為了在製造測試期間實現芯片到芯片互連的連續性測試,即“ JTAG邊界掃描”)。聰明的程序員可以使用這些工具中的任何一種來驅動對閃存芯片進行重新編程所需的信號,以防設備意外“變磚”。