Avr Jtag Quickstart
Zum Debuggen brauchst Du zunächst natürlich einen USBprog mit JTAGICE mk2 Klon-Firmware. Außerdem müssen avarice und gdb-avr installiert sein (die Pakete in Debian unstable tun's, brauchen keine CVS-Versionen sein)
Die Fuses müssen dann entsprechend auf E0 (lfuse) und D9 (hfuse) angepasst werden (also kein Reset in den Bootloader-Bereich ab 0x7000).
Der JTAG-Adapter sollte sich jetzt outen:
stesie@wuchtbrumme:~/src/trunk/jtagicemk2klon$ lsusb Bus 005 Device 006: ID 03eb:2103 Atmel Corp. JTAG ICE mkII
Nachdem der JTAG-Adapter funktioniert, jetzt mit dem Ziel verbinden (z. B. Ethersex wie unten beschrieben), sicherstellen dass die hfuse JTAG erlaubt und zu guter letzt avarice starten:
avarice --mkII --jtag usb :4242
... und dann noch gdb:
avr-gdb ethersex
... das allein hilft aber noch nichts, wir müssen gdb noch sagen, dass wir remote debuggen wollen. Dazu jetzt noch ein target remote localhost:4242 eingeben, dann kann's los gehen.
Happy debugging :-). Wobei's momentan mit single-stepping bzw. next ein Problem zu geben scheint. Breakpoints setzen und C-c drücken funktioniert aber.
Ethersex anschließen
Eine schöne Zeichnung, die die Adaption von USBprog zum Ethersex darstellt
Beschreibung | PIN | PIN | Beschreibung |
---|---|---|---|
TCK | 1 | 2 | VCC |
TDO | 3 | 4 | - |
TMS | 5 | 6 | - |
- | 7 | 8 | - |
TDI | 9 | 10 | GND |
Flashing via JTAG
Man kann den Programmspeicher eines AVRs auch per JTAG schreiben. Mit avarice kann man das wie folgt anstellen:
avarice --erase --program --file ethersex.bin --jtag usb -2
Links
- die offizielle JTAGICE mkII Seite, allerdings etwas spärlich an Information
- ein paar Wörter zu den Jumpern
- AVR Fuse Calculator
Nicht mehr gueltig (falls bestätigt, bitte endgültig löschen):
Zu beachten ist dabei, dass die Firmware momentan in Kombination mit dem Bootloader nicht funktioniert. Das heißt, bleibt zunächst nur der Workaround des "fest" reinflashens. Zunächst die Binärversion der Firmware herunterladen und mit einem beliebigen Programmieradapter in den ATmega32 schreiben.