Bootloader ohne die Vektoren?

Gast #181153
Hallo!

Ich versuche im Moment einen selbststaendigen Bootloader fuer ATmega64
zu schreiben. Die gesamte code-relocation ist einfach genug durch
"--section-start=.text=0xE000" aber es werden leider immer noch die
ueblichen Vektoren erzeugt die zu viel von dem Program Speicher
besetzen (0x8C Byten und ich brauche sie). Weiss vielleicht jemand wie
man "elegant" die Vektoren abschalten kann? Ein paar Alternativen
sind den gesamten Bootloader auf -0x8C bytes unterzusetzen, oder die
atmegaxx.o Lib Datei zu veraendern damit nur der Reset Vektor da
bleibt, aber es muss auch bessere Loesungen geben? Es geht uebrigens
auch nicht den Bootloader wie ueblich in einer eingenen Sektion
hinzufuegen (--section .bootloader) und die Vektoren auf Addresse 0 zu
lassen, denn ich brauche viele stdlib,string und math (mul32, etc)
Funktionen die ganz schwer zu relokieren sind.

Regards,
Richard
Gast #181155
Mglw. einfach das Konzept nochmal ueberdenken, wenn man eh schon knapp
an Speicherplatz ist, sind Funktionen aus stdlib, string etc. mglw.
einfach zu 'speicherfressend'. Diese duch 'knappe'
selbstgeschriebene Funktionen zu ersetzen, die das noetige abarbeiten,
spart sicher einiges an Platz und ermoeglicht dann die relative
einfache Vorgehensweise, die Section .text komplett 'umzuverlagern'.
Nur aus Intersse: Welche Funktionen sind speziell "schwer zu
relokieren"?
Gast #181156
Joerg, danke fuer die Idee. Ich werde mit den ldscripts spielen.
Uebrigens, danke fuer die tolle Arbeit an AVR GCC. Very impressed!

MThomas, dieser Bootloader soll als USB Host USB-Mass-Storage-Devices
ueber SCSI commands ablesen, soll USB-hub compatibel sein, FAT12, FAT32
und FAT16 unterstuetzen, und die gelesene Firmware mit 3DES
deschiffrieren. Es passt knapp... nicht in 8KB (im Moment ist es
8,5KB). Ich brauche vieles von den Libraries, besonders die gesamte
32bit Mathematik, und habe wenig Lust alles umzuschreiben, obwohl das
waere natuerlich auch eine Alternative. Wenn ich den gesamten .text
umstelle kriege ich auch die nutzlosen, Speicher-fressenden Vektoren.
Wenn ich nur "meine", als .bootloader markierte, Funktionen umstelle,
kriege ich nicht die notwendigen Libs, start-up code, variable
nullification, etc. Ich bin auch nicht sicher dass ich die Libs
"knapper" umschreiben kann :)

Danke fuer die Hilfe!

Richard
Cape Town

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 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.