Debugowanie JTAG vs SWD

41

Po przejrzeniu tego artykułu zastanawiam się, jakie są zalety debugowania SWD w porównaniu z debugowaniem JTAG?

Rozumiem, że SWD zużywa mniej przewodów / pinów, zajmuje mniej miejsca itp. Ale jak to się dzieje pod względem wydajności, funkcji i kosztów sprzętowego programatora / debuggera? Czy kod nadal może być przerywany / przerywany i przechodzący przez IDE jak Eclipse?

Czy można zaprogramować układ ARM za pomocą interfejsu SWD, tak jak sądzę, że można to zrobić w JTAG?

josef.van.niekerk
źródło
Układy oparte na ARM z nowszymi rdzeniami (na przykład Cortex) można programować i debugować za pomocą SWD.
B Pete,
@Beteete: Odkryłem, że dzięki SWD trudno jest debugować układy oparte na ST, które używają trybu uśpienia; nasze obecne tablice nie mają dostępnych pinów dla JTAG, ale zastanawiałem się, czy JTAG może być lepszy pod tym względem?
supercat
2
To (SWD) przypomina trochę interfejs Spy Bi-Wire, który TI umieścił na podzbiorze swoich procesorów MSP430. Jest to 2-przewodowy podobny do JTAG (plus zasilanie i masa) z SBWTCLK i SBWTDIO zmultipleksowanymi na dwóch pinach innych niż GPIO (TEST i RST / NMI) na przykładowym urządzeniu. Obsługiwane przez devkit EZ430. I to (SBW) obsługuje stopnie i punkty przerwania! Nie wiem, czy ARM TI mają ten sam interfejs, ale byłoby interesujące, gdyby istniała wystarczająca podobieństwo między nimi, aby dzielić narzędzia programistyczne / debugujące.
Brian Drummond,
Twój link do artykułu jest martwy, ale może to był artykuł? arm.com/files/pdf/Serial_Wire_Debug.pdf
Gabriel Staples

Odpowiedzi:

12

SWD powinien mieć możliwość zaprogramowania mikroukładu ARM oraz debugowania i dodawania punktów przerwania. Inną dobrą rzeczą w SWD jest to, że można użyć przeglądarki szeregowej do wyświetlania instrukcji printf w celu debugowania. Użyłem go tylko z kompilatorem Keil.

użytkownik468662
źródło
Spójrz na ten link w przeglądarce przewodów szeregowych. keil.com/download/files/swv_on_cortex-m3.pdf
user468662
37

Elektrycznie

  • Liczba pinów
    • JTAG wymaga 4 linii sygnałowych
    • SWD wymaga tylko 2 linii sygnałowych
    • 2-żyłowy interfejs JTAG określony w IEEE 1149.7 obniża liczbę pinów, ale wydaje się, że nie jest powszechnie dostępny na wielu układach scalonych. Zmniejsza to także przepustowość.
  • Topologia
    • JTAG wykorzystuje konfigurację łańcuchową dla swoich linii danych między chipami. Prędkość JTAG jest więc ograniczona przez najwolniejszy układ w łańcuchu. Jego resetowanie i czyste linie są wbudowane (nie powiązane), co pozwala na interoperacyjność poprzez SWDJ-DP (patrz dyskusja poniżej).
    • 2-przewodowy JTAG pozwala na topologię gwiazdy, ale nie jest często używany.
    • SWD pozwala na topologie gwiazd

Funkcjonalnie

  • SWD jest protokołem specyficznym dla ARM zaprojektowanym specjalnie do mikro debugowania.
  • JTAG (Joint Test Action Group) został zaprojektowany głównie do testowania układów scalonych i płyt. Służy do skanowania granic , sprawdzania błędów w chipach / płytach podczas produkcji. Debugowanie i flashowanie mikrosów było ewolucją ich aplikacji w czasie.
  • JTAG jest używany dla wielu architektur mikrokontrolerów / procesorów oprócz ARM.

ogólna dyskusja

JTAG jest szerzej wspierany, począwszy od 2017 r., Przez mikrosy, programatory i linie produkcyjne spoza ARM. Programiści dla JTAG można taniej w postaci breakoutów FT232H [*] i innych takich urządzeń programujących. Jednak SWD ma wyraźną przewagę w szybkości i innych obszarach debugowania układów ARM.

Ze względu na rozłam w zamierzonym charakterze JTAG w testowaniu i SWD w debugowaniu, ARM zapewnia SWJ-DP (port szeregowy / port debugowania jtag) za pośrednictwem swojej technologii CoreSight, która mapuje piny SWD na zegarze JTAG i liniach resetowania. SWJ-DP pozwala zatem na użycie obu protokołów na tym samym fizycznym połączeniu, choć niekoniecznie w tym samym czasie lub z tymi samymi programistami, co JTAG, a SWD musiałoby zostać zmultipleksowane w czasie.

Przydatne referencje

rozproszony wstecznie
źródło
7

Być może jestem trochę za późno na OP, ale może przyda się innym osobom z tym samym pytaniem. Tak więc, zaczynamy (osobiste doświadczenie): Możliwe jest programowanie i debugowanie (pobieranie pamięci / rejestrowanie map, przerywanie, uruchamianie z określonego punktu itp.) Za pomocą SWD. Korzystanie z Eclipse tutaj z GDB za pośrednictwem J-Link EDU, która kosztuje około 50 euro. Istnieją pewne błędy (resetowanie celu za pomocą debugera, czasami nie łączy się ani nie pobiera map), ale jest stosunkowo tani i użyteczny, gdy tylko zapoznasz się z jego dziwactwami

Stiebrs
źródło
7

Stare pytanie, ale żadna z odpowiedzi nie dotyczy porównania wydajności. Chociaż zestaw funkcji między SWD i JTAG (przy użyciu DAP CoreSight) jest prawie taki sam, sekwencje SWD są o około 10% krótsze niż równoważne sekwencje JTAG.

W większości przypadków nie występuje utrata przepustowości danych (szczególnie strumieniowe odczyty lub zapisy, w których przepustowość jest najważniejsza).

Sean Houlihane
źródło