作者Tankan (Tankan)
看板ASM
標題Re: [問題] ATA COMMAND問題
時間Fri May 18 22:30:15 2007
※ 引述《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
1F:推 loveflames:請問這個應該收在哪個分類? 05/19 04:23
2F:推 zhim:bios 吧 05/19 05:53
3F:推 mapleV:實用的指南 THX 05/19 11:53