題:
什麼是JTAG?
UnTraDe
2016-03-27 18:26:44 UTC
view on stackexchange narkive permalink

我對嵌入式系統還很陌生,我一直看到這個詞一直在使用,但是我不太明白它是什麼。在線快速搜索即可找到以下Wikipedia頁面: https://en.wikipedia.org/wiki/Joint_Test_Action_Group,將其描述為某種調試協議。但是在其他情況下,它就像能夠像程序員一樣對芯片的存儲器進行編程。它是什麼?

[這個問題]中隱藏了一些有用的寶石。
我給dwelch +1了。另外,有時會將JTAG誤用作動詞,通常意思是“調試/測試”某事物。一個“ JTAG正在做某事”的人實際上可能正在使用設備製造商與物理JTAG引腳(即SWD)重疊的不同協議。您可以使用SWD或JTAG,但不能同時使用兩者。但是,沒有人社署的設備(“ swoods”?)。
是的,您可以使用JTAG進行編程
五 答案:
old_timer
2016-03-27 18:45:48 UTC
view on stackexchange narkive permalink

就像USB,SPI,I2C和其他“總線”一樣,它有許多受歡迎的用途,不僅限於:

  • 特別是一種正在測試中在每個零件上投入過多的矽之前,例如,當芯片仍在晶片上時,您可以檢查大部分零件。劃片可能會損壞晶圓,因此您想再次測試,但也許要在包裝之前,之後進行。

  • 您可以使用它在板上進行邊界掃描。您可以在生產線上使用電路板(必須正確設計電路板,並且一定比例的芯片必須支持此功能),但是您可以進行低速連接測試,刺激走線一端的引腳並掃描另一端

  • 因為這些芯片已經具有這些專用引腳,所以對於處理器來說,為什麼不使用與該接口相同的接口?與片上調試器(OCD)對話的一種方法,在處理器中設計一些東西,並允許通過jtag與之對話。

這是一種通用的方式,可讓您隔離要向其中發送一系列比特或從中獲取一系列比特的鏈上的事物您想與之交談的每種事物的方式可以針對從小到大的各種位數進行設計。對於調試器,您自然會使其寫入或讀取芯片中寄存器大小的東西-可能是16位寄存器或32位。但是對於矽片或電路板測試,您的掃描鏈可能只有幾十個位。如果需要,您要處理的每件事情的大小都可以與其他事物有所不同,這使得它成為一種通用性很強的總線,其引腳數量相對較少,對於這些類型的用例來說很有吸引力。

也許由於軟件調試的普及,他們現在有一些兩種引腳的解決方案可以節省微控制器的引腳數,也許其他人會採用,也許不是。

JTAG是否有技術方面的用途可用於這些用途,還是僅出於歷史原因?
好好閱讀維基百科的文章。我的意見是因為它已經存在並連接到板和芯片中,並且因為它足夠靈活以支持其他用途,並且至少有些已經具有工具,所以有人必須說為什麼不將其用於其他用途。我認為它的靈活性與引腳數使其非常有吸引力。對於調試器或電路編程,還有並且將繼續存在其他解決方案,但是由於有了FTDI MPSSE指令以及FTDI在所有USB方面都取得了成功,因此廉價的jtag工具現已廣泛可用。
Peter Green
2016-03-27 18:48:48 UTC
view on stackexchange narkive permalink

JTAG最初是用於在組裝後測試PCB的接口。可以通過JTAG端口控制和讀取芯片上的IO線,從而可以執行板級測試序列。後來,它也開始用作編程和調試接口。通過JTAG可以使用的功能取決於您要處理的特定IC。

與大多數其他編程接口相比,JTAG的一個優勢是可以採用菊花鏈方式連接設備。因此,一個JTAG端口可用於對多個設備進行編程/調試/測試(儘管我建議您設計系統,以便可以將不同品牌的芯片劃分到不同的鏈上,而不幸的是,低級JTAG協議已相當標準化)來對芯片進行編程/調試)。

nanofarad
2016-03-27 18:42:32 UTC
view on stackexchange narkive permalink

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程序員讀取。

Neil_UK
2016-03-27 18:46:27 UTC
view on stackexchange narkive permalink

JTAG定義了一個串行協議和一些命令,以允許訪問複雜IC中的內部寄存器。這樣一來,測試人員就可以使用很少的針腳以標準方式獲得 observability controllability

最初用於“邊界掃描”,其中所有I / O引腳可以由環繞芯片的大型移位寄存器讀取和驅動。但是,很快就增加了它,增加了更多的移位寄存器來訪問芯片內部,包括存儲器。

您很少對JTAG進行位衝擊,訪問通常是通過IC製造商提供的庫或驅動程序進行的。,並由測試系統和測試訪問適配器使用。

那麼,芯片實際上需要通過硬件和軟件來支持JTAG嗎?
@UnTraDe不,該芯片在硬件上支持JTAG,並且可以在軟件中支持(例如,FPGA可以公開JTAG與用戶設計之間的某些接口),但是不需要芯片上具有軟件支持。用於通過JTAG與設備交互的工具將同時具有軟件和硬件支持(計算機上的軟件,以及連接到該計算機的JTAG編程器方面的硬件)
Tribal
2016-03-29 07:58:47 UTC
view on stackexchange narkive permalink

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邊界掃描”)。聰明的程序員可以使用這些工具中的任何一種來驅動對閃存芯片進行重新編程所需的信號,以防設備意外“變磚”。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...