当我尝试在 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)
;
}