Zeiger auf const-Array im __flash?

#3357366
Lesenswert?

Hallo zusammen,

für eine LCD-Ansteuerung möchte ich die Zeichensatzdaten im Flash 
ablegen, d.h. z.B.
1
const __flash uint8_t  mjg8pxBitmaps []  = { ... }
für die eigentlichen Bitmaps,
1
const __flash uint16_t mjg8pxIndices[] = { ...}
für die Indizes auf die Positionen der (unterschiedlich breiten) Zeichen 
im Bitmap-Array, und
1
const __flash uint8_t mjg8pxWidths[] = {
für die Breiten der einzelnen Zeichen.

Ebenfalls ins Flash soll ein Descriptor
1
typedef struct {
2
  const uint8_t numRows;
3
  const uint8_t first;
4
  const uint8_t last;
5
  const uint8_t * const bitmaps ;
6
  const uint16_t * const indices;
7
  const uint8_t * const widths;
8
} mjgFontDescriptor_t;
 um alle Daten zu einem Zeichensatz - das System soll mit mehreren 
umgehen können - mit einem Zeiger auf den Descriptor übergebn zu können.
1
const __flash mjgFontDescriptor_t mjg8pxDescriptor = {
2
  1, // number of 8 bit rows
3
  33, // ASCII code of first character in charset
4
  134, // ASCII code of last character in charset
5
  mjg8pxBitmaps, // Z. 1471
6
  mjg8pxIndices, // Z. 1472
7
  mjg8pxWidths,  // Z. 1473
8
};

Für jedes der Arrays erhalte ich jedoch die Fehler

Error 1  initializer element is not computable at load time  1471
Error 2  (near initialization for 'mjg8pxDescriptor.bitmaps')  1471
Error 3  initializer element is not computable at load time  1472
Error 4  (near initialization for 'mjg8pxDescriptor.indices')  1472 
Error 5  initializer element is not computable at load time  1473
Error 6  (near initialization for 'mjg8pxDescriptor.widths')  1473

Was mache ich falsch? Alle Daten des Descriptors sind "eigentlich" 
bekannt. Trotzdem kriege ich den nicht initialisiert -- liegt es daran, 
dass der Compiler hier Daten haben müsste, die erst der Linker kennt?

Gruß & Dank,
Michael

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren