JTAG (Joint Test Action Group) är ett allmänt använt protokoll för felsökning, programmering och testning av integrerade kretsar (ICS). Det gör det möjligt för direkt kommunikation med ett chip att läsa dess minne, utföra gränsskanningar eller ladda firmware. Denna handledning kommer att vägleda dig genom grunderna för att använda JTAG för att läsa chips, inklusive installation, verktyg och bästa praxis.
Vad är JTAG?
JTAG är ett standardiserat gränssnitt (IEEE 1149.1) som ger ett sätt att testa och felsöka hårdvara på chipnivå. Det används vanligtvis i:
- Firmware -utveckling och felsökning
- Testa PCB -anslutningar
- Blinkande firmware på enheter
- Extrahera minne från ICS
JTAG använder ett 4 eller 5-stifts gränssnitt:
Stift | Beskrivning |
---|---|
Tdi | Testa data i |
Tdo | Testa data |
Tck | Provklocka |
Tms | Testläge Välj |
Trst | Teståterställning (valfritt) |
Vad du behöver
- JTAG -adapter: En hårdvaruenhet för att gränssnittet med chipet (t.ex. Segger J-Link, OpenOCD-stödda adaptrar).
- Målenhet: IC eller systemet du vill läsa.
- Programverktyg: Applikationer för JTAG -felsökning, såsom OpenOCD, UrjTAG eller Proprietary Tools.
- JTAG Pinout -dokumentation: Pinout -diagram för målenheten.
- Anslutningstillbehör: Ledningar, rubriker och en brödskiva (vid behov).
Steg 1: Ställa in JTAG -hårdvaran
1. Identifiera JTAG -gränssnittet på målenheten
- Se chipets datablad eller PCB -scheman för att hitta JTAG -stiften.
- Vanliga etiketter för JTAG -stift inkluderar
TDI
,TDO
,TCK
ochTMS
. - Vissa brädor har märkt JTAG-rubriker (t.ex. 10-stifts- eller 20-stifts anslutningar).
2. Anslut JTAG -adaptern
- Trå adaptern till målenheten och matcha JTAG -pinout:
-
TDI
på adaptern ansluter tillTDI
på enheten, och så vidare. - Se till att GND är ansluten mellan adaptern och målet.
- Ge kraft till målenheten vid behov.
-
3. Verifiera spänningsnivåerna
- Se till att JTAG -adaptern stöder spänningsnivåerna för målenheten (t.ex. 3.3V eller 1,8V).
- Vissa adaptrar har konfigurerbara spänningsinställningar.
Steg 2: Installera JTAG -programvaruverktyg
1. OpenOCD (Open On-Chip Debugger)
OpenOCD är ett öppet källkodsverktyg som är allmänt använt för JTAG-felsökning.
- Installera den med din pakethanterare (t.ex.
apt install openocd
på Linux). - Se till att din JTAG -adapter stöds av OpenOCD.
2. Urjtag
Ett lätt verktyg för gränsskanning och grundläggande JTAG -operationer.
- Installera via UrjTags webbplats.
3. Leverantörsspecifika verktyg
För proprietära adaptrar som Segger J-Link eller Xilinx, använd deras officiella programvara:
- Segger J-Link: Ladda ner J-Link-verktygen från Seggers webbplats.
- Xilinx -verktyg: Använd Vivado eller påverkan för FPGA -felsökning.
Steg 3: Att läsa data från ett chip
1. Konfigurera JTAG -programvaran
- Skapa eller ladda en konfigurationsfil som anger JTAG -adapter och målenhet.
- Exempel för OpenOCD:
source [find interface/jlink.cfg] transport select jtag source [find target/stm32f4x.cfg] init halt
- Exempel för OpenOCD:
2. Upptäck målenheten
Kör ett kommando för att skanna JTAG -kedjan och identifiera anslutna enheter.
- För OpenOCD:
Leta efter detekterade enheter i utgångsloggen.openocd -f interface/jlink.cfg -f target/stm32f4x.cfg
3. Dumpminnesinnehåll
Använd JTAG -kommandon för att läsa minnesregioner:
- För OpenOCD:
dump_image memory.bin 0x08000000 0x10000
-
memory.bin
: Fil för att spara minnesdumpen. -
0x08000000
: Starta adressen. -
0x10000
: Antal byte att läsa.
-
4. Utför gränsskanningar
Gränsskanningar Kontrollera för anslutning och funktionalitet för IC -stiften.
- Använd urjtag eller openocd för att utföra gränsskanningar.
- Exempel i urjtag:
cable jtagkey detect bsdl path/to/bsdl/file.bsd svf boundary_scan.svf
Steg 4: Bästa praxis för JTAG -felsökning
- Säkra anslutningen: Använd korta, pålitliga ledningar för att minimera brus.
- Verifiera pinout: Kontrollera JTAG-stiftanslutningarna för att undvika att skada enheten.
- Backup -firmware: Säkerhetskopiera alltid den ursprungliga firmware innan du gör ändringar.
- Använd rätt programvara: Se till att verktyget du använder stöder målenheten.
- Övervaka spänning: Se till att målenheten fungerar på rätt spänningsnivå.
Applikationer av jtag
- Felsökning firmware och programvara
- Blinkande ny firmware eller bootloaders
- Extrahera data från minnet för analys
- Diagnostisera PCB -tillverkningsfel
- Omvänd teknik hårdvara
Felsökning
-
Enheten inte upptäckt:
- Kontrollera ledningarna och pinouten.
- Se till att målenheten är påslagen.
- Kontrollera spänningsnivåerna för kompatibilitet.
-
JTAG -fel:
- Se till att rätt konfigurationsfil används.
- Försök att sänka JTAG -klockhastigheten om kommunikationen misslyckas.
-
Tillståndsproblem:
- På Linux, se till att du har lämpliga behörigheter för att komma åt USB -enheter (användning
sudo
eller konfigureraudev
regler).
- På Linux, se till att du har lämpliga behörigheter för att komma åt USB -enheter (användning
Slutsats
JTAG är ett ovärderligt verktyg för felsökning och programmeringschips på en låg nivå. Genom att förstå grunderna i JTAG -hårdvara och programvara kan du läsa chipminne, felsöka firmware och utföra gränsskanningar. Experimentera med olika verktyg och konfigurationer för att fullt ut använda JTAG i dina projekt!