Forum: Mikrocontroller und Digitale Elektronik Butterfly in Auslieferungszustand zurücksetzen


von Jürgen K. (racerone)


Lesenswert?

Hallo Leute,

bevor ich anfange auf meinem Butterfly zu programmieren wollte ich 
wissen wie ich das Teil wieder in seinen Ursprungszustand versetzen 
kann.
Bei Atmel kann man sich ein Hex-File downloaden welches den Bootloader 
und das Programm enthält.

Reicht es per JTAG das Hexfile in den Flash zu schreiben?


Noch eine Frage, wenn JTAG aktiviert ist, funktioniert dann noch ISP?
JTAG scheint bei mir zu funktionieren, ISP jedoch nicht.

Gruß, Jürgen

von Jürgen K. (racerone)


Lesenswert?

Hallo,

ich habe mir mal die AVRGCC-Übersetzung von Martin Thomas 
heruntergeladen.
http://www.siwawi.arubi.uni-kl.de/avr_projects/

ich habe das Projekt entpackt und in AVRStudio ein neues AVRGCC-Projekt 
angelegt. Sourcefile ist die main.c.
Wenn ich nun das Projekt kompiliere, bekomme ich lauter Fehlermeldungen:
main.o:(.progmem.data+0x258): undefined reference to...

kann mir jemand sagen was ich vergessen habe?

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Jürgen K. schrieb:
>...
> ich habe das Projekt entpackt und in AVRStudio ein neues AVRGCC-Projekt
> angelegt.
>...
Im den zip-Paketen meines avr-gcc/avr-libc-Ports des Atmel-Beispielcodes 
sind Projektdateien für AVRStudio dabei. Also kein neues Projekt 
anlegen, sondern in Project->Open Project die mitgelieferte .aps-Datei 
auswählen, dann Build->Rebuild All.

>...
>bevor ich anfange auf meinem Butterfly zu programmieren wollte ich
>wissen wie ich das Teil wieder in seinen Ursprungszustand versetzen
>kann.
>...
Sofern man nicht an den FUSE-Bits herumspielt, kann nicht viel 
passieren. Wichtig ist, die Clock-Einstellungen nicht zu verändern (soll 
immer internal R/C bleiben). Zwar kann man diese auch wieder in den 
Auslieferungszustand bringen, das kann aber ungünstigstenfalls recht 
knifflig werden (parallel-programming, um users-manual beschrieben). 
Meist (bei mir bisher immer) reicht es aber, einen Takt an XTAL1 zu 
legen und FUSE-bits wieder richtig einzustellen.

>...
>Noch eine Frage, wenn JTAG aktiviert ist, funktioniert dann noch ISP?
Ja, sollte. JTAG und serISP sind beim ATmega169(p)v auf dem BF im 
Auslieferungszustand aktiviert. Hatte damit bisher noch keine Probleme, 
habe JTAG aber nur sehr selten benutzt (die 4 Pins dafür haben oft 
andere Aufgaben).

>JTAG scheint bei mir zu funktionieren, ISP jedoch nicht.
>...
Da fehlt eine genauere Fehlerbeschreibung, um das etwas nachvollziehen 
zu können. Mit welcher Hardware getestet? Anschluss? Genaue Abfolge der 
Tests?

von Jürgen K. (racerone)


Lesenswert?

Danke Martin,

hab ich doch glatt übersehen, dass es schon ein Projektfile gibt.
Funktioniert auch bei mir. Allerdings würde mich trotzdem interessieren 
was ich machen muss um ein eigenes Projet zu erstellen. Die Datei main.c 
hinzuzufügen scheint nicht zu reichen, da muss ich wohl noch etwas mehr 
tun.

Weshalb ich frage ist der Bootloader, wenn ich per JTAG oder ISP ein 
Programm hochlade, was passiert mit dem Bootloader? Wo liegt er und 
überschreibt man ihn dabei? Ich habe noch nie etwas mit einem Bootloader 
gemacht.

Zum Programmieren nutze ich den Dragon, ich habe den Anschluss vom 
Butterfly 1:1 mit dem Dragon verbunden. Anschließend habe ich versucht 
die Signatur des µCs auszulesen, ging leider nicht. (Typische 
ISP-Fehlermeldung)
Die Stiftleiste schaut nach oben raus (Displayseite)
Mit JTAG ist es dagegen kein Problem, die Signatur konnte ich auslesen.

Gruß, Jürgen

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Jürgen K. schrieb:

>...
> Allerdings würde mich trotzdem interessieren
> was ich machen muss um ein eigenes Projet zu erstellen. Die Datei main.c
> hinzuzufügen scheint nicht zu reichen, da muss ich wohl noch etwas mehr
> tun.
Es müssen alle .c-Dateien im AVRStudio Projekt (source-files) enthalten 
sein, aus denen man in der eigenen Anwendung Funktionen aufrufen will. 
Die Einstellungen für Compiler- und Linker-Optionen im AVRStudio 
gcc-Plugin einfach erstmal so übernehmen, wie im gcc-Port der 
Beispielanwendung.

> Weshalb ich frage ist der Bootloader, wenn ich per JTAG oder ISP ein
> Programm hochlade, was passiert mit dem Bootloader?
Vor Programmierung des Flash-Speichers wird dieser in 
Standardeinstellung komplett gelöscht. Man kann "chip erase" zwar 
deaktivieren, das bringt aber nur Ärger bei den Speicherbereiche, die 
man verändern will. Also aktiviert lassen.

> Wo liegt er
Am "oberen" Ende des Speichers. Vgl. Fuse settings und ATmega169 
Datenblatt.

> und überschreibt man ihn dabei?
ja, BL wird wegen chip erase mit 0xff "überschrieben".

> Ich habe noch nie etwas mit einem Bootloader gemacht.
Auf den atmel.com-Seiten zum Butterfly gibt es eine hex-Datei zum 
Download. In dieser ist die die Beispielanwendung inkl. Bootloader 
enthalten. Wenn man den Inhalt der hex-Datei wieder per ISP od. JTAG in 
den ATmega überträgt ist der Bootloader auch wieder im Flash-Speicher.

Quellcode des Bootloaders sollte in einer AVR AppNote zu finden sein. 
Alternativ gibt es auf meiner Seite auch einen gcc-Port des Bootloaders 
inkl. hex-Datei (ohne die Anwendung).

> Zum Programmieren nutze ich den Dragon, ich habe den Anschluss vom
> Butterfly 1:1 mit dem Dragon verbunden. Anschließend habe ich versucht
> die Signatur des µCs auszulesen, ging leider nicht. (Typische
> ISP-Fehlermeldung)
und auch auf die "typische" Ursache geprüft, also ISP Frequenz nicht zu 
hoch eingestellt? Mit 250kHz oder geringerem Takt ausprobiert?

> Die Stiftleiste schaut nach oben raus (Displayseite)
> Mit JTAG ist es dagegen kein Problem, die Signatur konnte ich auslesen.
Ist doch o.k. Solange man die 4 JTAG Pins für nichts anders gebrauchen 
mag, kann man ja über JTAG Kontakt aufnehmen.

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.