Forum: Compiler & IDEs avr-gcc und der Flash


von Sven Günther (Gast)


Lesenswert?

Hallo

Ich versuche grade den Atmel Beispiel Code für das PS2 Keyboard nach
avr-gcc zu portieren, es ist eigendlich schon fertig aber in einem der
Files wird der Type flash benutzt:

flash unsigned char unshifted[][2] = { ............ }

der Soll das arry direkt in den flash legen, das macht doch der gcc
generell oder gibt es einen ähnlichen Befehl?

Gruss Sven.
PS: Kann es im Moment nur Compiler testen ...

von Wolfgang Niegsch (Gast)


Lesenswert?

Hallo Sven,
im avr-libc Manual ist es beschrieben, unter:
Modules --> Program Space String Utilities
Aber beim zugriff die Macros nutzen. Beschreibung an gleicher Stellt.

Mfg
Wolfgang

von Sven Günther (Gast)


Lesenswert?

Hallo Wolfgang,

eigentlich müste doch meine Frage hinfällig sein, denn das array wird
doch nicht in den RAM kopiert, oder?

so sieht das Original aus.
flash unsigned char unshifted[][2] = { ............ }

ich würde jetzt folgendes Schreiben
unsigned PGM_P unshifted[][2] = { ............ }

dabei habe ich aber das Problem es jetzt ein Pointer ist.

so sieht z.B. der Zugriff aus:
for(i = 0; unshifted[i][0]!=sc && unshifted[i][0]; i++);

Gruss Sven

von Holger (Gast)


Lesenswert?

Du musst das so machen:

Deklaration/Definiton:
  static const unsigned char unshifted[][] PROGMEM = { ... };
  PGM_VOID_P index= unshifted;

Zugriff mit:
  pgm_read_byte( unshifted++ );

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.