Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial Internet of Things >> Eingebettet

JTAG und ARM-Core-Debugging verstehen: ADI und SWD erklärt

Dieser Artikel entmystifiziert, wie JTAG in ARM-Core-Devices integriert ist, mit Fokus auf das Arm Debug Interface (ADI) und das Serial Wire Debug (SWD) Protokoll.

Frühere Posts dieser Serie erkundeten den IEEE 1149.1 Standard, den Test Access Port (TAP) Controller und die TAP State Machine. Wir reviewten auch gängige JTAG Pinouts, Connectoren und die Vielfalt marktverfügbarer Debug Probes.

Hier pivotieren wir zum ARM-Ökosystem und detaillieren, wie die allgegenwärtigen ARM Core Prozessoren JTAG durch ADI und seine Zwei-Draht SWD-Variante implementieren.

Was ist ARM?

ARM bezeichnet eine Prozessorarchitektur und ein vastes Portfolio an Intellectual Property, das Mikroprozessor- und Mikrocontroller-Interfaces definiert. Während Consumer PCs typischerweise x86 nutzen, verlassen sich Embedded Systems fast ausschließlich auf ARM Cores.

Core IP wird an Siliziumhersteller lizenziert – wie STMicroelectronics, NXP und andere – die dann periphere Features hinzufügen (I²C, SPI, ADC/DAC, USB, etc.). ARM Architekturen sind versioniert (ARMv2, ARMv6, ARMv7, ARMv8, etc.), und die Cores sind als ARMx (z. B. ARM7) oder, jüngster, als Cortex-A/R/M Series für Application, Real-Time und Microcontroller Use Cases gebrandet. Architekturversionierung folgt dem Cortex-Suffix, was Namen wie ARMv7-A oder ARMv6-M ergibt.

Debugging in ARM wird durch die CoreSight Architektur geregelt, die das Arm Debug Interface (ADI), Embedded Trace Macrocell (ETM), High-Speed Serial Trace Ports (HSSTP) und Program-Flow Trace umfasst. Das ADI stellt die Debugging-Grundlage bereit und bietet sowohl ein JTAG-Interface als auch die Serial Wire Debug (SWD) Alternative.

Arm Debug Interface (ADI) Überblick

Die ADI-Spezifikation definiert sowohl Hardware- als auch logische Interfaces zwischen einem Host-Debugger und einem oder mehreren ARM Devices. Die meisten zeitgenössischen Prozessoren unterstützen ADIv5 (Arm IHI0031E), während ADIv6 (Arm IHI0074C) graduell adoptiert wird. Wir fokussieren auf ADIv5.

ADI führt den Debug Access Port (DAP) ein, bestehend aus einem Debug Port (DP) und einem oder mehreren Access Ports (APs). Der DP managt die physische Verbindung (JTAG oder SWD) und enthält built-in Register; APs bieten Zugriff auf Systemressourcen wie Debug-Register, Trace Ports, ROM Tables oder System Memory.

ADI unterstützt zwei DP-Typen: JTAG-DP und SWD-DP. APs kommen in drei Varianten: MEM-AP (Memory-Mapped Access), JTAG-AP (Scanning der gesamten Debug Unit) und Vendor-Specific APs. MEM-APs sind am häufigsten.

Im Kontext von JTAG liefert ADIv5 einen Satz Instruktionscodes (z. B. EXTEST, SAMPLE, PRELOAD, INTEST, CLAMP, HIGHZ, ABORT, DPACC, APACC, IDCODE, BYPASS) und Data Registers (ABORT, DPACC, APACC, IDCODE, BYPASS). Besonders DPACC und APACC erlauben dem Debugger, Kommandos an DP- und AP-Register zu senden.

Typische DP Register umfassen:

MEM-AP Register umfassen:

Abbildung 1 illustriert die ADI Verdrahtung und Register Map (nicht alle Register sind der Kürze halber gezeigt).

