JTAG: citirea jetoanelor cu protocolul grupului de acțiune de testare comună

JTAG: Reading Chips with Joint Test Action Group Protocol

JTAG (grup de acțiune de testare comună) este un protocol utilizat pe scară largă pentru depanare, programare și testare a circuitelor integrate (ICS). Permite comunicarea directă cu un cip pentru a -și citi memoria, a efectua scanări de graniță sau a încărca firmware -ul. Acest tutorial vă va ghida prin elementele de bază ale utilizării JTAG pentru a citi jetoane, inclusiv configurarea, instrumentele și cele mai bune practici.


Ce este JTAG?

JTAG este o interfață standardizată (IEEE 1149.1) care oferă o modalitate de testare și depanare a hardware -ului la nivelul cipului. Este utilizat în mod obișnuit în:

  • Dezvoltarea firmware -ului și depanarea
  • Testarea conexiunilor PCB
  • Firmware intermitent pe dispozitive
  • Extragerea memoriei din ICS

JTAG folosește o interfață cu 4 sau 5 pini:

Ac Descriere
TDI Date de testare în
Tdo Testarea datelor
TCK Ceas de testare
TMS Modul de testare Selectați
Trst Resetare de testare (opțional)

Ce vei avea nevoie

  1. Adaptor JTAG: Un dispozitiv hardware pentru a interfața cu cipul (de exemplu, Segger J-Link, adaptoare suportate de OpenOCD).
  2. Dispozitiv țintă: IC sau sistemul pe care doriți să îl citiți.
  3. Instrumente software: Aplicații pentru depanare JTAG, cum ar fi OpenOCD, URJTAG sau instrumente proprii.
  4. Documentația JTAG Pinout: Diagrama PINOUT pentru dispozitivul țintă.
  5. Accesorii de conexiune: Fire, anteturi și o bordură (dacă este necesar).

Pasul 1: Configurarea hardware -ului JTAG

1. Identificați interfața JTAG pe dispozitivul țintă

  • Consultați fișa tehnică a cipului sau schemele PCB pentru a localiza pinii JTAG.
  • Etichetele comune pentru pinii JTAG includ TDI, TDO, TCK, și TMS.
  • Unele plăci au etichetat anteturi JTAG (de exemplu, conectori cu 10 pini sau 20 de pini).

2. Conectați adaptorul JTAG

  • Conectați adaptorul la dispozitivul țintă, potrivind pinout -ul JTAG:
    • TDI pe adaptor se conectează la TDI pe dispozitiv și așa mai departe.
    • Asigurați -vă că GND este conectat între adaptor și țintă.
    • Oferiți putere dispozitivului țintă, dacă este necesar.

3. Verificați nivelurile de tensiune

  • Asigurați -vă că adaptorul JTAG acceptă nivelurile de tensiune ale dispozitivului țintă (de exemplu, 3.3V sau 1.8V).
  • Unele adaptoare au setări de tensiune configurabile.

Pasul 2: Instalarea instrumentelor software JTAG

1. OpenOCD (Debugger Open On-Chip)

OpenOCD este un instrument open-source utilizat pe scară largă pentru depanarea JTAG.

  • Instalați -l folosind managerul de pachete (de exemplu, apt install openocd pe Linux).
  • Asigurați -vă că adaptorul JTAG este acceptat de OpenOCD.

2. Urjtag

Un instrument ușor pentru scanarea graniței și operațiunile de bază JTAG.

3. Instrumente specifice vânzătorului

Pentru adaptoare proprii precum Segger J-Link sau Xilinx, utilizați software-ul lor oficial:

  • Segger J-Link: Descărcați instrumentele J-Link din Site -ul Segger.
  • Instrumente xilinx: Utilizați Vivado sau Impact pentru depanarea FPGA.

Pasul 3: Citirea datelor dintr -un cip

1. Configurați software -ul JTAG

  • Creați sau încărcați un fișier de configurare care specifică adaptorul JTAG și dispozitivul țintă.
    • Exemplu pentru OpenOCD:
      source [find interface/jlink.cfg]
      transport select jtag
      source [find target/stm32f4x.cfg]
      init
      halt
      

2. Detectați dispozitivul țintă

Rulați o comandă pentru a scana lanțul JTAG și pentru a identifica dispozitivele conectate.

  • Pentru OpenOCD:
    openocd -f interface/jlink.cfg -f target/stm32f4x.cfg
    
    Căutați dispozitive detectate în jurnalul de ieșire.

3. Conținutul memoriei Dump

Utilizați comenzi JTAG pentru a citi regiuni de memorie:

  • Pentru OpenOCD:
    dump_image memory.bin 0x08000000 0x10000
    
    • memory.bin: Fișier pentru a salva groapa de memorie.
    • 0x08000000: Adresa de pornire.
    • 0x10000: Numărul de octeți de citit.

4. Efectuați scanări de graniță

Scanările de graniță verifică conectivitatea și funcționalitatea pinilor IC.

  • Utilizați Urjtag sau OpenOCD pentru a efectua scanări de graniță.
  • Exemplu în urjtag:
    cable jtagkey
    detect
    bsdl path/to/bsdl/file.bsd
    svf boundary_scan.svf
    

Pasul 4: Cele mai bune practici pentru depanarea JTAG

  1. Asigurați conexiunea: Folosiți fire scurte și fiabile pentru a minimiza zgomotul.
  2. Verificați Pinout: Verificați dublu conexiunile PIN JTAG pentru a evita deteriorarea dispozitivului.
  3. Firmware de rezervă: Faceți întotdeauna o copie de rezervă a firmware -ului original înainte de a face modificări.
  4. Utilizați software -ul corect: Asigurați -vă că instrumentul pe care îl utilizați acceptă dispozitivul țintă.
  5. Tensiunea de monitorizare: Asigurați -vă că dispozitivul țintă funcționează la nivelul corect de tensiune.

Aplicațiile JTAG

  1. Debugging firmware și software
  2. Clipește noi firmware sau bootloatoare
  3. Extragerea datelor din memorie pentru analiză
  4. Diagnosticarea defectelor de fabricație PCB
  5. Hardware invers de inginerie

Depanare

  • Dispozitivul care nu este detectat:

    • Verificați cablarea și pinout -ul.
    • Asigurați -vă că dispozitivul țintă este pornit.
    • Verificați nivelurile de tensiune pentru compatibilitate.
  • Erori JTAG:

    • Asigurați -vă că este utilizat fișierul de configurare corect.
    • Încercați să coborâți viteza ceasului JTAG dacă comunicarea eșuează.
  • Probleme cu permisiunea:

    • Pe Linux, asigurați -vă că aveți permisiuni adecvate pentru a accesa dispozitive USB (utilizarea sudo sau configurați udev reguli).

Concluzie

JTAG este un instrument de neprețuit pentru depanare și programare a jetoanelor la un nivel scăzut. Înțelegând elementele de bază ale hardware -ului și software -ului JTAG, puteți citi memoria cipului, firmware -ul de depanare și puteți efectua scanări de graniță. Experimentați cu diferite instrumente și configurații pentru a utiliza pe deplin JTAG în proiectele dvs.!

Lasă un comentariu

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.