LBA简介
磁盘读取发展
IO操作读取硬盘的三种方式:
chs方式 :小于8G (8064MB)
LBA28方式:小于137GB
LBA48方式:小于144,000,000 GB
LBA方式访问使用了data寄存器,LBA寄存器(总共3个),device寄存器,command寄存器来完成的。
LBA28和LBA48方式:
LBA28方式使用28位来描述一个扇区地址,最大支持128GB的硬磁盘容量。
LBA28的寄存器
寄存器 | 端口 | 作用 |
---|---|---|
data寄存器 | 0x1F0 | 已经读取或写入的数据,大小为两个字节(16位数据) 每次读取1个word,反复循环,直到读完所有数据 |
features寄存器 | 0x1F1 | 读取时的错误信息 写入时的额外参数 |
sector count寄存器 | 0x1F2 | 指定读取或写入的扇区数 |
LBA low寄存器 | 0x1F3 | lba地址的低8位 |
LBA mid寄存器 | 0x1F4 | lba地址的中8位 |
LBA high寄存器 | 0x1F5 | lba地址的高8位 |
device寄存器 | 0x1F6 | lba地址的前4位(占用device寄存器的低4位) 主盘值为0(占用device寄存器的第5位) 第6位值为1 LBA模式为1,CHS模式为0(占用device寄存器的第7位) 第8位值为1 |
command寄存器 | 0x1F7 | 读取,写入的命令,返回磁盘状态 1 读取扇区:0x20 写入扇区:0x30 磁盘识别:0xEC |
IDE通道1,读写0x1f0-0x1f7号端口
IDE通道2,读写0x170-0x17f号端口
CHS方式:
写0x1f1: 0
写0x1f2: 要读的扇区数
写0x1f3: 扇区号W
写0x1f4: 柱面的低8位
写0x1f5: 柱面的高8位
写0x1f6: 7~5位,101,第4位0表示主盘,1表示从盘,3~0位,磁头号</