ATmega2560: Wie Daten oberhalb 64k plazieren?

Gast #3320469
Lesenswert?

Hallo Forum,

ich weiss, Daten sollen unterhalb 64k liegen, weil die *_P Funktionen 
nur mit diesen arbeiten können.
Ich habe auch davon gehört wie man auf Daten oberhalb 64k zugreift 
(*_far).

Jetzt kommt mein Problem:

ich mache regen Gebrauch von *_P Funktionen, bisher war das alles ok, 
weil meine Daten dafür locker in den unteren 64k Platz hatten.

Jetzt muss ich ein 40kB großes Firmware File im Flash unterbringen (für 
ein grafisches Display), natürlich geteilt in kleinere Teile, sonst 
würde ich "array too big" bekommen, was an sich immer noch kein Problem 
ist.
Diese Daten will ich dann mit einem Loader ins Display pumpen.

Aber, diese zusätzliche große Datenmenge sorgt dafür, daß manche meiner 
Konstanten, welche bei den *_P Funktionen benutzt werden, nach oben 
"geschoben" werden. Denn ich habe keinen Einfluss darauf, wo die 
Konstanten im FLASH angelegt werden.

Jetzt meine Frage:

wie kann ich es erzwingen daß der Compiler/Linker meine 40k großes 
Firmware oberhalb 64k Grenze im Flash plaziert, damit die übrigen 
Konstanten unterhalb 64k bleiben.

Wie würdet Ihr das Problem lösen?


Gruß
Peter

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