1

当我尝试在 QEMU 中等待辅助 IDE 控制器中的第一个磁盘空闲时,inb(0x177) 总是返回 0)

后续步骤:

我尝试通过执行以下操作将第三个磁盘添加到 QEMU:

1) 创建一个新的空白磁盘映像 2) 在 QEMU 选项中将映像添加为 hdc 3) 创建一个名为 ide.c 的新文件来处理辅助通道。(使用端口 0x17* 而不是硬件手册中指定的 0x1F*)

在 ide.c 中,我有以下内容来检查辅助控制器是否存在:

outb(0x173, 0x88);
int r = inb(0x173);
printf("SECONDARY DISK CONTROLLER%s\n", r==0x88?" present":"not present")

&它表明它确实如此。

但是检查设备不忙不起作用。有人知道这是为什么吗?

static int
ide_wait_ready(bool check_error)
{
        int r;
        //WAIT FOR !BUSY
        while (((r = inb(0x177)) > 0)
        ;
}
4

0 回答 0