Forum: Mikrocontroller und Digitale Elektronik ATmega169 über JTAG mit xc3sprog programmieren


von Volker B. (Firma: L-E-A) (vobs)


Lesenswert?

Hallo zusammen,

hat mir jemand einen Tip, wie sich ein ATmega169 mittels xc3sprog über 
das JTAG-Interface programmieren lässt?

Ich verwende einen FT232H als Programmier-Adapter und xc3sprog $Rev: 747 
$ OS: Linux
Der Controller wird offensichtlich auch erkannt:

Das Kommando:
> xc3sprog -j -v -c ftdi -J 100000

liefert:

  Using Libftdi,
  JTAG loc.:   0  IDCODE: 0x6940503f  Desc: 
ATmega169(p)   Rev: G  IR length:  4

Versuche ich Flash oder EEPROM zu beschreiben, geschieht nichts.
Ich erhalte aber auch keinerlei Fehlermeldung.

Hier die verwendete Kommandozeile:

xc3sprog -j -c vbjtag -s VBJTAG001 -e -J 100000 -F eeprom.ihex:w:IHEX 
flash.ihex:w:IHEX

Auch im Verbose-Modus gibt es leider keinerlei Informationen, die mir 
weiterhelfen.

Hat jemand schon einmal erfolgreich einen ATmega mittelx xc3sprog via 
JTAG programmiert und wäre so freundlich mir die zielführende 
Kommandozeile mitzuteilen?

Dann noch kurz eine andere Frage: In welchem Format erwartet xc3sprog 
die Fusebits?

Danke & Grüßle,
Volker.

von Volker B. (Firma: L-E-A) (vobs)


Lesenswert?

Hallo zusammen,

auch wenn die Resonanz auf meine Nachricht nicht so sonderlich groß ist 
;-) möchte ich die Community doch an meinen neuen Erkenntnissen 
teilhaben lassen...

Der AVR-Jtag-Code von xc3sprog ist offensichtlich noch im 
Versuchsstadium und weist noch einige Fehler auf. Wesentliche Teile sind 
(noch) nicht implmenentiert, so das Setzen der Fuses und das 
Programmieren des EEPROMs.

Das Programmieren des Flash-ROMs funktioniert, wenn man einen kleinen 
Fehler behebt: DecodeSRecordLine() in srecfile.cpp wird grundsätzlich 
mit dem Rückgabewert -1 verlassen, was den Rest des Programms zum 
stillschweigenden Abbruch veranlasst (eine kurze Fehlermeldung wäre an 
dieses Stelle sehr hilfreich gewesen...). Eine 0 als Rückgabewert löst 
das Problem...

Die AVRs können ausschließlich über S-Recordfiles programmiert werden.

Der ATmega169 wird nur untersützt, wenn man die Größe der Rom-Page in 
javr.h mit dem Wert 128 initialisiert. Der eingetragene Wert 0 führt zu 
einer lustigen Division durch Null und damit zu extrem hilfreichen 
Fehlermeldungen...
Nach diesen Korrekturen funktionieren Flash-Programmierung und Verify 
des '169.

Wenn man einige unsinnige fflush(stderr) durch fflush(stdout) ersetzt, 
wird die Ausgabe auch sehr lesbar ;-)


Grüßle,
Volker.

: Bearbeitet durch User
von Uwe Bonnes (Gast)


Lesenswert?

Volker Bosch schrieb:
>> xc3sprog -j -v -c ftdi -J 100000

Fuer den AVR ist der javr Zweig zustaendig.
 javr -c ftdi
bring ein Menu zum Auslesen und Aendern von Flash EEPROM und Fuses,
ueber
 javr -c ftdi <file>.rom -f <file>.fus -e <file>.eep
kann man das auch auf der Kommandozeile machen.

Inzwischen bei mir nicht mehr so aktuell, aber auf 400 + Platinen 
getestet.

von Uwe Bonnes (Gast)


Lesenswert?

Volker Bosch schrieb:
> Hallo zusammen,
>
> auch wenn die Resonanz auf meine Nachricht nicht so sonderlich groß ist

Achtung, Wochenende...

von Volker B. (Firma: L-E-A) (vobs)


Lesenswert?

Hallo Uwe,

Uwe Bonnes schrieb:
> Volker Bosch schrieb:
>> Hallo zusammen,
>>
>> auch wenn die Resonanz auf meine Nachricht nicht so sonderlich groß ist
>
> Achtung, Wochenende...

Das ist mir schon klar und meine Bemerkung soll auch nicht als Kritik 
verstanden werden.

Mit dem javr gibt's aber auch Probleme. Die Programmierung meines '169 
funktioniert nicht, genauso wening wie das Verify eines korrekt 
programmierten Flashs. Vielleicht auch nur ein Problem bei der 
Implementierung des '169.

Aber danke für den Hinweis, dann werde ich mich mal intensiver mit dem 
javr beschäftigen. Das wird aber noch ein paar Tage dauern...

Grüßle,

Volker.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.