www.mikrocontroller.net

Forum: Compiler & IDEs Makefile - wie flash nach oben begrenzen


Autor: Sebastian__ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe in einem Controller einen Bootloader.
Der Bootloader ist bei den AVR Controllern ja am ende des Flashbereichs.
Sprich wenn ich einen 512W Booloader habe muss ich dafür sorgen das 
meine Applikation nicht größer als FlashMax-512W wird.
Wie kann ich das Makefile dahingehend ändern das ich sozusagen meinen 
Flashbereich eingrenzen kann. Es geht halt darum das sich beide Bereiche 
nicht überschneiden und ich einen Fehler vom Compiler/ erhalte wenn es 
zu solchen kommt.

MfG
Sebastian

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Linkerscript gibts idr eine region "flash" oder ähnlich. Da kannst du 
die Größe einstellen.

Autor: Sebastian__ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eine Region "flash" oder ähnliches habe ich im Makefile nicht gefunden.
Lediglich im inkludierten Prozessortfile einen FLASHEND Marker.
Den wollte ich aber nicht verändern, da ich dann das definitionsfile 
lokal anlegen müsste und statt #include <avr/io.h> dann #include 
"iom8.h" (mega8) schreiben müsste.
Das Würde zwar gehen ist aber nicht so schön wie über das makefile.

Sebastian

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du könntest versuchen dem Linker die Lage deines Bootloaders 
mitzuteilen, z.B.

LDFLAGS += -Wl,--section-start=.bootloader=0x500

ob dabei aber auch automatisch das section-ende für das Hauptprogram 
festegelegt wird, musst du ausprobieren. (evtl noch --check-sections mit 
angeben)

/Ernst

Autor: Sebastian__ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Tips,
ich habe es jetzt so gelöst:

Makefile:
LDFLAGS += ,--section-start=.flashend=0x1150

C Code:
const unsigned char ver _attribute_ ((section (".flashend"))) =0xAA;

Somit habe ich am ende des Flashs 1Byte verbraucht was ich als endmarker 
benutze.
Wenn Sich die Sections überlappen gibt es einen Fehler.
Wenn ich den Maker bzw. das eine Byte nicht Setzte, gibt es keine Fehler 
vom Compiler.
Aber so geht es.

Sebastian

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.