Hallo!
Bin nun einiges Weiter, den AVR JTAGICE mkII mit Eclipse unter Linux
Mint 13 (ähnlich wie ubuntu) zum laufen zu bringen. Aber den letzten
Move schaffe ich einfach nicht...
--------------- Konfiguration -----------
Ich habe alles nach dieser Anleitung eingerichtet:
Avaice:
http://avr-eclipse.sourceforge.net/wiki/index.php/Debugging#AVaRICE_2
Das läuft! Der Server ist unter 4242 erreichbar, beim Gerät geht die ein
LED aus wenn ich Ihn gestartet habe.
"GDB Hardware Debugging" hab ich auch nach dieser Anleitung
eingerichtet... kommt gleich dahinter
http://avr-eclipse.sourceforge.net/wiki/index.php/Debugging#GDB_Hardware_Debugging
-------------- Start Debug ----------------
Wenn ich das ganze starte springt Eclipse in die Debug-Ansicht wie auf
dem ersten Angehängten Screenshot zu sehen.
Dort hängt er dann bei 94% fest. Am JTAGICE mkII blinkt die eine LED.
Scheint Probleme bei der Kontaktaufnahme zu haben!
JTAG ist enabled bei Fusebits.
wenn ich abbreche (kleines rotes Quadrat) spuckt er noch diese Ausgabe
aus:
1
AVaRICE version 2.10, Feb 8 2010 07:22:54
2
3
Defaulting JTAG bitrate to 250 kHz.
4
5
JTAG config starting.
6
Found a device: JTAGICEmkII
7
Serial number: 00:b0:00:00:34:27
8
Reported JTAG device ID: 0x9502
9
Configured for device ID: 0x9502 atmega32
10
JTAG config complete.
11
Preparing the target device for On Chip Debugging.
12
13
Disabling lock bits:
14
LockBits -> 0xff
15
16
Enabling on-chip debugging:
17
Extended Fuse byte -> 0xe1
18
High Fuse byte -> 0x19
19
Low Fuse byte -> 0xe1
20
Waiting for connection on port 4242.
21
Connection opened by host 127.0.0.1, port 54448.
22
gdb exited.
23
AVaRICE version 2.10, Feb 8 2010 07:22:54
24
25
Defaulting JTAG bitrate to 250 kHz.
Vom Gefühl her würde cih sagen, das nicht die richtige hex in den
Controler geladen ist, und das JTAG-Teile daher vergebens versucht mit
diesem KOntakt auf zu nehmen. Aber ich hab leider zu wenig überblick und
Ahnung, als das ich wüsste, wie ich da weiter mache.
Bitte helft mir!
Ja, etwas ähnliches hat gestern jemand auf der AVaRICE-Liste
berichtet. Ist mir nicht klar, ob das nun ein Problem der relativ
neuen Firmware ist oder eher ein USB-Problem des benutzten Linux.
Die timeouts sind auf jeden Fall suspekt.
Ideal wäre es natürlich, wenn das mal jemand, der davon betroffen
ist, mit einem USB-Tracer analysieren könnte.
p.s.: Lange Dateien besser als Anhänge posten, am besten mit dem Suffix
.txt.
Danke für den Hinweis Jörg!
Dies ist mein erstes JTAG device überhaupt. Ich hab gleich die neue
Firmware mit AVR-Studio drauf gespielt, um mir potentielle Fehler zu
ersparen -> ist dann wohl nach hinten los gegangen wenn es mit der alten
geht.
Wo denkst du ist die Zeit am besten angelegt:
- Virtual Machine und AVR Studio nutzen (Habe gelesen das die Xmegas
bisher fast gar nicht von avarice unterstützt werden)
- ein anderes Linux ausprobieren? Wenn ja welches?
- Firmware downgraden
- mk2 verklopppen und anderes JTAG interface zum laufen bringen
Ich habs dennoch zum laufen gebracht... --jtag-bitrate hoch gefahren.
Nach etlichen Fehlermeldung kriegt sich der gdb dann ein.
Jedoch werden die Register falsch ausgelesen. Das Programm läuft, die
Breakpoints stimmen.
Kann man irgendwo die avarice timings ändern?
Herzliche Grüße! Tom
Tom Sawer schrieb:> Dies ist mein erstes JTAG device überhaupt. Ich hab gleich die neue> Firmware mit AVR-Studio drauf gespielt, um mir potentielle Fehler zu> ersparen -> ist dann wohl nach hinten los gegangen wenn es mit der alten> geht.
Es muss nicht an der Firmware liegen! Ich habe auf jeden Fall
schon 7.xer Firmware benutzt, allerdings noch geringfügig ältere
(AVR Studio 5.x statt Atmel Studio 6.x).
> Wo denkst du ist die Zeit am besten angelegt:> - Virtual Machine und AVR Studio nutzen
Kannste vergessen, geht komplett nach hinten los. Als erstes
versuchen sie automatisch und ungefragt (und natürlich nicht
abschaltbar), den Firmware-Upgrader auf das Gerät loszulassen.
Dieser stürzt aber innerhalb einer VM sang- und klanglos ab.
Man könnte natürlich mal versuchen, dafür einen support call
aufzumachen, aber ich fürchte, dass sie den Betrieb in einer VM
entweder gleich als "not supported" abtun, oder dass der Bug
zumindest keine hohe Priorität bekommen wird.
> (Habe gelesen das die Xmegas> bisher fast gar nicht von avarice unterstützt werden)
Ist mit der 7er Firmware deutlich besser geworden. In der alten
Firmware wurden Xmega-Breakpoints mit irgendeinem schrägen Hack
implementiert, der gänzlich undokumentiert war. Mit der 7er Firmware
ist zwar manches andere undokumentiert, aber zumindest erratbar
geworden, dafür sind die Breakpoints jetzt "normaler" als früher,
sodass auch AVaRICE nun Breakpoints auf Xmega anbieten kann.
> - ein anderes Linux ausprobieren? Wenn ja welches?
Die einzigen Linuxe, auf denen ich im Moment getestet habe, sind
leider Uralt-Versionen (kann ich nichts ändern, sind
Produktivsysteme). Auf denen geht AVaRICE, genauso wie auf meinem
FreeBSD zu Hause.
> - Firmware downgradenAVR Studio 5 wäre mal einen Versuch wert, wenn es dir nicht zu
blöd ist, diesen Riesenklopper zu laden.
Wie ich dem Kollegen auf der AVaRICE-Liste schon schrieb, wäre es auch
ein Versuch, die SVN-Version von AVaRICE mal zu testen. Sie
unterscheidet sich zwar von den Features her nicht von der 2.12, aber
ich habe die komplette Fehlerbehandlung überarbeitet. Statt
irgendwelcher Krücken arbeitet sie nun durchweg mit C++-Exceptions und
sollte meiner Meinung nach viel sauberer sein als früher. Könnte
also durchaus möglich sein, dass damit die Folgefehler dann vielleicht
eliminiert werden.
> - mk2 verklopppen und anderes JTAG interface zum laufen bringen
Hilft nicht viel. Das Debugprotokoll hat Atmel nie veröffentlicht, du
bist also auf ihre Tools angewiesen, und diese wiederum wollen sie nur
unter Windows supporten. Das JTAGICE3 müsste zwar theoretisch besser
(schneller) sein, da es auf die Visual-Studio-basierten Debugger
zugeschnitten worden ist und sich die Debugger-Modelle von Visual
Studio und GDB deutlich mehr ähneln als das des früheren AVR Studio
4.x, aber leider gibt's dafür gar keine Doku. Ich warte daher noch
auf einen Freiwilligen, der das Protokoll mal reverse-engineert ...
> Jedoch werden die Register falsch ausgelesen.
Seltsam. Da ist noch was foul.
Können wir das ggf. mit dem zweiten Kollegen gemeinsam auf der
AVaRICE-Mailingliste weiter diskutieren?
> Kann man irgendwo die avarice timings ändern?
Welche? Die USB-Timeouts? Die sind bislang hart in src/jtag.h
festgelegt, sollten aber eigentlich sehr reichlich sein.