当我尝试等待辅助IDE控制器中的第一个磁盘在QEMU中空闲时,inb(0x177)始终返回0)
遵循的步骤:
我尝试通过执行以下操作向QEMU添加第3个磁盘:
1)创建一个新的空白磁盘映像 2)在QEMU选项中将图像添加为hdc 3)创建一个名为ide.c的新文件来处理辅助通道。 (使用h / w手册中指定的端口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)
;
}