Es gibt das, was JTAG bedeutet, und es gibt das, was JTAG bedeutet. Wie andere aus JTAG hingewiesen haben ‚ist‘ eine Industriestandard-Schnittstelle zum Testen der Herstellung, wie dies in J Oint T est A ction G ruppe.
Was JTAG für einen Entwickler eingebetteter Software bedeutet, ist die Debug-Schnittstelle auf dem SoC / Mikroprozessor für das externe Debuggen eingebetteter Software, die auf dem Chip ausgeführt wird. Nahezu jede CPU / SoC auf dem Markt verwendet die JTAG-Schnittstelle nicht nur für Herstellungstests, sondern auch für die Unterstützung von Software-Debugs. Sie finden eine JTAG-Schnittstelle auf allen Servern, von x86-CPUs bis hin zu WLAN-Routern für Heimanwendungen unter 50 US-Dollar. Mit der richtigen Schnittstellenhardware und der richtigen Software können Sie über diese Schnittstellen Speicher lesen / schreiben, Haltepunkte setzen und in einem Schritt Code erstellen.
Der Schlüssel ist natürlich die richtige Hardware und Software. Auch wenn die grundlegende JTAG-Schnittstelle standardisiert ist, sind die spezifischen Software-Debug-Funktionen, die in einem Gerät verfügbar sind, möglicherweise nicht verfügbar. JTAG ist wie TCP / IP. Es befindet sich in der Mitte des Anwendungsstapels. Sie benötigen die richtige physikalische Schicht, um mit dem Gerät zu kommunizieren (dh, was bedeutet, dass dieses Ding 10-Base-2 verwendet?!?!?), Und Sie benötigen darüber die richtige Anwendungssoftware (was bedeutet, dass ich einen Gopher benötige) Klient?!?!?!). Die Stärke des ARM-Ökosystems hat jedoch zu einer gewissen Standardisierung geführt (siehe OpenOCD).
Sie haben auch nach der Verwendung von JTAG zum Programmieren von Flash gefragt. Ja, manche Software verwendet es auch für diesen Zweck. Der SoC kann JTAG-Funktionen zum Lesen / Schreiben von CPU-Speicheradressräumen bereitstellen, er kann direkten Zugriff auf Flash-Controller bereitstellen und JTAG bietet mindestens unformatierten Low-Level-Zugriff auf E / A-Pins am Rand des Chips (dies war ursprünglicher Zweck der JTAG, die Durchgangsprüfung von Chip-zu-Chip-Verbindungen während des Fertigungstests zu ermöglichen, dh „JTAG Boundary Scan“). Jede dieser Einrichtungen könnte von geschickten Programmierern verwendet werden, um die zum Umprogrammieren eines Flash-Chips erforderlichen Signale zu steuern, falls ein Gerät versehentlich zugemauert wird.