文章目录

  • IDE 与 SATA
  • 硬盘分区表结构
  • 硬盘控制器主要端口寄存器
  • data 寄存器
  • Error && Features
  • Error
  • Features
  • Sector count
  • LBA low | mid | high
  • device 寄存器
  • Status
  • Command


IDE 与 SATA

很久以前,硬盘控制器和硬盘是分开的,后面开发了一个新接口,这才将硬盘控制器和硬盘整合到一起,这样接口称为集成设备电路(Integrated Drive Electronices, IDE)。

IDE接口和SATA接口:

RADI 0 bios SATA控制器 sata硬盘控制器_硬盘控制器

IDE(并口)硬盘 和 SATA(串口)硬盘:

RADI 0 bios SATA控制器 sata硬盘控制器_硬盘控制器_02

PATA 接口线缆,也称 IDE 线,一条 IDE 线上可以挂在两块硬盘,一个主盘(Master),一个从盘(Slave):

RADI 0 bios SATA控制器 sata硬盘控制器_SATA_03

一个主板支持这样的 4 块 IDE(PATA)硬盘,所以主板提供应两个 IDE 插槽。这两个 IDE 插槽分别命名为 IDE0 和 IDE1。也将 IDE0 称为 Primary 通道,将 IDE1 称为 Secondary 通道,它们都是通道。每个通道上分别有主盘和从盘。

Tips:也有可能只有一个 IDE 插槽,甚至不支持 IDE 插槽,这样就要看主板能力了。

SATA 接口线缆:

RADI 0 bios SATA控制器 sata硬盘控制器_SATA_04

硬盘分区表结构

偏移

长度

描述

0

1

状态(08H 可引导、00H 不可引导、其它 不合法)

1

1

起始磁头号

2

1

起始扇区号(仅用了低 6 位,高 2 位为起始柱面号的第 8,9 位)

3

1

起始柱面号的低 8 位

4

1

分区类型(System ID)

5

1

结束磁头号

6

1

结束扇区号(仅用了低 6 位,高 2 位为结束柱面号的第 8,9 位)

7

1

结束柱面号的低 8 位

8

4

起始扇区的 LBA

12

4

扇区数目

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

data 寄存器

  • 宽度:16位
  • 在读硬盘时,硬盘准备好数据后,硬盘控制器将其放在内部缓冲区中,不断读此寄存器便是读出缓冲区中的数据。
  • 在写硬盘时,我们要把数据源源不断地输送到此端口,数据便被存入到缓冲区里,硬盘控制器发现这个缓冲区中有数据了,便将此处的数据写入相应的扇区中。

Error && Features

Error
  • 使用场景:读
  • 宽度:8位
  • 只在读取硬盘失败时有用,里面记录失败的信息,尚未读取的扇区保存在 Sector count 寄存器中。
Features
  • 使用场景:写
  • 宽度:8位
  • 写硬盘时,有些命令需要指定额外参数,这些参数就写在 Fea ture 寄存器中。

Sector count

  • 使用场景:读写
  • 宽度:8位
  • 用来指定待读取或写入的扇区数。硬盘每完成一个扇区,就会将此寄存器的值减 1,所以如果中间失败了,此寄存器中的值便是尚未完成的扇区。
  • 8位寄存器,最大值位 255,若指定为 0,则表示操作 256 个扇区。(因为:1 0000 0000 舍去高位 1 从而保证 8 位,结果为 0)

LBA low | mid | high

  • 使用场景:读写
  • 宽度:8位
  • LBA 有两种,一种 LBA28,另一种 LBA48,均用来描述一个扇区的地址。
  • LBA low:存储 28 位地址的第 0~7 位
  • LBA mid:存储第 8~15 位
  • LBA high:存储第 16~23 位
  • device 寄存器的低 4 位:存储第 24~27 位

device 寄存器

  • 使用场景:读写
  • 宽度:8位
  • 图示:

Status

  • 使用场景:读
  • 宽度:8位
  • 作用:保存硬盘的状态信息。
  • 图示:

Command

  • 使用场景:写
  • 宽度:8位
  • 作用:存储让硬盘执行的命令,将命令写入该寄存器,硬盘便开始工作了。
  • 主要命令:
  1. identify0xEC 硬盘识别
  2. read sector0x20 读扇区
  3. write sector0x30 写扇区