Pourquoi une fin de interruption pour le maître PIC provoquer un défaut triple (reboot)?

StackOverflow https://stackoverflow.com/questions/888603

  •  23-08-2019
  •  | 
  •  

Question

Ok, à l'école, nous développons un système d'exploitation. Mon projet a été de développer un pilote de disque dur ATA. Je pensais avoir ma routine de travail assez bien du service d'interruption lorsque mon professeur a fait remarquer que je n'envoie en fin de interruption des commandes à l'esclave PIC, et non le maître aussi bien.

Mon problème est que chaque fois que j'envoie la fin de l'interrompre pour le PIC maître, il provoque une faute triple qui provoque alors mon système à redémarrer. Maintenant, je suis un / a commenté un tas de lignes, et il semble que chaque fois que la fonction pour envoyer la fin de l'interruption PIC maître reste dans le code que je reçois la faute triple.

Maintenant, je suis tout à fait sûr de ce qui suit:

  1. les interruptions sont désactivées à l'entrée de mon ISR
  2. J'envoie correctement la fin de l'octet d'interruption (classe testée)
  3. Je ne suis pas re-Prenant acte de la même interruption

Cela a été source de frustration énorme, donc j'espère que quelqu'un peut me donner quelques conseils sans besoin de voir notre code.

Merci!

Était-ce utile?

La solution

Je ne peux que deviner à ce sujet. Voici quelques points à vérifier.

  • L'EOI en dehors de votre limite de segment?
  • Le EOI sur une page en lecture seule?
  • Votre gestionnaire d'interruption au niveau de privilège correct pour accéder au EOI?
  • Utilisez-vous le registre de segment correct?

Tout de ceux-ci pourraient provoquer un défaut. Cela pourrait à son tour provoquer un défaut double ou triple si les tables de descripteurs sont soit corrompus ou ont été mal mis en place pour commencer.

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