int *pointer = (int *) na_peripheral;
int read_back;
...
*pointer = 49;
read_back = *pointer;
Mit einem Compiler-Optimierungsniveau von -o2 (der Standardeinstellung) ist dieses Programm
schreibt einen Wert von 49 in das Peripheriegerät. Wann ist dies read_back
jedoch
auf den Wert des Pointers gesetzt, wird er mit dem Wert geladen, der
nur auf das Peripheriegerät geschrieben, das immer noch in einem internen Nios Kern gespeichert ist
Registrieren. Dies kann unter bestimmten Umständen zulässig sein, kann aber Probleme verursachen, wenn
das Peripheriegerät wird zur gleichen Zeit wie beim Lesen extern aktualisiert. So stellen Sie sicher, dass
dass der Nios Kern den korrekten Wert aus dem Peripheriegerät, dem Pointer, liest
sollte wie folgt angegeben werden:
volatile int *pointer = (int *) na_peripheral;
Auf diese Weise wird sichergestellt, dass Nios die Chip-Select- und Read-Enable-Option bestätigt. Signale für das gewünschte Peripheriegerät.