0

我正在研究 ATA 规范来为我的爱好操作系统实现 PATA 驱动程序。我阅读了第一个 ATA 规范草案(ATA/ATAPI-1, 1994),因为它只有大约 70 页(ATA/ATAPI-6 大约有 500 页)。在阅读规范时,有一些我不明白的地方,我想检查一下我到目前为止是否正确理解。

据我所知,与 ATA 兼容的控制器的物理配置如下图所示。

带ata接口的系统图

根据规范,电信号被发送到两个驱动器,因为驱动器共享相同的电线。所以我认为将数据写入寄存器(例如outb(0x1F6,...))会影响两个驱动器控制器的寄存器,并且当命令(读/写扇区)发送到命令寄存器时,两个控制器都会读取自己的寄存器和决定谁运行命令并使用 40 针连接器。

  1. 那么当试图读取状态寄存器时会发生什么?

1-1。哪个控制器响应 I/O 端口读取指令?是否只有主机响应读取指令并且主机的状态寄存器包含有关两个驱动器的所有信息?(例如,如果主驱动器不忙,而从驱动器忙,则设置状态寄存器中的 BSY 位。

1-2。如果状态寄存器包含有关两个驱动器的所有信息,假设 BSY 位已清除并且 DRQ 已设置,那么我如何知道哪个驱动器已准备好将数据从缓冲区发送到处理器?

  1. 如果无法读取两个驱动器中的寄存器,是否意味着无法同时从两个驱动器读取/写入扇区?

如果只有一个驱动器连接到 40 针连接器,一切都会对我产生影响。但是,每个主接口和辅助接口最多允许两个驱动器,所以我很困惑。

谢谢你的帮助。

4

0 回答 0