ID de l'article: 000083953 Type de contenu: Dépannage Dernière révision: 13/02/2006

Pourquoi mon Nios® microprocesseur ne lit-il pas à partir de mon périphérique sur ma mémoire, alors que j’essaie de le lire immédiatement après une écriture sur le même périphérique ?

Environnement

BUILT IN - ARTICLE INTRO SECOND COMPONENT
Descriptif Les pointeurs des périphériques maqués en mémoire doivent être déclarés comme des types volatiles. Un pointeur qui n’est pas déclaré volatile peut ne pas se comporter comme prévu sous certains niveaux d’optimisation du compilateur. Par exemple, considérez le segment de code suivant.

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é.

Produits associés

Cet article concerne 1 produits

Circuits programmables Intel®

1

Le contenu de cette page est une combinaison de traduction humaine et informatique du contenu original en anglais. Ce contenu vous est fourni pour votre commodité et à titre informatif seulement et ne saurait être totalement exact ou complet. En cas de contradiction entre la version anglaise de cette page et la traduction, c’est la version anglaise qui prévaut. Afficher la version anglaise de cette page.