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
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?
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?
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
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.