4

好的,在学校我们正在开发一个操作系统。我的项目一直是开发一个 ATA 硬盘驱动程序。当我的教授指出我只是向从 PIC 发送中断结束命令而不是主 PIC 时,我认为我的中断服务程序运行良好。

我的问题是,每当我向主 PIC 发送中断结束时,它会导致三重故障,然后导致我的系统重新启动。现在我已经取消/注释了一堆行,似乎每当将中断结束发送到主 PIC 的函数留在代码中时,我都会遇到三重错误。

现在我很确定以下几点:

  1. 进入我的 ISR 时中断被禁用
  2. 我正在正确发送中断结束字节(经过类测试)
  3. 我没有重新确认相同的中断

这引起了巨大的挫败感,所以我希望有人可以在不需要查看我们的代码的情况下给我一些指导。

谢谢!

4

1 回答 1

0

我只能猜测这个。这里有一些事情要检查。

  • EOI 是否超出了您的细分市场限制?
  • EOI 是否在只读页面上?
  • 您的中断处理程序是否具有访问 EOI 的正确权限级别?
  • 您是否使用了正确的段寄存器?

其中任何一个都可能导致故障。如果描述符表损坏或开始时设置不正确,这反过来可能导致双重或三重错误。

于 2009-05-20T15:28:57.433 回答