Flash-Konstanten im Bootloader verwenden bei AVRmega256

Gast #919821
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
Gast
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)
1
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

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.