Viel habe ich noch nicht damit gemacht, aber ich wollte Euch das Ding trotzdem schon mal kurz vorstellen. Sieht von außen exakt aus, wie das Original:
Im Innern findet sich dann eine ganz ordentlich aussehende Platine:
Ein wenig herumtracen ergab, daß die beiden Header oben rechts wohl JTAG Header für die beiden ATmega128A Chips sind, die auf dem Bord stecken (auch wenn ich noch nicht alle Pins zugeordnet habe). Ich hab die gleich mal bestückt. Leider habe ich kein zweites JTAG Gerät, sonst hätte ich auf diesem Weg vermutlich ein Firmware-Backup machen können (Hey Chris, Du brauchst doch bestimmt auch eins - oder? ;-) ). Und mein Versuch, das Ding dazu zu bringen, die eigene Firmware auszulesen ist erwartungemäß gescheitert ;-)
First Light
Immerhin habe ich schon mal einen ersten Funktionstest gemacht: Arduino
Flash auslesen im ISP-mode mit avrdude:
avrdude -p m328p -c jtag2isp -P usb -U flash:r:flash.bin:r
...das ging wie eine Eins
:-))
Für einen richtigen Test muß ich mir aber erstmal irgendwas aufbauen – vielleicht mit meinem STK500. Der Arduino ist so out of the box weniger geeignet, denn da muß man erst einen Kondensator amputieren oder mindestens einen Trace kappen (je nach Modell) bevor der bei DebugWire mitspielt und dazu hatte ich heute keine Lust. Also muß ich nun wirklich was zum debuggen finden – zu dumm, daß meine Programme nie Bugs haben ;-)
Update
Inzwischen hab ich einen ATmega16 aus der µC Schachtel geholt und in das STK500 gesteckt. Noch den JTAG-Adapter drauf und ein bisschen herumprobiert und schon konnte ich ein kleines C-Programm via JTAG flashen und auch mit der Kombination avarice/gdb eine Debugging-Session starten. Funktioniert tatsächlich recht gut! :-)Jetzt muß ich nur noch meine rudimentären gdb Kenntnisse auf Vordermann bringen, dann ist kein Bug mehr vor mir sicher ;-)
Das ist richtig scharf. Auf dem Target debuggen zu können hat echt Charme. Halt uns mal auf dem Laufenden, kann man Variablen auslesen, Breakpoints setzen, steppen? Bin gdb mäßig auch nicht der Crack, aber manchmal würden schon die Grundfunktionen helfen.
AntwortenLöschenIn der Arduino Lib gibts z.B. einen Fehler, wenn man Strings unglücklich addiert, friert die CPU ein. Irgend ein Stack, der überläuft vermute ich.
Genial das Teil! Muss haben :-). Wollte immer schon mal selber JTAGEN aber der Preis des Originals hat mich immer abgeschreckt. Für 86 Euro muss man wohl zugreifen. Dann können wir gegenseitig unsere Firmware auslesen ;-).
AntwortenLöschen