mikrocontroller.net

Forum: Compiler & IDEs xmega lesen von flash Variablen in der bootloader Section


Autor: Basti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich schreibe gerade einen Bootloader für einen xmega128A1. Die 
Kommunikation läuft über ein eigenes Protokoll, das eine crc16 
Berechnung beinhaltet. Für die Berechnung habe ich eine crc Tabelle im 
Programmspeicher abgelegt.
Der Bootloader liegt an der Adresse 0x20000.
pointer = &Crc16Tab[0];
//pointer += 0x020000; //damit geht es
tabval = pgm_read_word_far(pointer);

Die Tabelle liegt an der byte Adresse 0x201F9. Mit der oben 
geschriebenen Variante gibt mir der pointer aber 0x001F9 aus.
Der Zugriff funktioniert also nur wenn ich den bootloader offset von 
0x20000 dazu addiere. Warum, was mach ich falsch?

Danke Gruß

Basti

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich vermute es liegt daran, dass AVR-GCC (sofern verwendet) nachwievor 
mit Code/Daten > 64k Probleme hat.
Als Alternative zur CRC Tabelle könnten evtl. die Funktionen aus crc.h 
verwendet werden.

Viele Grüße,
Andreas

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.