JTAG und ARM-Core-Debugging verstehen: ADI und SWD erklärt

Abbildung 1. Arm Debug Interface Diagramm, Zusammenfassung der Verbindungen. Nicht alle DP/AP Register sind dargestellt.

Serial Wire Debug (SWD)

SWD ist ARMs Zwei-Draht JTAG Alternative, designed für Devices mit limitierter Pin Count. Viele Cortex-M Mikrocontroller nutzen SWD statt vollem JTAG, um Pins zu sparen.

SWD ersetzt das JTAG TDI/TDO Paar durch einen einzelnen bidirektionalen SWDIO Pin, eliminiert den TMS Pin und behält den Clock (relabeled SWCLK). Da SWD die TAP State Machine weglässt, werden Kommandos seriell über SWDIO gesendet und dann derselbe Pin für Data Transfer genutzt.

Kommunikation verläuft in drei Phasen: Packet Request, Acknowledgment und Data Transfer. Ein Parity Bit wird durchgängig verwendet. Die Sequenz beginnt mit Start Bit (HIGH), gefolgt von AP/DP Bit, RnW Bit, Address Bits, Parity, Stop Bit (LOW) und Park Bit. Nach dem Request antwortet das Target mit einem 3-Bit ACK. Für Writes sendet der Host 32 Bits Data (LSB first) mit Parity Bit; für Reads treibt das Target 32 Bits Data zurück zum Host.

Abbildung 2 zeigt das Timing Diagram für Read und Write Operationen.

JTAG und ARM-Core-Debugging verstehen: ADI und SWD erklärt

Abbildung 2. Timing Diagramme für Serial Wire Debug Read und Write Operationen. Zum Vergrößern klicken.

Zwei SWD Versionen existieren: SWDv1 (Point-to-Point) und SWDv2 (Single-Host, Multi-Target). Version 2 ist weitgehend backward compatible mit minor Edge-Case Unterschieden.

Weitere Reduced-Pin JTAG Varianten

Jenseits von SWD definiert der IEEE 1149.7 Standard ein Zwei-Draht JTAG Interface. Zusätzliche IEEE 1149.x Standards (1149.4 für Mixed-Signal Test, 1149.6 für Advanced Digital Networks) bieten erweiterte Fähigkeiten wie Analog Boundary-Scan und differentielle AC-gekoppelte Leitungen.

Aktualisierte Standards finden sich auf der IEEE Standards Association Website.

Fazit

Wir haben JTAGs Ursprünge verfolgt, seine physische Implementierung untersucht und erkundet, wie ARM Core Prozessoren JTAG via ADI und SWD Protokolle adaptieren. Mit diesem Wissen können Ingenieure embedded Devices sicher debuggen und programmieren, das passende Interface für ihre Hardware-Constraints wählend.

Eingebettet

  1. Arm führt Custom Instruction Support für Cortex-M Kerne ein – Mehr Flexibilität
  2. Zuverlässige Power-On-Lösungen für batterieoperierte Medizinprodukte
  3. Mouser führt Analog Devices ADIS1647x IMUs: Präzisionsnavigation für IoT, UAVs, AR/VR
  4. ams & Face++ Partnerschaft: Beschleunigung von 3D-Optischem Sensing für schnelleres Face-Recognition-Deployment
  5. Marvell vertieft strategische Allianz mit Arm für Next-Gen ThunderX Server Prozessoren
  6. Fortschritte in der Medizintechnik verfolgen
  7. Infineon stellt IMC300 Motor Controller mit integriertem Arm Cortex-M0 für erhöhte Flexibilität vor
  8. ADI bringt ADM2867E: Integrierter isolierter RS-485 Transceiver mit DC/DC Wandler für platzsparende Applikationen
  9. Arm stärkt IoT-Konnektivität und Gerätemanagement durch Stream Technologies-Übernahme
  10. Ankerwinden-Sicherheitseinrichtungen: Wichtige Schutzfunktionen für den Schiffsbetrieb