JTAG nedir?


30

Gömülü sistemler için oldukça yeniyim ve bu terimin her zaman kullanıldığını görmeye devam ediyorum, ancak bunun ne olduğunu tam olarak anlayamıyorum. Çevrimiçi hızlı bir arama, bu Wikipedia sayfasını sağlar: https://en.wikipedia.org/wiki/Joint_Test_Action_Group , hata ayıklama için bir tür protokol olarak nitelendirir. Ancak diğer bağlamlarda, bir çipin belleğini bir programcı gibi programlayabildiği gibi kullandı. Bu ne?


4
Bu soruya gizlenmiş bazı faydalı taşlar var .
David,

2
Dwelch'e + 1 verdim. Ek olarak, JTAG bazen yanlış bir şey olarak "hata ayıklama / test etme" anlamında bir fiil olarak kullanılır. Bir şeyi "JTAG 'yapan" bir kişi aslında, cihaz üreticisinin fiziksel JTAG pinleriyle (yani SWD) üst üste bindiği farklı bir protokol kullanıyor olabilir. SWD veya JTAG yapabilirsiniz, ancak ikisini birden değil. Yine de hiç kimse SWD'leri (“terletemiyor”?) Cihazlarını kullanıyor.
Jon

Evet, JTAG
Snoop

Yanıtlar:


21

USB, SPI, I2C ve diğer "veriyolları" gibidir ve bunlarla sınırlı olmamak üzere bir dizi popüler kullanımı vardır:

  • Özellikle, her parçaya çok fazla yatırım yapmadan önce silikonun test edilmesi, örneğin bir yonga hala gofret üzerinde iken parçanın çoğunu kontrol edebilirsiniz. Gofretin zar atması zarar görebilir, bu yüzden tekrar test etmek istersiniz ama belki bunu paketlemeden önce, belki sonra yapabilirsiniz.

  • Kartlarda sınır taraması yapmak için kullanabilirsiniz. Bir üretim hattına bir pano alabilir (panonun doğru tasarlanmış olması ve fişlerin bir yüzdesinin bunu desteklemesi şarttır) ancak düşük hızlı bağlantı testleri yapabilir, bir izin ucundaki pimi uyarabilir ve diğerini tarayabilirsiniz pano tasarımına göre bunların bağlı olup olmadığını görmek için parçalar.

  • Yongalar zaten bu özel pinlere sahip olduklarından, işlemciler için, bir yonga hata ayıklayıcısına (OCD) konuşma yöntemiyle aynı arayüzü kullanmayın, işlemcide bir şeyler tasarlayın ve bunun jtag aracılığıyla konuşulmasına izin verin.

Bu, bir dizi bit göndermek istediğiniz zincirdeki şeyleri izole etmenize veya bir dizi bit elde etmenize olanak tanıyan, konuşmak istediğiniz her şeyin çeşitli sayılar için tasarlanabileceği bir yöntemdir. Bit sayısının az bir sayıdan büyük bir sayıya çıkarılması. Bir hata ayıklayıcı için, çipinizdeki bir kayıt büyüklüğünde bir şeye yazma ya da okumadan doğal olarak sahip olabilirsiniz - belki bir 16 bit kayıt ya da 32 bit. Ancak silikon veya tahta testi için tarama zinciriniz düzinelerce bit olabilir. Adreslediğiniz her bireyin boyutu, istediğinizde, başka herhangi bir şeyden farklı olabilir; bu, bu tür kullanım durumları için çekici olan nispeten az sayıda pimli, çok yönlü bir veri yolu yapar.

Belki de yazılım hata ayıklama popülerliği nedeniyle, şimdi mikrodenetleyiciler için pim sayısından tasarruf etmek için iki pim çözümüne sahipler ve belki de diğerleri bunu benimseyecek, belki de kabul etmeyeceklerdir.


JTAG'ın bu kullanımlara borç veren teknik yönleri var mı, yoksa sadece tarihsel nedenlerden dolayı mı?
Owen,

