写一个简单的磁盘驱动

  写一个简单的IDE磁盘驱动。

  那么多端口,光oranges’上列出来的几个我都晕了。还是先别一头扎进去。“驱动模块”不过是向上(系统)提供读写磁盘的接口函数,向下封装一系列端口操作。闭上眼,想想我们需要磁盘驱动器做什么,再去找相应功能的端口。下面我们就闭上眼:

  1,首先,我们要设定硬盘控制器对扇区的寻址方式,是传统的“柱面/磁头/扇区”,还是所谓的“逻辑扇区”?这就需要设定0X1F6端口的bit6(L位),1表示LBA,0表示CHS。

  我们选择LBA。

  2,无论读写,我们都要告诉硬盘控制器,要操作的硬盘号(一个PC至少能挂4个IDE硬盘呢),起始扇区号,读写的扇区个数。

  我们把硬盘号(0或1)写入0X1F6端口的bit4(DRV位)。

  起始扇区号共28bit,从高到底依次写入0x1f6,0x1f5(LBA HIGH),0x1f4(LBA MID),0x1f3(LBA LOW)。0x1f6端口只拿出来4个bit,放最高4位。

  扇区个数写入0x172h端口(SECTOR COUNT)。

  3,【待续】

原文地址:https://www.cnblogs.com/weiweishuo/p/3099346.html