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