Peki, wikipedia makalesini okuyun. Benim düşüncem, zaten orada olduğu ve tahtalara ve talaşlara bağlanmış olması ve diğer kullanımları destekleyecek kadar esnek olması ve en azından bazılarının yerinde araçları olması nedeniyle birinin başkaları için neden kullanılmadığını söylemiş olması gerekir. Esneklik vs pin sayısı çok çekici kılan düşünüyorum. Hata ayıklayıcılar veya devre programlaması için başka çözümler var ve olmaya devam ediyorlar, ancak FTDI MPSSE talimatları ve FTDI'nın genel olarak her şey USB ile başarısı sayesinde, ucuz jtag araçları artık yaygın bir şekilde bulunabiliyor.
old_timer

10

JTAG aslen montaj sonrası PCB'leri test etmek için kullanılan bir arayüzdü. Çiplerdeki IO hatları, bir tahta test dizisinin gerçekleştirilmesine izin veren JTAG portları aracılığıyla kontrol edilebilir ve okunabilir. Daha sonra da programlama ve hata ayıklama arayüzü olarak kullanılmaya başlandı. JTAG'da hangi işlevlerin kullanılabilir olduğu, ilgilendiğiniz belirli IC'ye bağlı olacaktır.

JTAG'ın diğer programlama arabirimlerinin çoğundan bir avantajı, cihazların papatya zincirlenebilmesidir. Bu yüzden bir JTAG portu birden fazla cihazı programlamak / hata ayıklamak / test etmek için hizmet verebilir (her ne kadar düşük seviyeli JTAG protokolü maalesef ihtiyacınız olan araçları oldukça standartlaştırırken, farklı çip markalarının farklı zincirlere ayrılabilmesi için sistemlerinizi tasarlamanızı tavsiye ederim. cips programlamak / hata ayıklamak için değildir).


9

JTAG biraz garip bir terimdir. Başlamak için, terim bir saat sinyali (TCK), mod seçimi (TMS) ve veri giriş / çıkışından (TDI / TDO) oluşan belirli bir bağlayıcı ve protokol belirleyebilir. Bu, her bir cihazın TDO'sunun bir tarama zincirinde bir sonraki cihazın TDI'sına bağlı olduğu bir cihazlar ağını içerir. TMS, tüm cihazları aynı anda çeşitli modlara yerleştirmek için kullanılır .

Tarama zincirindeki cihazlar tipik olarak her bir cihazdaki kayıtlardan oluşan bir büyük kaydırma yazmacı olarak bağlanır. Aygıtlar SHIFT_IR veya SHIFT_DR durumundayken, tarama zincirine iki geçici kayıttan biriyle bağlanırlar: Bir talimat kaydı ve bir veri kaydı.

Bir değere kaydırıldığında, UPDATE_IR veya UPDATE_DR modu, TCK'yı değiştirirken TMS'yi uygun şekilde ayarlayarak etkinleştirilebilir. Bu noktada, kayıt defterine kaydırılan değer "yürürlüğe girer". Örneğin, çeşitli sekansların bir FPGA'nın IR'sine kaydırılması ve UPDATE_IR'e geçiş yapılması, FPGA'nın konfigürasyon, geri okuma, normal çalışma zamanı gibi çeşitli modlara girmesine veya tasarımda belirli kullanıcı kayıtlarına ve JTAG'a özgü primitlere erişmesine neden olacaktır.

Aynı şekilde, yakalama durumları cihazdan bir değeri "okumak" ve TDO aracılığıyla kaydırılmak ve en sonunda JTAG programcısı tarafından okumak için IR veya DR içine koymak için kullanılabilir.


4

JTAG, karmaşık IC'ler içindeki dahili kayıtlara erişime izin vermek için bir seri protokol ve bazı komutlar tanımlar. Bu, bir test cihazının birkaç pim kullanarak standart bir şekilde gözlemlenebilirlik ve kontrol edilebilirlik elde etmesini sağlar .

