Microkontroller - JTAG

Started by asgard, 09. Jan 2008, 17:15

previous topic - next topic
Go Down

Hoernchen

Rein rechnerisch wäre eine der billigsten flexibelsten und einfachsten Lösungen bei ebay 10€ + 5€ Versand für ein 300HS Modem auszugeben und das anstelle eines µcs zu verwenden ;)
GPIOS hat der adm5120p auf jeden Fall genug, und mein kleingeldbewusstes Studentengewissen tendiert irgendwie immer zu den günstigen Lösungen, zumal ich ja eh ein Bastelmodem rumliegen hab...
bringer of linux, conqueror of hdmi, jack of all trades.

Metrex

@asgard: Naja, ein Foto ist sehr unspektakulär, da ich im Moment meinen ToolStick verliehen hab und deshalb ein großes Entwicklungsboard dran hängen hab, so wie dieses: http://www.c8051f.com/UpFile/2006/10/7/200610072248411225.jpg

Aber der ModChip mit dem Daughterboard könnte so aussehen wie das Bild im Anhang.

Also um das mit dem Reboot hab ich mich noch nicht gekümmert, macht die Box denn überhaupt einen Reboot? Ich hab die immer komplett ausgeschaltet.

Hoernchen

Ja, sie macht einen Reboot, wenn sie richtig böse crasht ;)
Insofern wäre es schade wenn man dann gerade nicht da ist und währenddessen die Box ihr desaster recovery durchführt, ist mir vor zwei Wochen passiert.
Seitdem hat das ding nach dem Booten Netzwerkverbot.
bringer of linux, conqueror of hdmi, jack of all trades.

hackholly

Hallo Leute wie wäre es mit der MICRO-C-Control ist sehr kompakt und dürfte genügen.

Außer Preis um 18 Euro ganz praktisch.

Müßte nur den C-Code auf Assembler oder Basic umschreiben.

Feedback

Björn


Ja, sie macht einen Reboot, wenn sie richtig böse crasht ;)
Insofern wäre es schade wenn man dann gerade nicht da ist und währenddessen die Box ihr desaster recovery durchführt, ist mir vor zwei Wochen passiert.
Seitdem hat das ding nach dem Booten Netzwerkverbot.


Netzwerkverbot?

Hoernchen

Einfach den Stecker raus ;D
bringer of linux, conqueror of hdmi, jack of all trades.

Schneeleopard

#36
18. Mar 2008, 22:13 Last Edit: 18. Mar 2008, 23:31 by Schneeleopard
Das mit dem Reboot muesste sich doch loesen lassen, wenn man einfach den Rx des Controllers mit dem Tx der Box verbindet und ihn auf den Startstring des Bootloaders horchen laesst?

edit: Evtl. gibt es auch ein Signal mit dem der SMP dem AVR auf dem Frontpanel einen Reboot signalisiert, waehre vielleicht noch einfacher.

Wenn der Code da drin nicht all zu viel Platz braucht und leicht nachzuprogrammieren ist koennte man den Hackcode vielleicht direkt in den Frontpanel AVR integrieren und diesen mit dem JTAG verbinden, waere auch 'ne lustige Sache :P

EDIT 2: Der AVR auf dem Panel ist uebrigends nicht code-protected und es ist auch noch etwas Platz in dessen Flash, koennte vielleicht nuetzlich sein.

mce2222

also den serielle debug output auszuwerten ist etwas aufwendig finde ich.

am mini-pci slot ist definitiv ein reset-pin. ich denke das ist die einfachste Möglichkeit etwas von einem Reset mitzubekommen.


Schneeleopard

Ich habe nach einiger Arbeit gerade meinen ersten AVR Modchip gebrannt, der auch funktioniert :)

Habe ziemlich viele Änderungen am Code gemacht, ich werde das Ganze noch etwas Dokumentieren und packen lade es dann später hier zum testen hoch.
Das Ganze läuft auf einem ATMEGA8, sollte aber auch für andere gleichwertige oder bessere ATMEGA compilierbar sein.
Solange sie 8MHz intenen Clock verwenden sollten nicht einmal Anpassungen nötig sein.

Schneeleopard

Soa, das gind schneller als gedacht.

Anbei sind sourcecode und ein hexfile für den ATMEGA8.

Auf den Bildern ist zu sehen wo man das Resetsignal abgreifen kann.

Das Ganze funktionierte hier im Test um mit der Box Linux zu booten.
Aber es ist dennoch nicht auszuschliessen das es bei einer anderen Box nicht klappen könnte, deshalb das Ganze erst einmal als frühe Testversion sehen :)
Das Timing für den Patch scheint recht kritisch zu sein und hat etwas Probieren erfordert bis es funktionierte.

asgard

Hey Schneeleopard,

sieht gut aus :)

Kannst du noch ein Foto vom eingebauten Modchip machen?
Zudem wäre es super, wenn du noch genauer erklären könntest, wo du VCC und sonstiges anschließt.

Einfach noch ein bissle mehr details  ;D

Vielen Dank und super leistung!

Grüße
Asgard

Schneeleopard

Werde ein Bild davon machen, sobald ich das Ganze fertig habe, im Moment hängt da noch ein anderes meiner Projekte dran, dessen ATMEGA ich dafür zweckentfremdet habe.

Vcc kann man auch vom JTAG-Port nehmen, sofern man einen ATMEGA der L Reihe (3.3V fähig) hat.
Die aus der normalen Reihe können bei 8MHz auch oft mit 3.3V laufen, muss man sonst testen, ob der Chip den man gerade da hat das kann.
Ansonsten muss man sich irgendwo 5V abgreifen, z.B. direkt Netzteil<->Mainboard Stecker.
Nicht vergessen alle GND und Vcc Pins des ATMEGA anzuschliessen, der hat nämlich mehrere.
Ein 100nF Kondensator zwischen GND und Vcc möglichst nahe am ATMEGA wäre auch zu empfehlen.

Ich werde bei der nächsten Aktualisierung der Firmware die Informationen in der README noch etwas ausführlicher formulieren und ein Bild und Anschlussdiagramm des fertigen Chips anfügen.

Schneeleopard

Scheint als würde TDO permanent auf 0V gezogen sein.
Zeigt er denn FFFFFFFF als CPUID wenn du TDO unverbunden lässt?

Ansonsten habe ich es auf einem atmega16 noch nicht getestet, kann es die Tage mal auf einem atmega32 testen, ob es dort funktioniert.
Ich habe übrigends auch keine 3.3V Version zum testen verwendet, nur eine von externen 5V versorgte 5V Version.

asgard

Hey,

danke für deine Debugarbeit und dein Testen. Vielleicht kannst du deine Erfahrungen die nun gesammelt hast ins Wiki eintragen...und dort ne art Einbauanleitung machen....mein Atmega kommt hoffentlich die woche :))

Grüße
Asgard

Schneeleopard

Gut das es nun funktioniert und danke für die Arbeit :)

Es könnte evtl. helfen die Delays in der clockin() funktion auf 20 oder 30 µs zu erhöhen um längere Leitungen zu kompensieren.
Wenn er trotz Meldung, dass der Patch korrekt eingespielt wurde nicht korrekt läd kann es evtl. helfen das Timing, wann er den Patch ausführt etwas zu ändern,
while(patchtime < 120);
ist dafür zuständig, jede Erhöhung oder Reduzierung um 30 ändert das Timing um etwa eine Sekunde.
Standardmäßig patcht er 4 Sekunden nach dem Resetsignal.

Ich werde mal MACRO-Defines dafür in die nächste Version einfügen.

Go Up