AVR Bootloader Section zu klein

OP #2686160
Ich habe einen Bootloader für den AT90USB1287 in der Mache, der sich als 
Host konfiguriert, bei Anstecken eines USB-Stick das dort abgespeicherte 
Hex-File einliest und sich dann die neue Applikation programmiert. 
Leider sind die maximal 8kB im Bootloader für dieses Feature bei weitem 
nicht ausreichend, d.h. ich muss den Applikationsbereich anknabbern. 
Andererseits muss die eigentliche Flashfunktion in jedem Fall im 
Bootloaderbereich liegen (s. Datenblatt). Dem Linker sage ich also, dass 
der Bootloader ab Adresse 0x15000 beginnen soll. Dummerweise dübelt mir 
der Linker dann die Interruptvektortabelle an den Anfang, wo sie nichts 
zu suchen hat. Wie kann ich dem Linker mitteilen, dass er sie 
Interruptvektortabelle an 0x1E000 hinlinken soll, und den restlichen 
Programmcode gewissermaßen außenrum ? Dass ich mit  _attribute_ 
((section(".mysection"))) jeder Funktion eine eigene Startadresse 
zuweisen kann, ist klar. Aber da muss es doch noch eine elegantere 
Möglichkeit geben.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.