Question

Bonjour Je travaille actuellement avec une AT91SAM7X256 en cours d'exécution sur « métal nu ». Je l'ai lu attentivement la fiche technique ainsi que le manuel d'architecture, dans cet esprit, je suis revenu avec la conclusion que la FIQ est une priorité plus élevée que par conséquent FIQs IRQs ne doivent pas être préempté par IRQs

Cependant, dans la pratique je remarque les IRQs suspendent l'exécution de mon gestionnaire de FIQ, même si je ne touche pas le bit F dans le CPSR. Est-il erroné de supposer que FIQs ne doivent pas être suspendus à IRQs de service?

Que dois-je faire pour vous assurer que ma routine de service ne soit pas FiQ interrompu?

Merci vous

Était-ce utile?

La solution

Lorsque vous entrez un gestionnaire d'FIQ, coeur ARM désactive automatiquement d'autres interruptions, à la fois FIQ et IRQ, en réglant le « I » et « F » bits dans le CPSR. Cela vous donne une sensation que rien ne peut préempter une FIQ. Mais SW peut passer outre ce comportement! Donc je suppose que une partie de votre code est en contact avec le CPSR et remettre à zéro le bit « I ». Et IRQ interruptions pourraient donc être se déclencher même lorsque votre FIQ est en cours d'exécution.

Pour ajouter à l'explication ci-dessus, la raison FIQs semblent particulière est que lorsqu'un gestionnaire d'IRQ est entré seulement le « I » bit est il en désactivant IRQs ne plus. bit « F » est pas définie et donc plus FIQs peut interrompre un gestionnaire IRQ en cours d'exécution sans la nécessité d'une intervention SW.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top