JTAG - JTAG

JTAG (adını onu kodlayan Ortak Test Eylem Grubundan almıştır ), üretimden sonra tasarımları doğrulamak ve baskılı devre kartlarını test etmek için bir endüstri standardıdır .

JTAG , dijital simülasyona tamamlayıcı bir araç olarak elektronik tasarım otomasyonunda (EDA) çip üzerinde enstrümantasyon standartları uygular . Sistem adresine ve veri yollarına doğrudan harici erişim gerektirmeden düşük maliyetli erişim için bir seri iletişim arabirimi uygulayan özel bir hata ayıklama bağlantı noktasının kullanımını belirtir . Arayüz , çeşitli parçaların çip mantık seviyelerini ve cihaz yeteneklerini sunan bir dizi test kaydına erişmek için durum bilgisi olan bir protokol uygulayan bir çip üzerinde Test Erişim Bağlantı Noktasına (TAP) bağlanır .

Ortak Test Eylem Grubu, tasarımların doğrulanması ve üretimden sonra baskılı devre kartlarının test edilmesi için bir yöntem geliştirmek için 1985'te kuruldu . 1990'da Elektrik ve Elektronik Mühendisleri Enstitüsü , çabanın sonuçlarını IEEE Standardı 1149.1-1990'da ( Standart Test Erişim Portu ve Sınır Tarama Mimarisi) kodladı .

JTAG standartları, satıcıya özel özellikler sağlamak için birçok yarı iletken çip üreticisi tarafından özel varyantlarla genişletildi.

Tarih

1980'lerde, bilyeli ızgara dizisi ve benzeri montaj teknolojilerini kullanan çok katmanlı devre kartları ve tümleşik devreler (IC'ler) standart hale geliyor ve problar için mevcut olmayan IC'ler arasında bağlantılar yapılıyordu. Devre kartlarındaki üretim ve saha hatalarının çoğu, kartlardaki zayıf lehim bağlantılarından, kart bağlantıları arasındaki kusurlardan veya IC pedlerinden pin kurşun çerçevelerine olan bağlar ve bağ tellerinden kaynaklanıyordu. Ortak Test Eylem Grubu (JTAG), bu hataların keşfedilebilmesi için bir IC pedinden diğerine pin çıkışı görünümü sağlamak için 1985'te kuruldu.

Endüstri standardı , 1990 yılında IEEE Std olarak bir IEEE standardı haline geldi . 1149.1-1990, uzun yıllar ilk kullanımdan sonra. Aynı yıl Intel , tüm üreticiler tarafından endüstride daha hızlı benimsenmesini sağlayan JTAG ( 80486 ) ile ilk işlemcisini piyasaya sürdü . 1994 yılında, sınır tarama tanımlama dilinin (BSDL) tanımını içeren bir ek eklenmiştir. EXTEST için tamamen sıfırların kullanımı, SAMPLE kullanımının PRELOAD'dan ayrılması ve OBSERVE_ONLY hücreleri için daha iyi uygulama ile ilgili daha fazla iyileştirme 2001'de yapıldı ve yayınlandı. 1990'dan beri, bu standart dünya çapında elektronik şirketleri tarafından benimsenmiştir . Sınır taraması artık çoğunlukla JTAG ile eş anlamlıdır, ancak JTAG bu tür üretim uygulamalarının ötesinde temel kullanımlara sahiptir.

hata ayıklama

JTAG'ın ilk uygulamaları kart seviyesi testini hedeflese de, burada JTAG standardı cihaz, kart ve sistem testi, tanılama ve arıza izolasyonuna yardımcı olmak için tasarlanmıştır . Bugün JTAG, tümleşik devrelerin alt bloklarına erişmenin birincil yolu olarak kullanılmaktadır, bu da onu, başka herhangi bir hata ayıklama özellikli iletişim kanalına sahip olmayan gömülü sistemlerde hata ayıklamak için önemli bir mekanizma haline getirir . Çoğu sistemde, JTAG tabanlı hata ayıklama, CPU sıfırlandıktan sonraki ilk talimattan itibaren kullanılabilir ve herhangi bir şey kurulmadan önce çalışan erken önyükleme yazılımının geliştirilmesine yardımcı olur. Bir devre içi öykünücü (veya daha doğrusu bir "JTAG adaptörü") , hedef CPU içindeki çip üzerinde hata ayıklama modüllerine erişmek için aktarım mekanizması olarak JTAG'ı kullanır . Bu modüller, yazılım geliştiricilerin , gerektiğinde doğrudan makine talimat düzeyinde veya (daha tipik olarak) yüksek seviyeli dil kaynak kodu açısından gömülü bir sistemin yazılımında hata ayıklamasına izin verir .

Sistem yazılımı hata ayıklama desteği, birçok yazılım geliştiricisi için JTAG ile ilgilenmenin ana nedenidir. PowerPC, MIPS, ARM, x86 gibi birçok silikon mimarisi, temel JTAG protokolü etrafında eksiksiz bir yazılım hata ayıklama, talimat izleme ve veri izleme altyapısı oluşturdu. Ancak sıklıkla bireysel silikon satıcıları bu uzantıların yalnızca bazı kısımlarını uygular. Bazı örnekler, ARM CoreSight ve Nexus'un yanı sıra Intel'in BTS (Branch Trace Storage), LBR (Last Branch Record) ve IPT (Intel Processor Trace) uygulamalarıdır. Gizlilik Sözleşmesi dışında belgelenemeyen bu tür silikon satıcısına özel birçok uzantı vardır . JTAG standardının benimsenmesi, JTAG merkezli hata ayıklama ortamlarının eski işlemciye özel tasarımlardan uzaklaştırılmasına yardımcı oldu. İşlemciler normalde durdurulabilir, tek kademeli veya serbestçe çalışmasına izin verilebilir. Hem RAM'deki (genellikle özel bir makine talimatı kullanılarak) hem de ROM/flash'taki kod için kod kesme noktaları belirlenebilir. RAM'e toplu veri indirme gibi, veri kesme noktaları da genellikle mevcuttur. Çoğu tasarımda "durma modu hata ayıklaması" vardır, ancak bazıları hata ayıklayıcıların, hata ayıklanan çekirdeği durdurmaya gerek kalmadan kayıtlara ve veri yollarına erişmesine izin verir. Bazı araç zincirleri, belirli bir alt programdan bir kayda ilk yedi erişimi yok saymak üzere programlanmış bir mantık analizörü gibi, karmaşık donanım olaylarında hata ayıklayıcı (veya izleme) etkinliğini tetiklemek için ARM Gömülü İzleme Macrocell (ETM) modüllerini veya diğer mimarilerdeki eşdeğer uygulamaları kullanabilir. .

Bazen FPGA geliştiricileri, hata ayıklama araçları geliştirmek için JTAG'ı da kullanır. Bir CPU içinde çalışan yazılım hatalarını ayıklamak için kullanılan aynı JTAG teknikleri , bir FPGA içindeki diğer dijital tasarım bloklarında hata ayıklamaya yardımcı olabilir. Örneğin, FPGA içindeki rasgele sinyal setlerinden oluşturulan kayıtların okunmasına izin vermek için özel JTAG talimatları sağlanabilir ve bu, sınır tarama işlemlerine görünmeyen davranışlar için görünürlük sağlar. Benzer şekilde, bu tür kayıtların yazılması, başka türlü mevcut olmayan kontrol edilebilirlik sağlayabilir.

