Hallo,
ich programmiere gerade ein Grafikanwendungen auf einem PIC32MX460. Ich
verwende dazu die -zugegebnermassen schon recht betagte - Microchip
Graphics Object Library. Compiler ist der XC32. Fonts werden hier als
großes Konstantenarray im ROM abgelegt. Mit dem Default-Font
funktioniert alles prima. Sobald ich einen zusätzlichen Font einbinden
will, erhalte ich die folgende Fehlermeldung des Linkers:
relocation truncated to fit: R_MIPS_GPREL16 against `Courier'
Der Fehler taucht an der Stelle auf, wo auf das Font-Array zugegriffen
wird:
Interessanterweise funktioniert es, wenn ich den Defaultfont aus dem
Projekt lösche und durch "Courier" ersetze.
Irgendwie scheint es so, als ob mit einer 16-bit-Addresse auf das Array
zugegriffen wird. Dafür spricht, dass der Fehler nur auftritt, wenn das
Array die ersten 64 kB des Flash-Speichers überschreitet. Wie kann das
sein, der PIC32 ist doch ein 32bit-Controller und Pointer sollte doch
eigentlich 32 bit lang sein?
Wer kennt sich mit dem XC32 aus und kann mir helfen?
1 | extern const char L8232[] __attribute__((aligned(2)));
|
2 | //FONT NAME CAN BE CHANGED HERE.
|
3 | const FONT_FLASH Courier = {0,L8232};
|
4 | //const FONT_FLASH GOLFontDefault = {0,L8232};
|
5 | const char L8232[] __attribute__((aligned(2))) = {...lange Liste von Hex-Zahlen};
|