Ada apa artinya 'JTAG' dan ada apa JTAG 'adalah'. Seperti orang lain telah menunjukkan JTAG 'adalah' standar antarmuka bus industri untuk manufaktur pengujian, seperti di J sendi T est A ksi G roup.
Apa artinya JTAG bagi pengembang perangkat lunak tertanam adalah antarmuka debug pada SoC / mikroprosesor untuk debug eksternal perangkat lunak tertanam yang dijalankan pada chip. Hampir setiap CPU / SoC di pasaran menggunakan antarmuka JTAG tidak hanya untuk pengujian pembuatan, tetapi untuk dukungan debug perangkat lunak. Anda akan menemukan antarmuka JTAG di segala hal mulai dari server kelas x86 CPU hingga router WiFi rumahan di bawah $ 50. Dengan perangkat keras antarmuka yang tepat, dan perangkat lunak yang tepat, antarmuka ini akan memberi Anda kemampuan untuk membaca / menulis memori, mengatur breakpoint, dan kode satu langkah.
Kuncinya tentu saja adalah mendapatkan perangkat keras dan perangkat lunak yang tepat. Meskipun antarmuka JTAG standar adalah standar, fasilitas debug perangkat lunak tertentu yang tersedia di perangkat mungkin tidak. JTAG seperti TCP / IP. Itu ada di tengah tumpukan aplikasi. Anda memerlukan lapisan fisik yang tepat untuk berkomunikasi dengan peralatan (yaitu, apa maksud Anda hal ini menggunakan 10-Base-2?!?!?), Dan Anda memerlukan perangkat lunak aplikasi yang tepat di atasnya (apa maksud Anda, saya memerlukan seorang Gopher klien?!?!?!). Namun kekuatan ekosistem ARM telah menyebabkan beberapa tingkat standardisasi di sana (lihat OpenOCD).
Anda juga bertanya tentang menggunakan JTAG untuk memprogram flash. Ya, beberapa perangkat lunak menggunakannya untuk tujuan itu juga. SoC dapat menyediakan fasilitas JTAG untuk membaca / menulis dari ruang alamat memori CPU, ia dapat memberikan akses langsung ke pengontrol flash, dan setidaknya JTAG menyediakan akses mentah tingkat rendah ke pin I / O di tepi chip (ini adalah tujuan asli JTAG, untuk memungkinkan pengujian kontinuitas chip ke chip interkoneksi selama pengujian manufaktur, yaitu 'pemindaian batas JTAG'). Salah satu dari fasilitas ini dapat digunakan oleh programmer yang pintar untuk menggerakkan sinyal yang diperlukan untuk memprogram ulang chip flash jika perangkat secara tidak sengaja 'diblok'.