Perché una fine interruzione per il PIC master dovrebbe causare un triplo errore (riavvio)?

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

  •  23-08-2019
  •  | 
  •  

Domanda

Ok, a scuola stiamo sviluppando un sistema operativo.Il mio progetto è stato quello di sviluppare un driver per disco rigido ATA.Pensavo che la mia routine del servizio di interruzione funzionasse abbastanza bene quando il mio professore mi ha fatto notare che stavo inviando comandi di fine interruzione solo al PIC slave e non anche al master.

Il mio problema è che ogni volta che invio l'end-of-interrupt al PIC master, si verifica un triplo errore che provoca il riavvio del mio sistema.Ora ho annullato/commentato un sacco di righe e sembra che ogni volta che la funzione per inviare l'interruzione di fine al PIC master viene lasciata nel codice, ottengo il triplo errore.

Ora sono abbastanza sicuro di quanto segue:

  1. gli interrupt sono disabilitati quando si accede al mio ISR
  2. Sto inviando correttamente il byte di fine interruzione (classe testata)
  3. Non sto ri-riconoscendo lo stesso interrupt

Ciò ha causato un'enorme frustrazione, quindi spero che qualcuno possa darmi qualche indicazione senza dover vedere il nostro codice.

Grazie!

È stato utile?

Soluzione

Posso solo immaginarlo.Ecco alcune cose da controllare.

  • L'EOI è al di fuori del limite del segmento?
  • L'EOI è su una pagina di sola lettura?
  • Il gestore delle interruzioni ha il livello di privilegio corretto per accedere all'EOI?
  • Stai utilizzando il registro dei segmenti corretto?

Ognuno di questi potrebbe causare un guasto.Ciò a sua volta potrebbe causare un doppio o triplo errore se le tabelle dei descrittori sono danneggiate o impostate in modo errato all'inizio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top