www.mikrocontroller.net

Forum: Compiler & IDEs Bootloader ohne die Vektoren?


Autor: Richard (Gast)
Datum:

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

Autor: Jörg Wunsch (Gast)
Datum:

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

Autor: mthomas (Gast)
Datum:

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

Autor: Richard (Gast)
Datum:

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

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.