www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bootloader - ISP


Autor: Emanuel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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?

Autor: Emanuel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ups Sorry habe aus versehen ein anderes *.map Angehängt

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Emanuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...)

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Emanuel wrote:
> wie verschiebe ich das Text segment?

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

Autor: Emanuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau so! Nur dass du .text schreibst, anstatt .bootloader.

Autor: Emanuel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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)

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
stimmt deine start adress mit den EInstellungen in den fuses überein?

Autor: Emanuel (Gast)
Datum:

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

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.