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


von Basti (Gast)


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.
1
pointer = &Crc16Tab[0];
2
//pointer += 0x020000; //damit geht es
3
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

von Andreas (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.