2012-04-01 16 views
7

Sto lavorando al debugging con gdb. volevo sapere come gdb funziona internamente per impostare un brekpoint su un processore embedded tramite JTAG.Come funziona un debugger come gdb per impostare un breakpoint tramite JTAG?

+0

possibile duplicato del [flusso di lavoro JTAG generale in un sistema di sviluppo incorporato?] (Http://stackoverflow.com/questions/3775445/general-jtag-working-flow-in-an-embedded-system-development-system) – Gilles

risposta

1

È diverso per ogni processore, è necessario cercare i dettagli del debugger jtag per il processore specifico. non solo una famiglia di processori, ma un processore specifico. Le schede tecniche/guide degli utenti, se disponibili, sono normalmente disponibili presso il fornitore di chip o il fornitore principale a seconda del prodotto.

+0

quello che voglio sapere è che dopo aver collegato la mia scheda a Pc con un cavo jtag, se digito ad esempio "bp 25" con GDB, cosa succede dopo per quel comando per essere eseguito con il mio processore embedded (Microblaze) attraverso JTAG? – jenje

+0

devi cercare quel processore e i comandi jtag, potrebbe essere tra poche e diverse migliaia di comandi che possono implementare quell'unica cosa. Una dozzina di modi in cui i processori gestiscono un comando del genere, ecc. Se non si desidera cercare la scheda tecnica, cercare in gdb soruces, gdb è open source, le risposte alle tue domande sono a posto in documenti e software aperti. Ricrea gdb, aggiungi alcuni printfs, scorri verso il codice di interesse. –

3

Esso programma un registro di breakpoint hardware o inserisce un punto di interruzione software sostituendo l'istruzione nel punto di interruzione con un'istruzione che causerà un'eccezione.

0

Le poche volte in cui ho utilizzato GDB in combinazione con un'unità JTAG, GDB comunicava tramite il JTAG utilizzando un programma gdbserver che gestiva i dettagli del JTAG. Ad esempio, utilizzando un'unità OpenOCD JTAG: http://openocd.sourceforge.net/doc/html/GDB-and-OpenOCD.html

Questo significa essenzialmente che GDB non sa molto di qualche cosa circa l'unità JTAG - si basa sull'interfaccia gdbserver e server fa allora tutto ciò che ha bisogno di dietro le quinte per fai ciò che richiede GDB.