Por que um fim-de-interrupção para o mestre PIC causa uma falha tripla (reboot)?

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

  •  23-08-2019
  •  | 
  •  

Pergunta

Ok, na escola, estamos desenvolvendo um sistema operacional. Meu projeto foi desenvolver um driver de disco rígido ATA. Eu pensei que eu tinha a minha rotina de serviço de interrupção funcionando muito bem quando meu professor apontou que eu só estava enviando comandos de fim de interrupção para o escravo PIC, e não o mestre também.

Meu problema é que sempre que eu enviar o fim-de-interrupção para o mestre PIC, que provoca uma falha tripla que faz com que meu sistema para reiniciar. Agora eu tenho un / comentou um monte de linhas e parece que sempre que a função para enviar o fim-de-interrupção para o mestre PIC é deixado no código eu recebo a falha tripla.

Agora estou completamente certo do seguinte:

  1. interrupções são desactivadas ao entrar no meu ISR
  2. Estou enviando corretamente o byte fim-de-interrupção (classe testado)
  3. Não sou re-reconhecendo a mesma interrupção

Este tem sido causando frustração enorme, por isso estou esperando que alguém pode me dar alguma orientação, sem precisava ver o nosso código.

Obrigado!

Foi útil?

Solução

Eu só posso imaginar isso. Aqui estão algumas coisas para verificar.

  • É o exterior EOI do seu limite de segmento?
  • É a EOI em uma página somente leitura?
  • é seu manipulador de interrupção no nível de privilégio correta para acessar o EOI?
  • Você está usando o registro de segmento correto?

Qualquer desses poderia causar uma falha. Que por sua vez poderia causar uma falha dobro ou o triplo se as tabelas descritor ou são corrompidos ou foram ajustados de forma inadequada, para começar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top