2009-05-20 36 views
4

好的,在學校我們正在開發一個操作系統。我的項目是開發一個ATA硬盤驅動器。我認爲我的中斷服務程序工作得很好,當時我的教授指出我只發送中斷結束命令給slave PIC,而不是master。爲什麼主PIC的中斷會導致三重故障(重啓)?

我的問題是,無論何時將中斷結束髮送給主PIC,它都會導致三重故障,從而導致我的系統重新啓動。現在我已經解開/評論了一堆行,並且似乎只要將代碼結束髮送給主PIC的功能留在代碼中,就會出現三重故障。

現在我敢肯定如下:

  1. 中斷是在進入我的ISR
  2. 我正確發送端中斷的最字節(類測試)
  3. 我不是殘疾人重新確認相同的中斷

這一直造成巨大的挫折,所以我希望有人可以給我一些指導,而無需看到我們的代碼。

謝謝!

+2

舊帖子,但也許作者還活着?如何處理一些代碼? – Earlz 2010-05-11 21:09:00

回答

0

我只能猜這個。這裏有一些事情要檢查。

  • 該EOI是否超出了您的細分限制?
  • EOI是隻讀頁面嗎?
  • 您的中斷處理程序是否處於正確的權限級別以訪問EOI?
  • 您是否使用了正確的段寄存器?

任何這些都可能導致故障。如果描述符表損壞或者設置不當,則可能導致雙重或三重錯誤。