www.mikrocontroller.net

Forum: Compiler & IDEs Flash-Konstanten im Bootloader verwenden bei AVRmega256


Autor: Steffen Graap (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich programmiere gerade einen Bootloader für den Mega2560. Um 
Statusmeldungen auf dem LCD auszugeben, habe ich die auszugebenden 
Strings im FLash liegen. Über eine Funktion soll der String dann zum LCD 
geschrieben werden.
Das HEX-File wird über "-Wl,--section-start=.text=3E000" in den 
Bootloaderbereich des Prozessors geladen.
Das Problem ist, das der Copmpiler denkt, der FLASH-String steht in den 
ersten 64K des Flashes und versucht diesen über LPM zu laden. Da ich 
aber über den Linkereintrag das Programm in den Bootloadebereich, also 
irgendwo zwischen 0x1F000 & 0x1FFFF, verlegt habe geht der Zugiff über 
LPM nicht.
Kann ich dem Compiler sagen, das er das Programm für den Bootloader 
compilieren soll, oder muss ich mit der pgm_read_byte_far- Funktion 
arbeiten und den Offset für den Bootloader mit übergeben?

Danke & Gruß Steffen

Autor: Steffen Graap (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So ich noch mal

Ich habe das Problem erst mal gelöst.
Dazu habe ich die pgm_read_byte_far-Funktion genutz und als Ofset nur 
die benötigte Page übergeben (0x30000, 4.Page im Mega256)
LCD_DATA = pgm_read_byte_far (0x30000 + ((UINT16)& cString[u8Laenge++]));//Zeichen zum Display senden und Zähler erhöhen

Das ganze ist natürlich etwas statisch, vieleicht gibt es noch eine 
flexiblere Lösung.

Ich bin auf eure Antworten gespannt.

Gruß Steffen

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.