硬盘控制器主要端口寄存器

IO端口端口用途
Primary通道Secondary通道读操作时写操作时
0x1F00x170DataData
0x1F10x171ErrorFeature
0x1F20x172Sector countSector count
0x1F30x173LBA lowLBA low
0x1F40x174LBA midLBA mid
0x1F50x175LBA highLBA high
0x1F60x176DeviceDevice
0x1F70x177StatusCommand
Control Block registers
0x3F60x376Alternate statusDevice Control

  •  Data寄存器为16位,其他寄存器为8位
  •  LBA28(Logical Block Address)模式:用28位描述一个扇区的地址,每个扇区512字节,最大支持128GB,从0开始编号来定位区块,第一区块LBA=0,第二区块LBA=1,依此类推。还有LBA48模式,最大可寻址范围是2的48次方。
  • Command寄存器写入命令硬盘就开始工作,命令如下:                               

                            identify:0xEC,硬盘识别

                            read sector:0x20,读扇区

                            write sector:0x30,写扇区 

                                 

 

从下到上依次为0~7位

硬盘操作顺序:

  1. 选择通道,往该通道的sector count寄存器写入待操作的扇区。
  2. 往该通道上的三个LBA寄存器写入扇区起始地址的低24位。
  3. 往Devcie寄存器写入LBA地址的24~27位,并置第6位为1,使其为LBA模式,设置第4位,选择操作的硬盘(主盘或从盘)。
  4. 往该通道的Command寄存器写入操作命令。
  5. 读取该通道的Status寄存器,判断硬盘工作是否完成。
  6. 如果以上步骤是读硬盘,进入下一个步骤,否则,完工。
  7. 将硬盘数据读出

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值