ATA/ATAPI - I/Oポート、レジスタ
目次
- ATA/ATAPI - I/Oポート、レジスタ
- 目次
- I/Oポート、レジスタ
- ATAのI/Oポートマップ
- データ・レジスタ (Port:0x0170, 0x01f0)
- エラー・レジスタ (Port:0x0171, 0x01f1)
- フィーチャーズ・レジスタ (Port:0x0171, 0x01f1)
- セクタ・カウント (Port:0x0172, 0x01f2)
- セクタ・ナンバー (Port:0x0173, 0x01f3)
- シリンダLow (Port:0x0174, 0x01f4)
- シリンダHigh (Port:0x0175, 0x01f5)
- デバイス/ヘッド・レジスタ (Port:0x0176, 0x01f6)
- ステータス・レジスタ (Port:0x0177, 0x01f7)
- コマンド・レジスタ (Port:0x0177, 0x01f7)
- オールタネート・ステータス・レジスタ (Port:0x0376, 0x03f6)
- デバイス・コントロール・レジスタ (Port:0x0376, 0x03f6)
I/Oポート、レジスタ
コマンドによって、レジスタのビットの意味が変わってくるので、詳しくはコマンドを参照してください。
いっそ、レジスタAとかにすればよかったのに。。
ATAのI/Oポートマップ
データ・レジスタ (Port:0x0170, 0x01f0)
| bit | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|
| 内容 | 主に、PIOデータ転送時のデータ用レジスタ |
|---|
エラー・レジスタ (Port:0x0171, 0x01f1)
| bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|
| 内容 | コマンドによる | ABRT | コマンドによる |
|---|
ABRT (bit:2)
- 0:アボートなし
- 1:実行したコマンドが未定義かパラメータが間違っている。
フィーチャーズ・レジスタ (Port:0x0171, 0x01f1)
コマンドの特性を示すレジスタで、すべてのビットの意味がコマンドによって異なる。
セクタ・カウント (Port:0x0172, 0x01f2)
PACKETコマンド以外
PACKETコマンド→Interrupt Reasonレジスタ
C/D (bit:0)
I/O (bit:1)
データの転送方向を示す。
REL (bit:2)
TAG (bit:3-7)
セクタ・ナンバー (Port:0x0173, 0x01f3)
すべてのビットの意味がコマンドによって異なる。
シリンダLow (Port:0x0174, 0x01f4)
| bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|
| 内容 | CHS方式時:Cylinder Low LBA方式時:LBA[0-7] PACKETコマンド時:Byte Count LSB |
|---|
シリンダHigh (Port:0x0175, 0x01f5)
| bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|
| 内容 | CHS方式時:Cylinder High LBA方式時:LBA[8-15] PACKETコマンド時:Byte Count MSB |
|---|
デバイス/ヘッド・レジスタ (Port:0x0176, 0x01f6)
| bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|
| 内容 | 廃止 | コマンドによる | 廃止 | DEV | コマンドによる |
|---|
Device select (bit:4)
ステータス・レジスタ (Port:0x0177, 0x01f7)
Error (bit:0)
Data Request (bit:3)
Device Ready (bit:6)
- 0:デバイスの準備ができていない。
- 1:デバイス準備OK
Busy (bit:7)
コマンド・レジスタ (Port:0x0177, 0x01f7)
オールタネート・ステータス・レジスタ (Port:0x0376, 0x03f6)
基本的にステータス・レジスタと同じで、割り込みフラグを変更しないことだけが違う。
デバイス・コントロール・レジスタ (Port:0x0376, 0x03f6)
このレジスタは、マスタ、スレーブの両デバイスに書き込みを行うので注意。
Interrupt Enable (bit:1)
- 0:割り込みをイネーブル
- 1:割り込みをディセーブル
Software Reset (bit:2)