Ürün yazılımının saklanması

JTAG, cihaz programlayıcı donanımının verileri dahili kalıcı cihaz belleğine (örn. CPLD'ler ) aktarmasına izin verir . Bazı aygıt programcıları, aygıtın hatalarını ayıklamanın yanı sıra programlama için iki amaca hizmet eder. FPGA'lar söz konusu olduğunda, geçici bellek cihazları, normalde geliştirme çalışması sırasında JTAG bağlantı noktası aracılığıyla da programlanabilir. Ayrıca dahili izleme yeteneklerine (sıcaklık, gerilim ve akım) JTAG portu üzerinden erişilebilir.

JTAG programcıları, yazılım ve verileri flash belleğe yazmak için de kullanılır . Bu genellikle CPU'nun kullanacağı aynı veri yolu erişimi kullanılarak yapılır ve bazen CPU tarafından işlenir. Diğer durumlarda, bellek yongalarının kendileri JTAG arayüzlerine sahiptir. Bazı modern hata ayıklama mimarileri, bir CPU'yu durdurmaya ve devralmaya gerek kalmadan dahili ve harici ana veri yolu erişimi sağlar. En kötü durumda, sınır tarama özelliğini kullanarak harici veri yolu sinyallerini sürmek genellikle mümkündür.

Pratik bir konu olarak, gömülü bir sistem geliştirirken, talimat deposunu taklit etmek "hata ayıklama döngüsünü" (düzenleme, derleme, indirme, test etme ve hata ayıklama) uygulamanın en hızlı yoludur. Bunun nedeni, bir talimat deposunu simüle eden devre içi öykünücünün, örneğin USB aracılığıyla geliştirme ana bilgisayarından çok hızlı bir şekilde güncellenebilmesidir. Flash'a bellenimi yüklemek için bir seri UART bağlantı noktası ve önyükleyici kullanmak, bu hata ayıklama döngüsünü oldukça yavaş ve muhtemelen araçlar açısından pahalı hale getirir; bellenimi Flash'a (veya Flash yerine SRAM'a) JTAG aracılığıyla yüklemek, bu uç noktalar arasında bir ara çözümdür.

Sınır tarama testi

JTAG sınır tarama teknolojisi, cihaz pinleri de dahil olmak üzere karmaşık bir entegre devrenin birçok mantık sinyaline erişim sağlar. Sinyaller, TAP aracılığıyla erişilebilen sınır tarama kaydında (BSR) temsil edilir. Bu, test etme ve hata ayıklama için sinyallerin durumlarını kontrol etmenin yanı sıra test etmeye de izin verir. Bu nedenle hem yazılım hem de donanım (üretim) hataları bulunabilir ve çalışan bir cihaz izlenebilir.

Yerleşik kendi kendine test ( BIST ) ile birleştirildiğinde, JTAG tarama zinciri, bir IC'yi belirli statik hatalar (kısa devreler, açılmalar ve mantık hataları) için test etmek için düşük ek yük, yerleşik bir çözüm sağlar. Tarama zinciri mekanizması genellikle meydana gelebilecek zamanlama, sıcaklık veya diğer dinamik işlem hatalarını teşhis etmeye veya test etmeye yardımcı olmaz. Test senaryoları genellikle SVF veya ikili kardeş XSVF gibi standart biçimlerde sağlanır ve üretim testlerinde kullanılır. Bu tür testleri bitmiş panolarda gerçekleştirme yeteneği , günümüz ürünlerinde Test İçin Tasarımın önemli bir parçasıdır ve ürünler müşterilere gönderilmeden önce bulunabilecek hataların sayısını artırır.

Elektriksel özellikler

JTAG arayüzü, bir çipe eklenen özel bir arayüzdür. JTAG versiyonuna bağlı olarak iki, dört veya beş pin eklenir. Dört ve beş pimli arabirimler, belirli koşullar karşılandığında bir karttaki birden fazla yonganın JTAG hatlarını birbirine zincirleme olarak bağlayabilmesi için tasarlanmıştır . İki pinli arayüz, birden fazla çipin bir yıldız topolojisinde bağlanabilmesi için tasarlanmıştır . Her iki durumda da bir test probu , bir devre kartı üzerindeki tüm çiplere erişim sağlamak için yalnızca tek bir "JTAG bağlantı noktasına" bağlanması gerekir .

Papatya dizilimi JTAG (IEEE 1149.1)

JTAG zinciri örneği.  Test sıfırlama sinyali gösterilmiyor

Konektör pinleri şunlardır:

  1. TDI (Test Verisi Girişi)
  2. TDO (Test Verisi Çıkışı)
  3. TCK (Test Saati)
  4. TMS (Test Modu Seçimi)
  5. TRST (Test Sıfırlama) isteğe bağlıdır.

TRST pini, çipe bağlı olarak genellikle asenkron, ancak bazen senkronize olan test mantığına isteğe bağlı bir aktif-düşük sıfırlamadır. Eğer pin mevcut değilse TCK ve TMS kullanılarak senkron olarak reset durumuna geçilerek test mantığı resetlenebilir. Test mantığını sıfırlamanın mutlaka başka bir şeyi sıfırlamak anlamına gelmediğini unutmayın. Genellikle, hata ayıklanan çipin tamamını veya bir kısmını sıfırlayabilen işlemciye özgü bazı JTAG işlemleri vardır.

Sadece bir veri hattı mevcut olduğundan protokol seridir . Saat girişi TCK pinindedir. TCK yükselen saat kenarı başına bir bit veri TDI'dan içeri ve dışarı TDO'ya aktarılır. Farklı komutlar yüklenebilir. Tipik IC'ler için talimatlar çip kimliğini okuyabilir, örnek giriş pinlerini, sürücü (veya kayan) çıkış pinlerini okuyabilir, çip fonksiyonlarını manipüle edebilir veya baypas (çoklu çip zincirlerini mantıksal olarak kısaltmak için TDI'dan TDO'ya boru) yapabilir.

Herhangi bir saatli sinyalde olduğu gibi, TDI'ye sunulan veriler , ilgili (burada, yükselen) saat kenarından önceki ve sonraki Tutma süresi için çipe özgü bazı Kurulum süresi için geçerli olmalıdır . TDO verileri, TCK'nin düşen kenarından sonra çipe özgü bir süre için geçerlidir.

TCK'nın maksimum çalışma frekansı, zincirdeki tüm yongalara bağlı olarak değişir (en düşük hız kullanılmalıdır), ancak tipik olarak 10-100 MHz'dir (bit başına 100-10 ns). Ayrıca TCK frekansları, kart düzenine ve JTAG adaptör özelliklerine ve durumuna bağlıdır. Bir çip 40 MHz JTAG saatine sahip olabilir, ancak bu yalnızca JTAG dışı işlemler için 200 MHz saat kullanıyorsa; ve düşük güç modundayken çok daha yavaş bir saat kullanması gerekebilir. Buna göre, bazı JTAG adaptörleri, bir RTCK (Return TCK) sinyali kullanan uyarlamalı saat ayarına sahiptir. Daha hızlı TCK frekansları, örneğin yürütülebilir bir programı flash belleğe kaydederken olduğu gibi, çok fazla veriyi aktarmak için JTAG kullanıldığında en kullanışlıdır .

Standart bir JTAG durum makinesi aracılığıyla TMS adımlarındaki saat değişiklikleri . JTAG durum makinesi sıfırlayabilir, bir talimat kaydına erişebilir veya talimat kaydı tarafından seçilen verilere erişebilir.

JTAG platformları genellikle IEEE 1149.1 spesifikasyonu tarafından tanımlanan avuç içine sinyaller ekler. Bir Sistem Sıfırlama (SRST) sinyali oldukça yaygındır ve hata ayıklayıcıların yalnızca JTAG destekli parçaları değil tüm sistemi sıfırlamasına izin verir. Bazen, ana bilgisayar veya JTAG aracılığıyla izlenen cihaz tarafından etkinliği tetiklemek için kullanılan olay sinyalleri vardır; veya belki de ek kontrol hatları.

Çok az tüketici ürünü açık bir JTAG bağlantı noktası konektörü sağlasa da, bağlantılar genellikle geliştirme prototipleme ve/veya üretimin bir kalıntısı olarak baskılı devre kartında bulunur . Kullanıldığında, bu bağlantılar genellikle tersine mühendislik için en uygun araçları sağlar .

Azaltılmış pin sayısı JTAG (IEEE 1149.7)

Azaltılmış pin sayısı ile JTAG örneği

Azaltılmış pin sayısı JTAG sadece iki kablo kullanır, bir saat kablosu ve bir veri kablosu. Bu, IEEE 1149.7 standardının bir parçası olarak tanımlanır. Konektör pinleri şunlardır:

  1. TMSC (Test Seri Verileri)
  2. TCKC (Test Saati)

Kompakt JTAG için cJTAG olarak adlandırılır.

İki telli arayüz, pin sayısı üzerindeki baskıyı azaltır ve cihazlar bir yıldız topolojisinde bağlanabilir . Yıldız topolojisi, sistemin bazı bölümlerinin kapatılmasını sağlarken, diğerlerine hala JTAG üzerinden erişilebilir; bir papatya zinciri, tüm JTAG arabirimlerine güç verilmesini gerektirir. Seri Kablo Hata Ayıklama gibi diğer iki kablolu arayüzler mevcuttur .

iletişim modeli

JTAG'de, cihazlar bir veya daha fazla test erişim portunu (TAP'ler) açığa çıkarır . Yukarıdaki resim, ayrı çipler olabilen veya bir çip içinde modüller olabilen üç TAP'yi göstermektedir. TAP'lerin papatya zincirine tarama zinciri veya (gevşek) bir hedef denir . Tarama zincirleri keyfi olarak uzun olabilir, ancak pratikte yirmi TAP alışılmadık derecede uzundur.

JTAG'ı kullanmak için, hedefin JTAG sinyallerine (TMS, TCK, TDI, TDO, vb.) bir ana bilgisayar, seviye değiştirme ve galvanik izolasyon gibi sorunları ele alması gerekebilecek bir tür JTAG adaptörü aracılığıyla bağlanır . Adaptör, USB, PCI, Ethernet ve benzeri gibi bazı arabirimleri kullanarak ana bilgisayara bağlanır.

İlkel

Ana bilgisayar, TCK ile bağlantılı olarak TMS ve TDI'yi manipüle ederek ve sonuçları TDO (tek standart ana bilgisayar tarafı girişi olan) aracılığıyla okuyarak TAP'lerle iletişim kurar. TMS/TDI/TCK çıkış geçişleri, daha yüksek katman protokollerinin üzerine inşa edildiği temel JTAG iletişim ilkesini oluşturur:

  • Durum geçişi ... Tüm TAP'ler aynı durumdadır ve bu durum TCK geçişlerinde değişir. Bu JTAG durum makinesi, JTAG spesifikasyonunun bir parçasıdır ve on altı durumu içerir. TMS'yi sabit tutmanın, durumun değişmesini engellediği altı "kararlı durum" vardır. Diğer tüm eyaletlerde, TCK her zaman bu durumu değiştirir. Ek olarak, TRST'yi onaylamak, TMS'yi yüksek tutma ve TCK'yı beş kez çevirme alternatifinden biraz daha hızlı bir şekilde, bu kararlı durumlardan birine (Test_Logic_Reset) girişi zorlar.
  • Kaydırma ... JTAG durum makinesinin çoğu parçası, veri aktarımı için kullanılan iki kararlı durumu destekler. Her TAP'ın bir talimat kaydı (IR) ve bir veri kaydı (DR) vardır. Bu kayıtların boyutu, TAP'ler arasında değişir ve bu kayıtlar, büyük bir kaydırma kaydı oluşturmak için TDI ve TDO aracılığıyla birleştirilir. (DR'nin boyutu, o TAP'ın mevcut IR'sindeki değerin ve muhtemelen bir SCAN_N komutu tarafından belirtilen değerin bir fonksiyonudur.) Bu kaydırma yazmacında tanımlanan üç işlem vardır:
    • Geçici bir değer yakalama
      • Giriş Shift_IR stabil halde, kısmen sabit bir değer (değil mevcut komut) ile kaydırma yazmacı yükleme, Capture_IR durum üzerinden gider
      • Shift_DR kararlı durumuna giriş, TAP'ın mevcut IR'si tarafından belirtilen Veri Kaydının değerini yükleyerek Capture_DR durumu üzerinden gider.
    • Kaydırma bu değeri bit-bit ya Shift_IR veya Shift_DR kararlı halde; TCK geçişleri kaydırma yazmacını bir bit, TDI'dan TDO'ya kaydırır, tıpkı bir SPI mod 1 veri aktarımı gibi bir aygıt zinciri aracılığıyla (TMS=0 çip seçme sinyali gibi davranır, TDI MOSI gibi davranır, vb.).
    • Update_IR veya Update_DR durumuna geçişte, kaydırılan geçici değerden IR veya DR güncelleniyor . Bir kaydı yazmadan (güncellemeden) okumanın (yakalamanın) mümkün olmadığını ve bunun tersini unutmayın. Yaygın bir deyim, güncellemenin yan etkileri olup olmayacağını veya donanımın bu tür yan etkileri yürütmeye hazır olup olmadığını söylemek için bayrak bitleri ekler.
  • Çalışıyor ... Bir kararlı durum, Run_Test/Idle olarak adlandırılır. Ayrım TAP'a özgüdür. TCK'yi Boşta durumunda saat ayarının belirli bir yan etkisi yoktur, ancak Run_Test durumunda saat ayarının yapılması sistem durumunu değiştirebilir. Örneğin, bazı ARM9 çekirdekleri, Run_Test durumundaki TCK döngülerinin talimat ardışık düzenini sürdüğü bir hata ayıklama modunu destekler.

Bu nedenle, temel düzeyde, JTAG kullanımı, talimatları ve bunlarla ilişkili veri kayıtlarını okuma ve yazmayı içerir; ve bazen birkaç test döngüsü çalıştırmayı içerir. Bu registerlerin arkasında JTAG tarafından belirtilmeyen ve JTAG aktivitelerinden etkilenen kendi durumlarına sahip donanımlar bulunur.

Çoğu JTAG ana bilgisayarı, iki durum arasındaki en kısa yolu kullanır, belki de bağdaştırıcının tuhaflıkları tarafından sınırlandırılır. (Örneğin, bir bağdaştırıcı yalnızca uzunlukları yedi bitin katları olan yolları işler.) JTAG'ın üzerine inşa edilen bazı katmanlar, durum geçişlerini izler ve daha yüksek düzeyli işlemleri tetiklemek için olağandışı yollar kullanır. Bazı ARM çekirdekleri, iki telli (JTAG olmayan) bir SWD moduna girmek ve çıkmak için bu tür dizileri kullanır . IEEE 1149.7'de, TAP'leri tarama zincirlerine sokma ve çıkarma, güç yönetimi ve farklı bir iki kablolu mod gibi gelişmiş işlevlere erişmek için bir Sıfır Bit Tarama (ZBS) dizisi kullanılır.

JTAG IEEE Std 1149.1 (sınır taraması) talimatları

Talimat kayıt boyutları küçük olma eğilimindedir, belki dört veya yedi bit genişliğindedir. BYPASS ve EXTEST dışında, tüm talimat işlem kodları ve bunların ilişkili veri kayıtları TAP uygulayıcısı tarafından tanımlanır; tanımsız talimat kodları kullanılmamalıdır. İki temel talimat şunlardır:

  • TAP'ın talimat kayıt boyutundan bağımsız olarak hepsinin bir işlem kodu olan BYPASS komutu, tüm TAP'ler tarafından desteklenmelidir. Komut, tek bitlik bir veri kaydı seçer (BYPASS olarak da bilinir). Talimat, tarama yolundaki diğer cihazlar çalıştırılırken bu cihazın atlanmasına (hiçbir şey yapmamasına) izin verir.
  • Uygulayıcı tanımlı bir işlem kodu ile isteğe bağlı IDCODE talimatı. IDCODE, 32 bitlik bir kayıt (IDCODE) ile ilişkilidir. Verileri, bir üretici kodu ( JEDEC Standart Üretici Tanımlama Kodu standardı, JEP-106) 'dan türetilmiştir ), üretici tarafından atanan bir parça numarası ve bir parça sürüm kodu içeren standart bir format kullanır . IDCODE yaygın olarak desteklenir, ancak evrensel olarak desteklenmez.

RESET durumundan çıkıldığında, talimat kaydı, BYPASS veya IDCODE ile önceden yüklenir. Bu, JTAG ana bilgisayarlarının bağlı oldukları tarama zincirinin boyutunu ve en azından kısmen içeriğini tanımlamasına olanak tanır. (SIFIRLAMA durumuna girebilirler ve ardından yazdıkları verileri tekrar okuyana kadar Veri Kaydı'nı tarayabilirler. Bir BYPASS kaydının sadece sıfır biti vardır, bir IDCODE kaydı ise 32 bittir ve bir ile başlar. Yani bitler tarafından yazılmayan bitler ana bilgisayar kolayca TAP'lere eşlenebilir.) IDCODE genellikle belirsiz olduğundan, bu tür tanımlama genellikle manuel yapılandırmayı kontrol etmek için kullanılır. Örneğin, mikro denetleyici satıcısını veya modelini belirtmeden ARM Cortex-M3 tabanlı bir mikro denetleyiciyi tanımlayabilir; veya belirli bir FPGA, ancak nasıl programlandığı değil.

Yaygın bir deyim, BYPASS'ı, başka bir talimat alan biri hariç tüm TAP'lerin talimat kayıtlarına kaydırmayı içerir. Bu şekilde, biri hariç tüm TAP'ler, tek bitlik bir veri kaydı ortaya çıkarır ve değerler, diğer herhangi bir TAP'ı etkilemeden, o TAP'ın veri kaydına seçici olarak kaydırılabilir veya çıkarılabilir.

IEEE 1149.1 (JTAG) standardı, sınır tarama uygulamalarını desteklemek için bir dizi talimatı açıklar. Bu talimatların bazıları "zorunludur", ancak sınır tarama testi yerine hata ayıklama için kullanılan TAP'ler bazen bu talimatlar için çok az destek sağlar veya hiç destek vermez. Bu "zorunlu" talimatlar, BSDL dosyasında tanımlanan Sınır Tarama Kaydı (BSR) üzerinde çalışır ve şunları içerir:

  • Kart düzeyindeki davranışları araştırmak için pimler kullanmak gibi harici testler için EXTEST
  • PRELOAD yükleme pini çıkış değerleri EXTEST öncesi (bazen SAMPLE ile birlikte)
  • Sınır tarama kaydına NUMUNE okuma pin değerleri

IEEE tanımlı "Opsiyonel" talimatlar şunları içerir:

  • ÖN YÜKLÜ değerleri kullanarak çıkış pinlerini çalıştıran bir BYPASS çeşidini CLAMP
  • HIGHZ, tüm pinlerin çıkışlarını devre dışı bırakır
  • Çip üzerindeki davranışları araştırmak için pinlerin kullanılması gibi dahili testler için INTEST
  • RUNBIST, çipi kendi kendini test moduna geçirir
  • USERCODE, örneğin hangi FPGA görüntüsünün etkin olduğunu belirlemek için kullanıcı tanımlı bir kod döndürür

Cihazlar daha fazla talimat tanımlayabilir ve bu tanımlar üretici tarafından sağlanan bir BSDL dosyasının parçası olmalıdır. Genellikle yalnızca ÖZEL olarak işaretlenirler.

Sınır tarama kaydı

Cihazlar, bir dizi giriş ve çıkış pini aracılığıyla dünyayla iletişim kurar. Kendi başlarına, bu pimler, cihazın işleyişine sınırlı bir görünürlük sağlar. Ancak, sınır taramayı destekleyen cihazlar, cihazın her sinyal pini için bir kaydırma-kayıt hücresi içerir. Bu kayıtlar, cihazın sınırı (dolayısıyla adı) etrafındaki özel bir yola bağlanır. Yol, normal giriş ve çıkışları atlatan, cihazın doğrudan kontrolünü ve sinyaller için ayrıntılı görünürlük sağlayan bir sanal erişim yeteneği yaratır.

Sinyal G/Ç yetenekleri dahil olmak üzere sınır tarama kaydının içeriği genellikle üretici tarafından parçaya özel bir BSDL dosyası kullanılarak tanımlanır. Bunlar, kart üretiminde kullanılan testleri geliştirmek için CAD/EDA sistemlerinden tasarım 'netlist'leriyle birlikte kullanılır. Ticari test sistemleri, eksiksiz bir sistem için genellikle birkaç bin dolara mal olur ve açık devreler ve kısa devreler gibi arızaları saptamak için tanılama seçenekleri içerir. Ayrıca, hatayı grafiksel olarak göstermek için şematik veya düzen görüntüleyiciler sunabilirler.

IC satıcıları, sınır taramayı etkinleştirmek için, her bir sinyal pimi için tarama hücreleri de dahil olmak üzere, cihazlarının her birine mantık ekler. Bu hücreler daha sonra bir TAP kontrolörüne bağlı olan sınır tarama kaydırma yazmacı (BSR) oluşturmak için birbirine bağlanır. Bu tasarımlar, çoğu Verilog veya VHDL kitaplığının parçalarıdır. Bu ek mantığın gideri minimumdur ve genellikle kart düzeyinde verimli test yapılmasını sağlamak için fiyatına değer.

Örnek: ARM11 hata ayıklama TAP

Bir örnek, gerçek sistemlerde JTAG'ın çalışmasını göstermeye yardımcı olur. Buradaki örnek , ARM1136 çekirdeği olan bir ARM11 işlemcisinin hata ayıklama TAP'ıdır. İşlemcinin kendisi, diğer CPU çekirdeklerinde bulunanlara benzer kapsamlı JTAG yeteneğine sahiptir ve JTAG aracılığıyla erişilen daha kapsamlı yeteneklerle yongalara entegre edilmiştir.

Bu, JTAG etkin sistemlerin önemli bir kesitini temsil eden önemsiz bir örnektir. Ek olarak, kontrol mekanizmalarının JTAG'ın yazmaç okuma/yazma ilkelleri kullanılarak nasıl oluşturulduğunu ve bunların karmaşık mantık öğelerini test etmeyi ve hata ayıklamayı kolaylaştırmak için nasıl birleştiğini gösterir; CPU'lar yaygındır, ancak FPGA'lar ve ASIC'ler , hatalarının ayıklanması gereken diğer karmaşık öğeleri içerir.

Bu çekirdeğin lisans sahipleri, onu genellikle diğer TAP'lerin yanı sıra çok sayıda çevre birimi ve bellekle birleştirerek yongalara entegre eder. Bu diğer TAP'lerden biri, tüm çip için sınır tarama testini gerçekleştirir; hata ayıklama TAP'ı tarafından desteklenmiyor. Bu tür çiplerin örnekleri şunları içerir:

  • OMAP2420 ARM1136 ayıklama TAP, bir ETB11 iz tamponu TAP, bir sınır tarama TAP içerir, C55x DSP ve bir için bir musluk ARM7 sınır tarama TAP TDMI bazlı görüntüleme motoru ( "Icepick-B") sahip olan TAP'leri JTAG tarama zincirinin içine ve dışına ekleme yeteneği.
  • İ.MX31 onun "Sistem JTAG" sınır tarama Icepick çok farklıdır TAP, ve onun DMA motoru yerine DSP ve görüntüleme motoru için bir TAP içermesine rağmen, benzer işlemci.

Bu işlemcilerin her ikisi de cep telefonları gibi kablosuz telefonlarda kullanılmak üzere tasarlanmıştır, bu da JTAG tarama zincirini değiştiren TAP denetleyicilerini içermelerinin bir nedenidir: Düşük güçte hata ayıklama işlemi, büyük ölçüde kapatıldığında ve dolayısıyla olmadığında yongalara erişmeyi gerektirir. tüm TAP'ler çalışır durumda. Bu tarama zinciri modifikasyonu, yakında çıkacak bir IEEE 1149.7 standardının bir konusudur.

JTAG tesisleri

Bu hata ayıklama TAP'ı, birkaç standart yönergeyi ve bir yazılım aracının ("hata ayıklayıcı") hata ayıklanan bir sistemle iletişim kurmak için JTAG kullandığı donanım destekli hata ayıklama için özel olarak tasarlanmış birkaç yönerge sunar :

  • BYPASSve IDCODE, yukarıda açıklandığı gibi standart talimatlar
  • EXTEST, INTEST, standart talimatlar, ancak harici bir sınır tarama zinciri yerine çekirdek üzerinde çalışır. EXTESTnominal olarak çekirdeğe veri yazmak içindir INTEST, nominal olarak okumak içindir; ancak iki tarama zinciri bu kuralın istisnalarıdır.
  • SCAN_NEXTESTveya ile kullanılan numaralı tarama zincirini seçmek için ARM talimatı INTEST. Altı tarama zinciri vardır:
    • 0 - Cihaz Kimliği Kaydı, 40 bit salt okunur tanımlama verisi
    • 1 - Hata Ayıklama Durumu ve Kontrol Kaydı (DSCR), hata ayıklama tesislerini çalıştırmak için kullanılan 32 bit
    • 4 - Komut Aktarım Kaydı (ITR), 33 bit (32 komut artı bir durum biti), özel bir "Hata Ayıklama Modu"ndayken işlemci talimatlarını yürütmek için kullanılır (aşağıya bakın)
    • 5- Hata Ayıklama İletişim Kanalı (DCC), çekirdeğe çift yönlü veri aktarımı için kullanılan 34 bit (bir uzun veri kelimesi artı iki durum biti). Bu, hem hata ayıklama modunda hem de muhtemelen çalışma zamanında hata ayıklayıcıya duyarlı yazılımla konuşurken kullanılır.
    • 6- Gömülü İzleme Modülü (ETM), 40 bit (7 bit adres, bir 32 bit uzunluğunda veri kelimesi ve bir R/W biti), pasif bir talimat ve veri izleme mekanizmasının çalışmasını kontrol etmek için kullanılır. Bu, ya bir çip üzerinde Gömülü İzleme Arabelleği (ETB) ya da harici bir yüksek hızlı izleme veri toplama bölmesini besler. İzleme, pasif hata ayıklamayı (yürütme geçmişini inceleme) ve performans ayarlaması için profil oluşturmayı destekler.
    • 7- donanım kesme noktalarına, izleme noktalarına ve daha fazlasına erişmek için kullanılan hata ayıklama modülü, 40 bit (7 bit adres, bir 32 bit uzunluğunda veri sözcüğü ve bir R/W biti). Bunlar işlemci çalışırken yazılabilir; Hata Ayıklama Modunda olması gerekmez.
  • HALTve RESTARTCPU'yu durdurmak ve yeniden başlatmak için ARM11'e özel talimatlar. Durdurmak, çekirdeği, hata ayıklama (JTAG) ana bilgisayarı ile CPU arasında veri aktarmak için DCC'yi kullanmak da dahil olmak üzere, talimatları yürütmek için ITR'nin kullanılabileceği "Hata Ayıklama Moduna" sokar.
  • ITRSEL, ITR ile bazı işlemleri hızlandırmak için ARM11'e özel talimat.

Bu model, diğer ARM çekirdeklerinde kullanılan modele benziyor. ARM olmayan sistemler genellikle benzer yeteneklere sahiptir, belki de JTAG'ın üstünde Nexus protokolleri veya diğer satıcıya özel şemalar kullanılarak uygulanır.

Daha eski ARM7 ve ARM9 çekirdekleri , bu tesislerin çoğunu birleştiren, ancak talimat yürütme için garip bir mekanizmaya sahip olan bir EmbeddedICE modülü içerir: hata ayıklayıcı, CPU talimat boru hattını saat saat çalıştırmalı ve verileri okumak ve yazmak için veri yollarına doğrudan erişmelidir. CPU. ARM11, izleme desteği (ETM, ETB) için bu eski çekirdeklerle aynı modeli kullanır.

Daha yeni ARM Cortex çekirdekleri, bu hata ayıklama modeline çok benzer, ancak doğrudan CPU erişimi yerine bir Hata Ayıklama Erişim Bağlantı Noktası (DAP) üzerine kuruludur . Bu mimaride ( CoreSight Teknolojisi olarak adlandırılır ), çekirdek ve JTAG modülü tamamen bağımsızdır. Ayrıca, JTAG'dan ayrılmışlardır, böylece yalnızca altı telli JTAG arabirimi yerine ARM'nin iki telli SWD arabirimi (aşağıya bakın) üzerinden barındırılabilirler . (ARM, dört standart JTAG sinyalini alır ve isteğe bağlı TRST ile uyarlamalı saat için kullanılan RTCK sinyalini ekler.) CoreSight JTAG-DP, çekirdek saatlerle eşzamansızdır ve RTCK'yi uygulamaz. Ayrıca, daha yeni çekirdeklerde izleme desteği güncellendi.

Dur modu hata ayıklama

Yazılımda hata ayıklamanın temel bir yolu, hata ayıklayıcının programın yürütülmesini periyodik olarak durdurduğu ve kayıt içeriği ve bellek (çevresel denetleyici kayıtları dahil) tarafından açıklandığı şekilde durumunu incelediği tek iş parçacıklı bir model sunmaktır. İlginç program olayları yaklaştığında, bir kişi belirli bir yanlış davranışın nasıl olduğunu izlemek için tek adımlı talimatlar (veya kaynak kod satırları) isteyebilir.

Örneğin, bir JTAG ana bilgisayarı, Hata Ayıklama Moduna girerek çekirdeği DURDURABİLİR ve ardından ITR ve DCC kullanarak CPU kayıtlarını okuyabilir. İşlemci durumunu kaydettikten sonra, bu kayıtları ihtiyaç duyduğu değerlerle yazabilir, ardından sistem durumunu karakterize etmeye yardımcı olmak için belleğe ve çevre birimlerine erişerek CPU üzerinde keyfi algoritmalar yürütebilir. Hata ayıklayıcı bu işlemleri gerçekleştirdikten sonra, durum geri yüklenebilir ve RESTART komutu kullanılarak yürütmeye devam edilebilir.

Hata ayıklama moduna ayrıca, hata ayıklama modülü bir izleme noktası veya kesme noktası tetikleyerek veya hata ayıklanan yazılımdan bir BKPT (kesme noktası) talimatı vererek zaman uyumsuz olarak girilir. Talimat izleme için kullanılmadığında, ETM ayrıca hata ayıklama moduna girişi tetikleyebilir; durum ve geçmişe duyarlı karmaşık tetikleyicileri ve hata ayıklama modülünün sunduğu basit adres karşılaştırmalarını destekler. Hata ayıklama moduna eşzamansız geçişler, DSCR kaydının yoklanmasıyla algılanır. Tek adımlama şu şekilde uygulanır: Çekirdeği DURDUR, bir sonraki talimatta veya sonraki üst düzey ifadede geçici bir kesme noktası ayarlayın, RESTART, hata ayıklama durumuna eşzamansız giriş algılayana kadar DSCR'yi yoklayın, bu geçici kesme noktasını kaldırın, tekrarlayın.

İzleme modu hata ayıklama

Modern yazılımlar genellikle böyle tek dişli bir modelle iyi çalışamayacak kadar karmaşıktır. Örneğin, bir motoru kontrol etmek için kullanılan bir işlemci (muhtemelen testere bıçağı kullanan biri) durma moduna güvenli bir şekilde giremeyebilir; insanların ve/veya makinelerin fiziksel güvenliğini sağlamak için kesintileri işlemeye devam etmesi gerekebilir. JTAG kullanarak bir HALT talimatı vermek tehlikeli olabilir.

ARM işlemciler , bu tür durumlarla çalışmak için Monitör Modu adı verilen alternatif bir hata ayıklama modunu destekler . (Bu, daha yeni ARM çekirdeklerinde güvenlik uzantılarının bir parçası olarak uygulanan Güvenli İzleme Modundan farklıdır ; güvenlik geçişlerini değil hata ayıklama işlemlerini yönetir.) Bu durumlarda, kesme noktaları ve izleme noktaları özel bir tür donanım istisnasını tetikleyerek kontrolü bir " hata ayıklama monitörü" sistem yazılımının bir parçası olarak çalışır. Bu izleyici, DCC'yi kullanarak hata ayıklayıcı ile iletişim kurar ve örneğin, diğer işlemler (ve kesme işleyicileri) çalışmaya devam ederken yalnızca tek bir işlemi tek adımda düzenleyebilir.

Ortak uzantılar

Mikroişlemci satıcıları genellikle kendi temele özgü hata ayıklama uzantılarını tanımlamışlardır. Bu tür satıcılar arasında Infineon , EJTAG ile MIPS ve daha fazlası bulunur. Satıcı bir standart benimsemezse (ARM işlemcileri veya Nexus tarafından kullanılanlar gibi), kendi çözümlerini tanımlamaları gerekir. Sınır taramayı destekliyorlarsa, genellikle hata ayıklamayı JTAG üzerinden oluştururlar.

Freescale'de COP ve OnCE (On-Chip Emulation) bulunur. OnCE, bir TAP'ın özel bir moda girmesini sağlayan bir JTAG komutu içerir; burada IR, tek adımlama, kesme noktası oluşturma ve kayıtlara veya belleğe erişme gibi işlemler için OnCE hata ayıklama komutlarını tutar. Ayrıca, gerçek zamanlı sorunları ele alan olarak sunulan EOnCE'yi (Gelişmiş Çip Üzerinde Öykünme) tanımlar.

ARM , EmbeddedICE (çoğu ARM çekirdeğinde bulunan bir hata ayıklama tesisi) ile başlayan kapsamlı bir işlemci çekirdeği hata ayıklama mimarisine (CoreSight) sahiptir ve şimdi yüksek hızlı izleme bağlantı noktasına sahip bir ETM (Gömülü İzleme Makro Hücresi) gibi birçok ek bileşen içerir. çok çekirdekli ve çok iş parçacıklı izleme. İzlemenin invaziv olmadığını unutmayın; sistemlerin izlenebilmesi için çalışmayı durdurması gerekmez. (Ancak, izleme verileri, JTAG'i bir izleme kontrol kanalından daha fazlası olarak kullanmak için çok hacimlidir.)

Nexus , büyük ölçüde satıcıdan bağımsız bir işlemci hata ayıklama altyapısı tanımlar. Donanım arayüzlerinden biri JTAG'dir. Ayrıca, izleme ve daha fazlası için kullanılan yüksek hızlı bir yardımcı bağlantı noktası arabirimini tanımlar. Nexus, Atmel AVR32 ve Freescale MPC5500 serisi işlemciler gibi bazı yeni platformlarla birlikte kullanılır .

kullanır

  • En düşük uç sistemlerin bazıları dışında, esasen tüm gömülü sistem platformlarında, devre içi hata ayıklamayı ve ürün yazılımı programlamanın yanı sıra sınır tarama testini desteklemek için bir JTAG bağlantı noktası bulunur:
    • ARM mimarisi işlemcileri, bazen iki kablolu bir "SWD" varyantını veya talimat veya veri yollarında trafiğin yüksek hızlı izlenmesini destekleyen JTAG desteğiyle birlikte gelir.
    • Atmel AVR ve TI MSP430 yongaları gibi modern 8 bit ve 16 bit mikro denetleyici yongaları, JTAG programlama ve hata ayıklamayı destekler. Bununla birlikte, en küçük yongalar yedeklenecek yeterli pime sahip olmayabilir (ve bu nedenle tescilli tek kablolu programlama arayüzlerine güvenme eğilimindedir); pin sayısı 32'nin üzerindeyse muhtemelen bir JTAG seçeneği vardır.
    • Günümüzde kullanılan hemen hemen tüm FPGA'lar ve CPLD'ler bir JTAG portu üzerinden programlanabilir. Bir Standart Test ve Programlama Dili JEDEC standardında JESD-71 PLD en hakkındaki JTAG programlama için tanımlanır.
    • Birçok MIPS ve PowerPC işlemcisi JTAG desteğine sahiptir
    • Intel Core, Xeon, Atom ve Quark işlemcilerin tümü, 60-pin eXtended Debug Port [XDP] olarak adlandırılan JTAG'ın Intel'e özgü uzantılarıyla birlikte JTAG prob modunu destekler. Ayrıca Quark işlemci daha geleneksel 10 pinli konektörleri destekler.
    • Ağ cihazları ve uydu televizyon entegre alıcı/kod çözücüleri gibi tüketici ürünleri, genellikle JTAG'ı destekleyen mikroişlemciler kullanır ve mevcut önyükleyici bir şekilde bozulmuşsa bellenimi yeniden yüklemek için alternatif bir yol sağlar.
  • PCI Bus bağlantı standart pim 1-5 isteğe bağlı JTAG sinyallerini içerir; PCI Express , 5-9 pinlerinde JTAG sinyalleri içerir. Bozuk bir BIOS'u yeniden başlatmak için özel bir JTAG kartı kullanılabilir .
  • Sınır tarama testi ve sistem içi (cihaz) programlama uygulamaları bazen basit bir sözdizimi kullanılarak JTAG işlemlerinin metinsel bir temsili olan Seri Vektör Formatı kullanılarak programlanır . Diğer programlama formatları arasında 'JAM' ve STAPL ile daha yakın zamanda IEEE Std. 1532 tanımlı biçim 'ISC' (Sistem İçi Yapılandırma'nın kısaltması). ISC formatı, temel çıplak minimum IEEE 1149.1 talimatlarına ek olarak ek ISC_<operasyon> talimatlarını içeren programlanabilir mantık cihazları (yani FPGA'lar ve CPLD'ler) için geliştirilmiş BSDL modelleriyle birlikte kullanılır. Xilinx , Altera, Lattice, Cypress, Actel, vb.'den FPGA programlama araçları tipik olarak bu tür dosyaları dışa aktarabilir.
  • Belirtildiği gibi, birçok kart, sınır tarama testinin kart kalitesini doğrulamaya (kötü lehim bağlantılarını tanımlama vb.) ve flash bellek veya FPGA'ları başlatmaya yardımcı olduğu üretim işlemlerini desteklemek için JTAG konektörlerini veya yalnızca pedleri içerir .
  • JTAG ayrıca saha güncellemelerini ve sorun gidermeyi de destekleyebilir.

Müşteri desteği

Hedefin JTAG arayüzüne, bazı JTAG-etkin uygulama ve bazı JTAG adaptör donanımı kullanılarak erişilir. Üretim testi, yüksek hızlı sistemlerde hata ayıklama, düşük maliyetli mikrodenetleyici geliştirme ve benzeri amaçlar için optimize edilmiş çok çeşitli bu tür donanımlar vardır. Aynı şekilde, bu tür donanımları çalıştırmak için kullanılan yazılım da oldukça çeşitli olabilir. Yazılım geliştiricileri, çoğunlukla hata ayıklamak ve bellenimi güncellemek için JTAG kullanır.

Konnektörler

Bir Netgear FVS336G duvarı alt sol 14 pim JTAG başlığı mevcuttur.
"5" konumunda 8 pinli JTAG başlığına sahip bir Netgear DG632 ADSL modem .

JTAG adaptörü fiziksel konektörleri için resmi standartlar yoktur. Geliştirme panoları genellikle tercih edilen geliştirme araçlarını desteklemek için bir başlık içerir; bazı durumlarda bu tür birden çok başlığı içerirler çünkü bu tür birden çok aracı desteklemeleri gerekir. Örneğin, bir mikro denetleyici, FPGA ve ARM uygulama işlemcisi araçları nadiren paylaşır, bu nedenle tüm bu bileşenleri kullanan bir geliştirme kartında üç veya daha fazla başlık olabilir. Üretim panoları, başlıkları atlayabilir veya alan sınırlı olduğunda, test noktalarını kullanarak JTAG sinyal erişimi sağlayabilir.

2,54 mm (0,100 inç) pin başlıkları için bazı yaygın pin çıkışları şunlardır:

  • Hemen hemen tüm ARM tabanlı sistemler tarafından kullanılan ARM 2×10 pin (veya bazen daha eski 2×7)
  • İçin kullanılan MIPS EJTAG (2 x 7 pin) MIPS tabanlı sistemler
  • 2×5 pin Altera ByteBlaster uyumlu JTAG birçok satıcı tarafından genişletildi
  • 2×5 pinli AVR , Altera JTAG'ı SRST ile genişletir (ve bazı durumlarda TRST ve bir olay çıkışı)
  • DSP'ler ve OMAP gibi ARM tabanlı ürünlerle kullanılan 2×7 pinli Texas Instruments
  • Birçok Kafes ispDOWNLOAD kablosuyla uyumlu 8 pinli (tek sıra) jenerik PLD JTAG
  • JTAG, cJTAG ve SWD için MIPI 10-/20-konnektörler (1.27 mm 050")

Bu konektörler, yalnızca dört standart sinyalden (TMS, TCK, TDI, TDO) daha fazlasını içerme eğilimindedir. Genellikle, TRST (TAP sıfırlama) ve SRST'den (sistem sıfırlama) biri veya her ikisi olmak üzere sıfırlama sinyalleri sağlanır. Konnektör genellikle test edilen kartın mantıksal besleme voltajını sağlar, böylece JTAG adaptörleri uygun mantık seviyelerini kullanır. Kart voltajı, "kart mevcut" hata ayıklayıcı girişi olarak da hizmet edebilir. Daha karmaşık hata ayıklama mimarilerini desteklemek için diğer olay giriş veya çıkış sinyalleri veya genel amaçlı G/Ç (GPIO) hatları sağlanabilir .

Daha yüksek son ürünler , JTAG işlemleriyle bağlantılı olarak yüksek hızlı izlemeyi desteklemek için sıklıkla yoğun konektörler (sıklıkla 38-pin MICTOR konektörleri) kullanır . Son zamanlardaki bir eğilim, geliştirme kartlarının, bir seri bağlantı noktası için ikinci bir kanalın kullanıldığı JTAG'a bir USB arabirimi entegre etmesidir. (Daha küçük kartlara USB üzerinden de güç verilebilir. Modern PC'ler seri bağlantı noktalarını atlama eğiliminde olduğundan, bu tür entegre hata ayıklama bağlantıları geliştiriciler için karmaşayı önemli ölçüde azaltabilir.) Üretim kartları , test ve programlama için test noktalarına genellikle çivisiz bağlantılara güvenir .

Adaptör donanımı

Adaptör donanımı çok çeşitlidir. Geliştirme kartına entegre edilmediğinde, hedef karttaki JTAG konektörüne takmak için kısa bir kablo içerir; USB, PCI veya Ethernet bağlantısı gibi hata ayıklama ana bilgisayarına bağlantı; ve iki iletişim alanını uyarlamak için yeterli elektronik (ve bazen galvanik izolasyon sağlar ). Ayrı bir güç kaynağı gerekebilir. Ana bilgisayarın tüm JTAG işlemlerine karar verdiği ve gerçekleştirdiği "aptal" adaptörler vardır; ve bu işin bir kısmının genellikle bir mikro denetleyici tarafından çalıştırılan adaptörün içinde gerçekleştirildiği "akıllı" olanlar. "Akıllı" bağdaştırıcılar, adımlar arasında durum değişiklikleri için yoklamayı içerebilecek işlem dizileri için bağlantı gecikmelerini ortadan kaldırır ve buna göre daha hızlı verim sunabilir.

2018 itibariyle , ana bilgisayardan USB bağlantısına sahip adaptörler en yaygın yaklaşımdır. Daha yüksek son ürünler , hata ayıklama ana bilgisayarının oldukça uzak olabilmesi avantajıyla genellikle Ethernet'i destekler . Yüksek hızlı izleme bağlantı noktalarını destekleyen adaptörler genellikle birkaç megabaytlık izleme arabelleği içerir ve bu verileri ana bilgisayara almak için yüksek hızlı bağlantılar (USB veya Ethernet) sağlar.

Paralel bağlantı noktası bağdaştırıcıları basit ve ucuzdur, ancak her bir biti değiştirmek için ana bilgisayar CPU'sunu kullandıkları için nispeten yavaştırlar (" bit vuruyor "). Kullanışlılıkları azaldı çünkü son yıllarda çoğu bilgisayarda paralel bağlantı noktası yok. Sürücü desteği de bir sorundur, çünkü adaptörler tarafından pin kullanımı çok çeşitlidir. Paralel bağlantı noktası 5V mantık düzeyine dayandığından, çoğu adaptör 3.3V veya 1.8V hedef voltajlar için voltaj çevirme desteğinden yoksundu.

RS-232 seri port adaptörleri de mevcuttur ve benzer şekilde kullanışlılıkları azalmaktadır. Genellikle ya paralel bir porttan daha yavaş bit çarpması ya da bazı komut protokollerini JTAG işlemlerine çeviren bir mikro denetleyici içerirler. Bu tür seri bağdaştırıcılar da hızlı değildir, ancak komut protokolleri genellikle daha yüksek hızlı bağlantıların üstünde yeniden kullanılabilir.

Tüm JTAG adaptörlerinde yazılım desteği temel bir husustur. Birçok satıcı, JTAG adaptör donanımları tarafından kullanılan protokolleri yayınlamaz ve müşterilerini bu satıcılar tarafından desteklenen araç zincirleriyle sınırlar. Bu, bazıları belirli CPU'larla nasıl etkileşime girileceği hakkında önemli miktarda bilgi içeren "akıllı" bağdaştırıcılar için özel bir sorundur.

Yazılım geliştirme

Gömülü yazılım için çoğu geliştirme ortamı, JTAG desteğini içerir. Genel olarak konuşursak, bu tür yazılımların üç kaynağı vardır:

  • Çip satıcıları , genellikle sağladıkları bir JTAG adaptörü gerektiren araçları sağlayabilir. Örnekler FPGA gibi satıcılarının içerir Xlinix ve Altera , Atmel onun AVR8 ve AVR32 ürün için ve Texas Instruments onun DSP ve mikro ürünlerin çoğu için. Bu tür araçlar yüksek özellikli olma eğilimindedir ve FPGA'lar ve DSP'ler gibi son derece özel çipler için tek gerçek seçenek olabilir. Alt uç yazılım araçları ücretsiz olarak sağlanabilir. JTAG adaptörlerinin kendileri ücretsiz değildir, ancak bazen geliştirme kartlarıyla birlikte verilirler.
  • Araç satıcıları , platformlar arası geliştirme desteği sağlamak için genellikle birden çok yonga satıcısıyla birlikte bunları sağlayabilir. ARM tabanlı ürünler, özellikle zengin bir üçüncü taraf pazarına sahiptir ve bu satıcıların bir kısmı, MIPS ve PowerPC gibi ARM olmayan platformlara genişlemiştir . Araç satıcıları bazen GCC ve GDB gibi ücretsiz yazılımlar etrafında ürünler oluştururlar ve GUI desteği sıklıkla Eclipse'i kullanır . JTAG adaptörleri bazen destek paketleriyle birlikte satılır.
  • Açık kaynak araçları mevcuttur. Yukarıda belirtildiği gibi, GCC ve GDB iyi bir araç zincirinin özünü oluşturur ve bunları destekleyecek GUI ortamları vardır.

Bu tür yazılımların tümü, temel hata ayıklayıcı desteğini içerir: durdurma, durdurma, tek adımlama, kesme noktaları, veri yapısı tarama vb. Ticari araçlar, şu anda açık kaynak olarak mevcut olmayan çok hassas simülatörler ve iz analizi gibi araçlar sağlama eğilimindedir.

Benzer arayüz standartları

Seri Kablo Hata Ayıklama (SWD), aynı protokolü kullanan alternatif bir 2 pimli elektrik arabirimidir. Mevcut GND bağlantısını kullanır. SWD, ARM Hata Ayıklama Arayüzü v5'te tanımlanan bir ARM CPU standart çift yönlü kablo protokolü kullanır. Bu, hata ayıklayıcının sistem belleğine ve çevre birimine veya hata ayıklama kayıtlarına erişim için başka bir AMBA veri yolu yöneticisi olmasını sağlar. Veri hızı 50 MHz'de 4 MB/s'ye kadar . SWD ayrıca yerleşik hata algılama özelliğine sahiptir. SWD özelliğine sahip JTAG cihazlarında TMS ve TCK, çift modlu programcılar için SWDIO ve SWCLK sinyalleri olarak kullanılır.

Ayrıca bakınız

Referanslar

Dış bağlantılar