JTAG: Czytanie układów z wspólnym protokołem grupy testowej

JTAG: Reading Chips with Joint Test Action Group Protocol

JTAG (wspólna grupa akcji testowej) jest szeroko stosowanym protokołem do debugowania, programowania i testowania obwodów zintegrowanych (ICS). Umożliwia bezpośrednią komunikację z układem w celu odczytu jego pamięci, wykonywania skanów granicznych lub ładowania oprogramowania układowego. Ten samouczek poprowadzi Cię podstawy używania JTAG do czytania układów, w tym konfiguracji, narzędzi i najlepszych praktyk.


Co to jest JTAG?

JTAG to znormalizowany interfejs (IEEE 1149.1), który zapewnia sposób testowania i debugowania sprzętu na poziomie układu. Jest powszechnie używany w:

  • Rozwój i debugowanie oprogramowania
  • Testowanie połączeń PCB
  • Miganie oprogramowania na urządzeniach
  • Wyodrębnienie pamięci z ICS

JTAG używa interfejsu 4 lub 5-styków:

Szpilka Opis
TDI Dane testowe w
TDO Przetestuj dane
Tck Zegar testowy
TMS Tryb testowy Wybierz
Trst Reset testu (opcjonalnie)

Czego będziesz potrzebować

  1. Adapter JTAG: Urządzenie sprzętowe do interfejsu z układem (np. Segger J-Link, adaptery wspierane przez OpenOCD).
  2. Urządzenie docelowe: IC lub system, który chcesz przeczytać.
  3. Narzędzia programowe: Aplikacje do debugowania JTAG, takie jak narzędzia OpenOCD, URJTAG lub zastrzeżone.
  4. Dokumentacja pinout JTAG: Schemat pinout dla urządzenia docelowego.
  5. Akcesoria do połączeń: Przewody, nagłówki i płyta chlebowa (w razie potrzeby).

Krok 1: Konfigurowanie sprzętu JTAG

1. Zidentyfikuj interfejs JTAG na urządzeniu docelowym

  • Zapoznaj się z arkuszem danych lub schematów PCB, aby zlokalizować szpilki JTAG.
  • Wspólne etykiety dla pinów JTAG obejmują TDI, TDO, TCK, I TMS.
  • Niektóre tablice oznaczono nagłówki JTAG (np. 10-pinowe lub 20-pinowe złącza).

2. Podłącz adapter JTAG

  • Podłączyć adapter do urządzenia docelowego, dopasowując pinout JTAG:
    • TDI na adapterze łączy się z TDI na urządzeniu i tak dalej.
    • Upewnij się, że GND jest połączony między adapterem a celem.
    • W razie potrzeby zapewnij zasilanie urządzeniu docelowym.

3. Sprawdź poziomy napięcia

  • Upewnij się, że adapter JTAG obsługuje poziomy napięcia urządzenia docelowego (np. 3,3 V lub 1,8 V).
  • Niektóre adaptery mają konfigurowalne ustawienia napięcia.

Krok 2: Instalowanie narzędzi oprogramowania JTAG

1. OpenOCD (otwarty debugger na chipie)

OpenOCD to narzędzie open source, powszechnie używane do debugowania JTAG.

  • Zainstaluj go za pomocą menedżera pakietów (np. apt install openocd na Linux).
  • Upewnij się, że adapter JTAG jest obsługiwany przez OpenOCD.

2. Urjtag

Lekkie narzędzie do skanowania granicznego i podstawowych operacji JTAG.

3. Narzędzia specyficzne dla dostawcy

W przypadku zastrzeżonych adapterów, takich jak Segger J-Link lub Xilinx, użyj ich oficjalnego oprogramowania:

  • Segger J-Link: Pobierz narzędzia J-Link z Witryna Seggera.
  • Narzędzia xilinx: Użyj Vivado lub wpływ na debugowanie FPGA.

Krok 3: Odczyt danych z układu

1. Skonfiguruj oprogramowanie JTAG

  • Utwórz lub załaduj plik konfiguracyjny określający adapter JTAG i urządzenie docelowe.
    • Przykład dla OpenOCD:
      source [find interface/jlink.cfg]
      transport select jtag
      source [find target/stm32f4x.cfg]
      init
      halt
      

2. Wykryj urządzenie docelowe

Uruchom polecenie, aby zeskanować łańcuch JTAG i zidentyfikować podłączone urządzenia.

  • Dla OpenOCD:
    openocd -f interface/jlink.cfg -f target/stm32f4x.cfg
    
    Poszukaj wykrytych urządzeń w dzienniku wyjściowym.

3. Zrzucanie zawartości pamięci

Użyj poleceń JTAG, aby odczytać regiony pamięci:

  • Dla OpenOCD:
    dump_image memory.bin 0x08000000 0x10000
    
    • memory.bin: Plik, aby zapisać zrzut pamięci.
    • 0x08000000: Rozpocznij adres.
    • 0x10000: Liczba bajtów do przeczytania.

4. Wykonaj skany graniczne

Skany graniczne sprawdzają łączność i funkcjonalność pinów IC.

  • Użyj URJTAG lub OpenOCD do wykonywania skanów granicznych.
  • Przykład w urjtag:
    cable jtagkey
    detect
    bsdl path/to/bsdl/file.bsd
    svf boundary_scan.svf
    

Krok 4: Najlepsze praktyki debugowania JTAG

  1. Zabezpiecz połączenie: Użyj krótkich, niezawodnych przewodów, aby zminimalizować szum.
  2. Sprawdź pinout: Dokładnie sprawdź połączenia PIN JTAG, aby uniknąć uszkodzenia urządzenia.
  3. Tworzenie kopii zapasowych oprogramowania: Zawsze wykonaj kopię zapasową oryginalnego oprogramowania układowego przed wprowadzeniem zmian.
  4. Użyj poprawnego oprogramowania: Upewnij się, że narzędzie, którego używasz, obsługuje urządzenie docelowe.
  5. Monitorowanie napięcia: Upewnij się, że urządzenie docelowe działa we właściwym poziomie napięcia.

Zastosowania JTAG

  1. Debugowanie oprogramowania i oprogramowania
  2. Miga nowe oprogramowanie układowe lub ładowarki
  3. Wyodrębnienie danych z pamięci do analizy
  4. Diagnozowanie wad produkcyjnych PCB
  5. Sprzęt do inżynierii odwrotnej

Rozwiązywanie problemów

  • Urządzenie nie wykryte:

    • Sprawdź okablowanie i pinout.
    • Upewnij się, że urządzenie docelowe jest włączone.
    • Sprawdź poziomy napięcia pod kątem zgodności.
  • Błędy JTAG:

    • Upewnij się, że używany jest prawidłowy plik konfiguracyjny.
    • Spróbuj obniżyć prędkość zegara JTAG, jeśli komunikacja się nie powiedzie.
  • Problemy z uprawnieniami:

    • W systemie Linux upewnij się, że masz odpowiednie uprawnienia do dostępu do urządzeń USB (używaj sudo lub skonfiguruj udev zasady).

Wniosek

JTAG jest nieocenionym narzędziem do debugowania i programowania układów na niskim poziomie. Rozumiejąc podstawy sprzętu i oprogramowania JTAG, możesz odczytać pamięć układu, debugować oprogramowanie układowe i wykonywać skany graniczne. Eksperymentuj z różnymi narzędziami i konfiguracją, aby w pełni wykorzystać JTAG w swoich projektach!

Zostaw komentarz

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.