写一个简单的磁盘驱动
写一个简单的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,【待续】
posted on 2013-05-25 21:39 weiweishuo 阅读(476) 评论(0) 编辑 收藏 举报