int *pointer = (int *) na_peripheral;
int read_back;
...
*pointer = 49;
read_back = *pointer;
Avec un niveau d’optimisation du compilateur de -o2 (par défaut), ce programme
rédigera une valeur de 49 sur le périphérique. Cependant, quand read_back est-ce que
défini sur la valeur du pointeur, il sera chargé avec la valeur qui a été
vient d’être écrit sur le périphérique, qui est toujours stocké dans un Nios cœur interne
Registre. Cela peut être acceptable dans certaines circonstances, mais cela peut entraîner des problèmes si
le périphérique est mis à jour en externe en même temps que la lecture. Pour s’assurer
que le Nios cœur lit la valeur correcte du périphérique, le pointeur
doit être déclarée comme suit :
volatile int *pointer = (int *) na_peripheral;
Cela permettra de s’assurer que Nios soutenu le choix de la puce et l’activation de la lecture signaux pour le périphérique souhaité.