Orijinal kullanım, tüm G / Ç pimlerinin çipi çevreleyen büyük bir kaydırma yazmacı tarafından okunabileceği ve kullanılabileceği 'sınır taraması' içindi. Bununla birlikte, anılar dahil çipin iç kısımlarına erişmek için daha fazla vardiya kaydı eklemek hızlı bir şekilde artırıldı.

Nadiren JTAG'a çarpıyorsunuz, erişim genellikle IC üreticisi tarafından sağlanan ve test sistemi ve test erişim adaptörü tarafından kullanılan kütüphaneler, aka sürücüler aracılığıyla yapılır.


Yani çip hem donanım hem de yazılım tarafından bir JTAG'ı desteklemeli mi?
UnTraDe

@UnTraDe Hayır, yonga donanımdaki JTAG'ı destekler ve yazılımda olabilir (örneğin, bir FPGA, JTAG ile kullanıcı tasarımı arasında bazı arayüzleri gösterebilir), ancak yonga üzerinde yazılım desteğine sahip olması gerekmez. JTAG üzerinden cihazlarla etkileşimde bulunacak araçlar hem yazılım hem de donanım desteğine sahip olacak (bilgisayardaki yazılım ve o bilgisayara bağlı bir JTAG programcısı açısından donanım)
ζ--

3

JTAG 'ne demek' ve JTAG 'ne demek' var. Diğer JTAG işaret gibi olduğu gibi, test imal etmek için bir endüstriyel standart bus arabirimi 'is' J OINT T est bir ction G RUBU.

JTAG'ın 'gömülü yazılım geliştiricisi için' anlamı, çip üzerinde çalışan gömülü yazılımın harici hata ayıklaması için SoC / mikroişlemcideki hata ayıklama arayüzüdür. Neredeyse piyasadaki her CPU / SoC, JTAG arayüzünü yalnızca üretim testleri için değil, yazılım hata ayıklama desteği için de kullanır. Sunucu sınıfı x86 CPU'lardan 50 $ altındaki ev WiFi yönlendiricilerine kadar her şeyde bir JTAG arayüzü bulacaksınız. Doğru arabirim donanımı ve doğru yazılımla, bu arabirimler size bellek okuma / yazma, kesme noktaları ve tek adımlı kod yazma yeteneği verir.

Tabii ki, doğru donanım ve yazılımı elde etmek. Temel JTAG arayüzü standardize edilmiş olsa bile, bir cihazda bulunan belirli yazılım hata ayıklama olanakları olmayabilir. JTAG, TCP / IP'ye benzer. Uygulama yığınının ortasında bulunur. Ekipmanla iletişim kurmak için doğru fiziksel katmana ihtiyacınız var (yani, bu şeyin 10-Base-2 kullandığı anlamına mı geliyorsunuz? istemci?!?!?!). Ancak, ARM ekosisteminin gücü orada bir dereceye kadar standardizasyon sağlamıştır (bkz. OpenOCD).

Ayrıca flaş programlamak için JTAG kullanma hakkında sordu. Evet, bazı yazılımlar da bu amaç için kullanır. SoC, CPU bellek adres alanlarından okuma / yazma için JTAG olanakları sağlayabilir, flaş kontrol cihazlarına doğrudan erişim sağlayabilir ve en azından bir JTAG, çipin kenarındaki I / O pinlerine ham düşük seviye erişim sağlar (bu, JTAG'in asıl amacı, üretim testi sırasında çipten çip ara bağlantılarına süreklilik testini sağlamak, yani 'JTAG sınır taraması'). Bu tesislerin herhangi biri, bir cihazın yanlışlıkla 'tuğla' yapılması durumunda, bir flaş çipini yeniden programlamak için gerekli sinyalleri sürmek için akıllı programcılar tarafından kullanılabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.