Forum: Compiler & IDEs Bootloader ohne die Vektoren?


von Richard (Gast)


Lesenswert?

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

von Jörg Wunsch (Gast)


Lesenswert?

Ich glaube, du kommst im Moment nicht umhin, einen custom linker
script dafür zu bauen.

von mthomas (Gast)


Lesenswert?

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"?

von Richard (Gast)


Lesenswert?

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

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.