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
Ich glaube, du kommst im Moment nicht umhin, einen custom linker script dafür zu bauen.
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"?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.