Hallo,
im Program Memory meines dsPIC33EP habe ich eine Liste an Daten, auf die
ich zugreifen möchte. Am elegantesten ließe sich das in meinem Fall wohl
über einen Pointer machen. Nur zeigt ein Pointer normalerweise ja auf
den RAM und nicht den Flash. Im Users Guide des XC16 Compilers auf Seite
147 habe ich aber folgendes gefunden:
1 | __prog__ char * myPROGpointer;
|
"The pointer in this example does not use the space attribute as it is
located in data memory, but the qualifier indicates how the pointer
targets are to be accessed."
Hier das Dokument:
http://ww1.microchip.com/downloads/en/DeviceDoc/50002071F.pdf
Das klingt wunderbar einfach und genau danach, was ich suche. Ich
fürchte aber, dass ich da noch etwas falsch verstanden habe. Erstens
wundert mich, dass der Pointer als char deklariert wird.
Außerdem hätte ich im Disassembly irgendeinen Table Read Befehl
erwartet. Stattdessen wird mein Pointer wie eine normale Variable
behandelt:
x = *TablePtr;
MOV [W4], W6
MOV W6, x
x und TablePtr habe ich so deklariert:
1 | uint16_t x;
|
2 | __prog__ uint16_t *TablePtr;
|
Was mache ich falsch?