Forum: Mikrocontroller und Digitale Elektronik Bootloader - ISP


von Emanuel (Gast)


Angehängte Dateien:

Lesenswert?

Habe mir einen Bootloader geschrieben, zum ersten mal. Leider 
funktioniert das Ganze noch nicht wie gewünscht. Daher einige Fragen:

1) Woher weiss AVR-Studio das es sich um einen Bootloader handelt, 
respektive, dass das Programm in entsprechenden Speicherbereich 
geschrieben werden muss?
-- Ich habe jeweils bei jeder funktion angegeben, dass das ganze in die 
entsprechende Section geschrieben werden soll, gemäss meinem *.map File, 
sieht das ganze schon mal nicht böse aus, oder?

2) Ich habe jetzt die eigentliche Software die ich laufen lassen möcht, 
und den Bootloader. Die Software funktioniert alleine.
Kann ich überhaupt via ISP erst den Bootloader, und dann ebenfalls via 
ISP die eigentliche Software laden?

von Emanuel (Gast)


Angehängte Dateien:

Lesenswert?

ups Sorry habe aus versehen ein anderes *.map Angehängt

von Stefan E. (sternst)


Lesenswert?

Emanuel wrote:

> 1) Woher weiss AVR-Studio das es sich um einen Bootloader handelt,
> respektive, dass das Programm in entsprechenden Speicherbereich
> geschrieben werden muss?

Weil die Adressen für die binären Daten mit im Hex-File stehen.

> -- Ich habe jeweils bei jeder funktion angegeben, dass das ganze in die
> entsprechende Section geschrieben werden soll, gemäss meinem *.map File,
> sieht das ganze schon mal nicht böse aus, oder?

Gut aber auch nicht. ;-)
Wenn du nur die Funktionen "verlegst", hast du immer noch Code im 
unteren Bereich, z.B. den kompletten Startup-Code (sieht man ja auch im 
Map-File). Steck die Funktionen nicht in eine separate Section, 
sondern verschiebe einfach das Text-Segment, dann hast du den kompletten 
Code im Bootbereich.

> Kann ich überhaupt via ISP erst den Bootloader, und dann ebenfalls via
> ISP die eigentliche Software laden?

Ja.

von Emanuel (Gast)


Lesenswert?

wie verschiebe ich das Text segment? (ich könnte mir jetzt Vorstellen 
das sich die Frage saudumm anhört, aber gebe mir wahrscheinlich gerade 
mühe, den Wald vor lauter Bäumen nicht zu sehen...)

von Stefan E. (sternst)


Lesenswert?

Emanuel wrote:
> wie verschiebe ich das Text segment?

Genau so, wie du auch deine eigene spezielle Section verschoben hast.

von Emanuel (Gast)


Lesenswert?

Sehe es nicht ganz...

mit den selections hab ich
>>-Wl,--section-start=.bootloader=0x1C00
bei den linker options eingegeben... funktonierte tiptop... wie ich das 
so machen kann, dass komplet alles in den speicherbereich verschoben 
wird ist mir nicht ganz klar...

von Stefan E. (sternst)


Lesenswert?

Genau so! Nur dass du .text schreibst, anstatt .bootloader.

von Emanuel (Gast)


Angehängte Dateien:

Lesenswert?

supi funktioniert tiptop...
hab leider schon ein weiteres Problemchen.

Ich kann jetzt zwar von meinem Hauptprogramm in den Bootloader und 
zurück springen...
aber beim booten startet er die normale Applikation, statt dem 
Bootloader.
Gemäss datasheet sollt es jedoch reichen das BOOTRST zu setzten, damit 
er automatisch in den Bootloaderbereich springt... sehr ich was falsch?

meine fuse bits müssten ja richtig sien (siehe anhang)

von ... .. (docean) Benutzerseite


Lesenswert?

stimmt deine start adress mit den EInstellungen in den fuses überein?

von Emanuel (Gast)


Lesenswert?

ja, wenn ich von der Applikation nach 0x1C00 springe funktionierts...

von Stefan E. (sternst)


Lesenswert?

Die Adresse $1C00 ist eine Word-Adresse, der Linker möchte aber eine 
Byte-Adresse haben. Das heißt, dein Code liegt im Augenblick nicht im 
Bootbereich. Also mit 2 multiplizieren.

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.