Forum: Mikrocontroller und Digitale Elektronik AVR-Studio Bootloader erstellen


von mister_maxyf (Gast)


Lesenswert?

Hallo
Ich hoffe hier kann mir jemand weiterhelfen, weil ich im Internet und 
hier im Forum nicht das passende gefunden habe für mein Problem!

Ich möchte gern einen Bootloader schreiben. Ich benutze AVR-Studio und 
WinAVR.
So...wenn ich das richtig verstanden habe, dann erstelle ich ein neues 
Projekt, welches mein Bootloader werden soll. Dort initialisiere ich die 
Sachen die ich brauche (UART usw). Nun ist das Projekt also fertig! Wie 
sage ich dem AVR-Studio jetzt, dass er das doch bitte nicht in den 
Programmbereich sondern in den Bootbereich flashen soll?
Um dann zu testen ob alles funktioniert würde ich dann gerne ein neues 
Projekt erstellen welches meine App werden soll und dass dann ebenfalls 
in den Controller flashen (auf gleichem Wege wie den Bootloader also per 
JTAG)
Dies soll dan nur mal zum testen sein, ob der Bootloader an richtiger 
Stelle vorhanden ist und dann danach an die Adresse 0 springt und das 
eigentlich Programm ausführt!
Meine Fragen sind also:
1. Wie sage ich dem AVR Studio mach bitte das eine Projekt in den 
Bootbereich und das andere in den Programmbereich vom gleichen 
Controller
2. Lieg ich jetzt damit komplett falsch oder stell ich mich grad 
irgendwie blöd an?

Vielen Dank schon mal für die Antworten!

von Thomas W. (thomasw)


Lesenswert?

Moin!

Guck mal ins Manual von WinAVR. Die Frage ist da auch in den FAQ:

http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_reloc_code

MfG,
Thomas

von mister_maxyf (Gast)


Lesenswert?

Hmmm....
Leider Funktioniert das Ganze nicht so richtig! Wenn ich hinter den 
Prototy meiner Funktion das schreibe, dann sagt mir zwar mein MAP-File, 
dass die Funktion jetzt im .bootloader-Bereich liegt aber wenn ich dann 
eine Applikation reinflashe ist der Bereich auch gelöscht!
Und die Applikation reinflashen ohne das Device zu löschen geht auch 
ned! Das geht nur, wenn beim Projekt Bootloader den .text Bereich nach 
hinten verschiebe und dabei das Device lösche und dann anschließend die 
Applikation (bei der .text am Anfang des Flsh liegt) rinflashe ohne das 
Device zu löschen!
Dann scheinen beide (also Bootloader-Projekt und Applikation-Projekt) im 
Flash vorhanden zu sein!
Aber das Bootloader-Projekt ist dann halt in einem .text bereich und 
nicht in einem .bootloader Bereich! Ist das egal?
Was mach ich falsch?

von Stefan E. (sternst)


Lesenswert?

Der Tip von Thomas W. war nicht so ganz passend, denn du willst ja nicht 
Teile des Codes verschieben, sondern alles. Dazu brauchst du keine neue 
Section anlegen, sondern verschiebst einfach das text-Segment.
-Wl,--section-start=.text=0xXXXX

von mister_maxyf (Gast)


Lesenswert?

Okey...alles klar!
Danke für die schnelle Hilfe!

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.