Re: [問題] ATA COMMAND問題
※ 引述《CuckooBoy (阿書)》之銘言:
: 有沒有人懂ATA COMMAND
: 我手上有COMMAND表
: 但是不知道怎麼傳這些COMMAND
: 有沒有人寫過類似的程式
: 可以舉個例子…嗎?
: 譬如20H的 READ SECTOR
1.請先找出 ATA device 的 address.
在 IDE controller 的 PCI configuration Space 某個 Offset 有儲存 address.
傳統的 IDE mode 是以 I/O port 的方式來存取 ATA Device.
AHCI mode 和 RAID mode 是以 memory address 來存取.
但是, 有向前相容之前的 ATAPI command.
2.假設某個 Primary IDE Controller 的 I/O address 是 1F0h.
則對照你手邊的 Command 表, 每個 Register 的 address 如下.
都是以 Byte 為單位存取.
1F0 (Read and Write): Data Register
1F1 (Read): Error Register
1F1 (Write): Features Register
1F2 (Read and Write): Sector Count Register
1F3 (Read and Write): LBA Low Register
1F4 (Read and Write): LBA Mid Register
1F5 (Read and Write): LBA High Register
1F6 (Read and Write): Drive/Head Register
1F7 (Read): Status Register
1F7 (Write): Command Register
3F6 (Read): Alternate Status Register
3F6 (Write): Device Control Register
Status register (1F7h) 所讀出來的 1-Byte value, 每個 Bit 所代表的意義由
左至右分別:
BIT7: BSY (busy)
BIT6: DRDY (device ready)
BIT5: DF (Device Fault)
BIT4: DSC (seek complete)
BIT3: DRQ (Data Transfer Requested)
BIT2: CORR (data corrected)
BIT1: IDX (index mark)
BIT0: ERR (error)
Error register 和其他 register 依此類推.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.64.195.232
推
05/19 04:23, , 1F
05/19 04:23, 1F
推
05/19 05:53, , 2F
05/19 05:53, 2F
推
05/19 11:53, , 3F
05/19 11:53, 3F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
ASM 近期熱門文章
PTT數位生活區 即時熱門文章