ATA (technologia)
Z Wikipedii
ATA (ang. Advanced Technology Attachments) - interfejs systemowy w komputerach klasy PC i Amiga przeznaczony do komunikacji z dyskami twardymi zaproponowany w 1983 przez firmę Compaq. Używa się także skrótu IDE (zamiennie z ATA), od 2003 roku (kiedy wprowadzono SATA) standard ten jest określany jako PATA (od "Parallel ATA").
Standard ATA nie jest już rozwijany w kierunku zwiększania szybkości transmisji. Początkowo stosowano oznaczenia ATA-1, -2 itd., obecnie używa się określeń związanych z zegarem przepustowością interfejsu (ATA/33, ATA/66, ATA/100, ATA/133).
Spis treści |
[edytuj] Opis złącz
Pin | Oznaczenie | Kierunek | Opis | Pin | Oznaczenie | Kierunek | Opis |
---|---|---|---|---|---|---|---|
1 | -RESET | -> | Sprzętowa inicjacja (RESET) dysku stałego | 2 | GND | Masa | |
3 | DD7 | <-> | Systemowa szyna danych dla dysku stałego | 4 | DD8 | <-> | Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym |
5 | DD6 | <-> | Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym | 6 | DD9 | <-> | Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym |
7 | DD5 | <-> | Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym | 8 | DD10 | <-> | Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym |
9 | DD4 | <-> | Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym | 10 | DD11 | <-> | Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym |
11 | DD3 | <-> | Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym | 12 | DD12 | <-> | Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym |
13 | DD2 | <-> | Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym | 14 | DD13 | <-> | Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym |
15 | DD1 | <-> | Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym | 16 | DD14 | <-> | Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym. |
17 | DD0 | <-> | Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym | 18 | DD15 | <-> | Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym |
19 | GND | Masa | 20 | Złącze nie wykorzystane | |||
21 | DMARQ | <- | żądanie przesyłania w trybie DMA | 22 | GND | Masa | |
23 | -DIOW | -> | Przepisanie zawartości linii danych DDx do wybranego rejestru napedu | 24 | GND | Masa | |
25 | -DIOR | -> | Przepisanie zawartości wybranego rejestru napedu na line danych DDx | 26 | GND | Masa | |
27 | IORDY | <- | Sygnał gotowości urządzenia wejścia/wyścia tylko w trybie PIO 3,4 | 28 | CSEL | -> | wybór napędu master/slave za pomocą kabla (ustawia sie to za pomocą zworki-z tyłu napędu) |
29 | -DMACK | -> | Sygnał przyjęcia żądania DMA przez hosta | 30 | GND | Masa | |
31 | INTRQ | <- | żądanie obsługi przerwania(znaczenie tylko jeśli jest wykorzystywany system przerwań) | 32 | IOCS16 | obecnie pin przestarzały - był zdefiniowany w specyfikacji ATA-2 | |
33 | DA1 | -> | Linia adresowa używana do adresowania rejestrów napędu | 34 | -PDIAG | <- | Sygnalizuje zakończenie inicjacji drugiego dysku |
35 | DA0 | -> | Linia adresowa używana do adresowania rejestrów napędu | 36 | DA2 | -> | Linia adresowa używana do adresowania rejestrów napędu |
37 | -CS0 | -> | Umożliwia komunikację z rejestrami komend | 38 | -CS1 | -> | Umożliwia komunikację z rejestrami kontrolnymi |
39 | -DASP | <- | Informuje pierwszy dysk fizyczny(MASTER) o obecności drugiego dysku(SLAVE) | 40 | GND | Masa |
- oznacza negację pinów
->pin ustawia host
<-pin ustawia napęd
<-> pin dwukierunkowy: kierunek zależny od operacji
W dyskach dla notebooków stosowane są cztery dodatkowe piny:
Pin | Funkcja | Pin | Funkcja |
---|---|---|---|
41 | +5VDC (logic) | 42 | +5VDC (motor) |
43 | GND | 44 | Type (0==ATA) |
Widok złącza PATA dysku dla notebooków. X oznacza pin nr 1
.....................x .. |
............ ......... .. |
[edytuj] Opis Rejestrów napędów ATA
Ogólnie można wyróżnić dwa rodzaje napędów ze złączem ATA:
1) dyski twarde - czyli urządzenia które nie obsługują komend pakietowych 2) napędy optyczne CD/DVD - czyli urządzenia które obsługują komendy pakietowe
Rejestry dla urządzeń 1)
Adres | ----- | ----- | ----- | ----- | Funkcje | ----- |
---|---|---|---|---|---|---|
!CS0 | !CS1 | DA2 | DA1 | DA0 | Odczyt !DIOR | Zapis !DIOW |
Rejestry kontrolne | ||||||
N | A | N | x | x | Zwolniony | Nieużywany |
N | A | A | N | x | Zwolniony | Nieużywany |
N | A | A | A | N | Alternate Status | Device Control |
N | A | A | A | A | Przestarzały | Nieużywany |
Rejestry komend | ||||||
A | N | N | N | N | Data | Data |
A | N | N | N | A | Error | Features |
A | N | N | A | N | Sector Count | Sector Count |
A | N | N | A | A | LBA Low | LBA Low |
A | N | A | N | N | LBA Mid | LBA Mid |
A | N | A | N | A | LBA High | LBA High |
A | N | A | A | N | Device Select | Device Select |
A | N | A | A | A | Status | Command |
A | A | x | x | x | Zwolniony | Nieużywany |
Rejestry dla urządzeń 2)
Adres | ----- | ----- | ----- | ----- | Funkcje | ----- |
---|---|---|---|---|---|---|
!CS0 | !CS1 | DA2 | DA1 | DA0 | Odczyt !DIOR | Zapis !DIOW |
Rejestry kontrolne | ||||||
N | A | N | x | x | Zwolniony | Nieużywany |
N | A | A | N | x | Zwolniony | Nieużywany |
N | A | A | A | N | Alternate Status | Device Control |
N | A | A | A | A | Przestarzały | Nieużywany |
Rejestry komend | ||||||
A | N | N | N | N | Data | Data |
A | N | N | N | A | Error | Features |
A | N | N | A | N | Interrupt Reason | Sector Count |
A | N | N | A | A | * | * |
A | N | A | N | N | Byte Count Low | Byte Count Low |
A | N | A | N | A | Byte Count High | Byte Count High |
A | N | A | A | N | Device Select | Device Select |
A | N | A | A | A | Status | Command |
A | A | x | x | x | Zwolniony | Nieużywany |
A= sygnał ustawiony (logiczna 1)
N=sygnał zanegowany (logiczne 0)
x=stan dowolny (0 lub 1)
Rejestrów o nazwie Zwolniony, Przestarzały, Nieużywany nie należy używać
!CS0,!CS1 – oznacza negację pinów to oznacza że w rzeczywistości (na interfejs ATA) należy podawać wartości zanegowane z tabeli (tam gdzie A podawać N,tam gdzie N podawać A)
" * " rejestr używany przez dyski twarde(urządzenia nie obsługujące komend pakietowych) Rejestr nie używany przez napedy CD/DVD (urządzenia obsługujące komendy pakietowe)
REJESTRY KONTROLNE
Alternate Status
- ZASTOSOWANIE: odzczyt podstawowych informacji o stanie urządzenia bez kasowania obsługi przerwania
- rejestr tylko do odczytu , w czasie zapisu dane trafiają do Device Control
- kiedy bit BSY=1 wtedy inne bity z tego rejestru nie powinny być interpretowane,zawartość tego rejestru nie jest prawdziwa gdy urządzenie jest w trybie uśpienia
- odczyt tego rejestru nie spowoduje skasowania obsługi przerwania
- zawartość tego rejestru jest identyczna z zawartością rejestru Status
Device Control
- ZASTOSOWANIE: rejestr ten umożliwia wykonanie programowego resetu oraz właczenie obsługi przerwania
- rejestr jest tylko do zapisu, w czasie odczytu jest to Alternate Status
- rejestr powinien być zapisywany tylko gdy DMACK=0
- zawartość tego rejestru będzie zinterpretowana przez napęd odrazu po jego zapisaniu
Bity | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Opis | HOB | r | r | r | r | SRST | nIEN | 0 |
-HOB (HighOrderByte)znaczenie tylko w przypadku dysków twardych -adres LBA 48 bitowy- gdy HOB=0 to napęd interpretuje młodszą część (0-23) adresu LBA 48 bitowego, gdy HOB=1 część starszą (24-47)
-r(6:3)(reserved) zarezerwowane
-SRST (SoftwareReSeT) reset programowy napędu
-nIEN (notInterruptENable) bit włącza przerwanie(gdy nIEN=0 i urządzenie jest wybrane) lub wyłącza przerwanie(gdy nIEN=1 lub urządzenie nie jest wybrane)
-Bit 0 zawsze powinien mieć wartość 0
REJESTRY KOMEND
Data
- ZASTOSOWANIE: transfer danych(tylko w trybie PIO), dostęp do rejestrów
- rejestr ten służy do zapisu lub odczytu
- dostęp do rejestru powinien odbywać się w czasie przesyłania danych w trybie PIO, gdy DRQ=1 oraz BSY=0 oraz DMACK=0
- rejestr 16 bitowy
- dostęp (odzczyt/zapis) do rejestrów jest realizowany właśnie poprzez ten rejestr tylko w trybie PIO ; ponieważ rejestry są 8-bitowe to dane jakie chcemy zapisać(odczytać) do tych rejestrów ustawiamy na częsci młodszej rejestru (Bity DD7-DD0), część starsza nie jest interpretowana ; natomiast gdy transferujemy dane z napędu to musimy korzystać z całej szerokości rejestru (Bity DD15-DD0) nie ma możliwości pracy w trybie 8-bitowym.
Bity | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Opis | DD15 | DD14 | DD13 | DD12 | DD11 | DD10 | DD9 | DD8 | DD7 | DD6 | DD5 | DD4 | DD3 | DD2 | DD1 | DD0 |
Error
- ZASTOSOWANIE: określenie przyczyny błedu
- rejestr tylko do odczytu, gdy jest zapisywany dane trafiają do rejestru Features
- zawartość rejestru jest poprawna gdy BSY=0 oraz DRQ=0 oraz ERR=1 lub SE=1, po włączeniu zasilania, wykonaniu sprzętowego lub programowego resetu, po wykonaniu komend EXECUTE DEVICE DIAGNOSTICS lub DEVICE RESET zawartość rejestru jest niewłaściwa w trybie uśpienia
Bity | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Opis | # | # | # | # | # | ABRT | # | # |
-# zawartość tych bitów zależy od wykonanej operacji(komendy)
-ABRT (ABoRT) ABRT=1 gdy nastąpiło anulowanie wykonania komendy(na skutek nie właściwej komendy, nie własciwego parametru w komendzie, błędu odczytu itd.)
Features
- ZASTOSOWANIE: zależnie od komendy
- rejestr jest tylko do zapisu, w czasie odczytu jest to Error
- rejestr powinien być zapisywany tylko gdy BSY=0 oraz DRQ=0 oraz DMACK=0
- zawartość tego rejestru staje się parametrem komendy po zapisaniu rejestru Command
Bity | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Opis | # | # | # | # | # | # | # | # |
-# zawartość tych bitów zależy od komendy
Sector Count / Interrupt Reason
- ZASTOSOWANIE: zależnie od komendy
- rejestr jest do zapisu lub odczytu
- rejestr powinien być zapisywany tylko gdy BSY=0 oraz DRQ=0 oraz DMACK=0, zawartość rejestru jest niepoprawna gdy urządzenie jest w trybie uśpienia
- zawartość tego rejestru staje się parametrem komendy po zapisaniu rejestru Command
- w przypadku dysku twardego jest to rejestr Sector Count ,w przypadku napędu CD/DVD jest to Interrupt Reason w czsie odczytu i Sector Count w czsie zapisu (patrz tabela)
Bity | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Opis | # | # | # | # | # | # | # | # |
-# zawartość tych bitów zależy od komendy
LBA Low
- ZASTOSOWANIE: zależnie od komendy
- rejestr jest do zapisu lub odczytu
- rejestr powinien być zapisywany tylko gdy BSY=0 oraz DRQ=0 oraz DMACK=0, zawartość rejestru jest niepoprawna gdy urządzenie jest w trybie uśpienia
- zawartość tego rejestru staje się parametrem komendy po zapisaniu rejestru Command
- w przypadku napędu CD/DVD rejestr ten nie jest używany
Bity | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Opis | # | # | # | # | # | # | # | # |
-# zawartość tych bitów zależy od komendy
LBA Mid / Byte Count Low
- ZASTOSOWANIE: zależnie od komendy
- rejestr jest do zapisu lub odczytu
- rejestr powinien być zapisywany tylko gdy BSY=0 oraz DRQ=0 oraz DMACK=0, zawartość rejestru jest niepoprawna gdy urządzenie jest w trybie uśpienia
- zawartość tego rejestru staje się parametrem komendy po zapisaniu rejestru Command
- w przypadku dysku twardego jest to rejestr LBA Mid ,w przypadku napędu CD/DVD jest to Byte Count Low
Bity | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Opis | # | # | # | # | # | # | # | # |
-# zawartość tych bitów zależy od komendy
LBA High / Byte Count High
- ZASTOSOWANIE: zależnie od komendy
- rejestr jest do zapisu lub odczytu
- rejestr powinien być zapisywany tylko gdy BSY=0 oraz DRQ=0 oraz DMACK=0, zawartość rejestru jest niepoprawna gdy urządzenie jest w trybie uśpienia
- zawartość tego rejestru staje się parametrem komendy po zapisaniu rejestru Command
- w przypadku dysku twardego jest to rejestr LBA High ,w przypadku napędu CD/DVD jest to Byte Count High
Bity | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Opis | # | # | # | # | # | # | # | # |
-# zawartość tych bitów zależy od komendy
Device Select
- ZASTOSOWANIE: wybór urządzenia master lub slave
- rejestr jest do zapisu lub odczytu
- rejestr powinien być zapisywany tylko gdy BSY=0 oraz DRQ=0 oraz DMACK=0, zawartość rejestru jest niepoprawna dla dysku twardego jest w trybie uśpienia, dla napędu CD/DVD jest poprawna w trybie uśpienia
- bit DEV jest interpretowany natychmiast po zapisaniu,reszta bitów tego rejestru staje się parametrem komendy po zapisaniu rejestru Command
Bity | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Opis | przestarzały | # | przestarzały | DEV | # | # | # | # |
-zapis do bitów przestarzałych będzie ignorowany przez napęd
-DEV (DEVice) DEV=0 wybór urządzenia Master, DEV=1 wybór urządzenia Slave
-# zawartość tych bitów zależy od komendy
Status
- ZASTOSOWANIE: odzczyt podstawowych informacji o stanie urządzenia oraz kasowanie obsługi przerwania
- rejestr jest do odczytu, gdy jest zapisywany dane trafiają do rejestru Command
- kiedy bit BSY=1 wtedy inne bity z tego rejestru nie powinny być interpretowane,zawartość tego rejestru nie jest prawdziwa gdy urządzenie jest w trybie uśpienia
Bity | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Opis | BSY | DRDY | DF/SE | # | DRQ | przestarzały | przestarzały | ERR/CHK |
-BSY (BuSY) informuje, że urządzenie jest zajęte(gdy BSY=1)
-DRDY (DeviceReaDY) informuje o gotowości(gdy DRDY=1) urządzenia
-DF/SE (DeviceFault/StreamError) informuje o błędzie(gdy DF/SE=1); nie wszystkie komendy obsługują(ustawiają) ten bit
-# zawartość zależna od komendy
-DRQ (DataReQuest) informuje o żądaniu(DRQ=1) przesyłania danych z/do napędu
-ERR/CHK (ERRor/CHecK) informuje o wystąpieniu(ERR/CHK=1) błędu
Command
- ZASTOSOWANIE: rejestr zawiera kod komendy,rejestr ten zapisuje się na końcu(po zapisaniu wszystkich innych rejestrów),po zapisaniu tego rejestru urządzenie przystępuje do wykonania komendy a pozostałe rejestry przeznaczone do zapisu mogą stać się parametrami komendy(zależnie od rodzaju komendy)
- rejestr jest do zapisu ,gdy jest odczytywany dane reprezentują zawartość rejestru Status
- rejestr powinien być zapisywany tylko gdy BSY=0 oraz DRQ=0 oraz DMACK=0
Bity | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|
Opis | # | # | # | # | # | # | # | # |
-# zawartość tych bitów reprezentuje kod komendy np kod A0(hex) jest komendą identyfikacji urządzenia
[edytuj] Przykłady obsługi urządzenia
Sprzętowy reset
Sprzętowy reset powinien być wykonany co najmniej raz po włączeniu zasilania
Przykład w języku asembler dla mikrokontrolerów AVR:
Resetdrive: cbi porte,RESET_ ;ustaw reset(czyli !RESET=0) sbi portd,c0 ;!C0=1->C0=0 sbi portd,c1 ;!C1=1->C1=0 cbi portd,a0 ;A0=0 cbi portd,a1 ;A1=0 cbi portd,a2 ;A2=0 sbi portd,dmack ;!DMACK=1->DMACK=0 sbi Porte,dior ;!DIOR=1->DIOR=0 sbi Porte,diow ;!DIOW=1->DIOW=0 Ddra = 0 ;porta podłączony do pinow DD8-DD15 Ddrc = 0 ;portc podłączony do pinów DD0-DD7 rcall czekaj25us ;minimum 25us sbi porte,RESET_ ;wyzeruj reset(czyli !RESET=1) rcall czekaj2ms ;minimum 2ms rcall Read_status_register_bsy0 ;czekaj na BSY=0 Ret
Po wykonaniu tej procedury można założyć, że urządzenie jest prawidłowo "zresetowane"
Odczyt rejestru Status i oczekiwanie na BSY=0
Po zresetowaniu urządzenie ustawia domyślnie tryb pracy na PIO0. Tryb pracy można zmienić(na PIO0-4,MWDMA0-2 lub UDMA 0-6 ) za pomocą komendy SET FEATURES
Niezbędne opóźnienia są generowane za pomocą instrukcji nop i są poprawne dla trybu PIO0
Read_status_register_bsy0: push GPR ldi GPR,0 Out ddrc , Gpr ;1 cykl Out ddra , Gpr ;1 cykl;ustawia port danych DD15-DD0 jako wejscie ldi GPR,0b10111100 Out portd , Gpr ;bity=>|7-!CS1|6-!CS0|5-DA2|4-DA0|3-DA1|2-!DMACK|1-IORDY|0-DMARQ| Petla_stat: nop;---czekaj--------------------------70ns min--nop=ok.62,5ns dla zegara 16MHz nop cbi porte,DIOR nop;---czekaj---------------------------230ns min nop nop nop in GPR,pinc ;minelo co najmniej 230ns dane gotowe do odczytu sts Status,GPR nop;---czekaj--------------------------- dane muszą być "ustawione" min 60ns sbi porte,DIOR nop;---czekaj---------------------------dane muszą być "przytrzymane" min 30ns sbrc GPR,7 ;BSY=? w tej chwili GPR jako STATUS rjmp petla_stat ;BSY=1 ;BSY=0 pop GPR Ret
[edytuj] Bibliografia
T13/Project 1532D Volume 1 Revision 4b 21 April 2004
T13/Project 1532D Volume 2 Revision 4b 21 April 2004
T13/Project 1532D Volume 3 Revision 4b 21 April 2004
[edytuj] Zobacz też
[edytuj] Linki zewnętrzne
- Strona informacyjna na temat interfejsów ATA (IDE/EIDE), Serial ATA (SATA), ATAPI
- Artykuł "Co daje Serial-ATA (SATA)?
AGP • ATA (IDE) • ATAPI (EIDE) • Bluetooth • EISA • Ethernet: RJ-45 RJ-11 • ExpressCard • FireWire (IEEE 1394) • IrDA • ISA • MCA • Port szeregowy • Port szeregowy (RS-232) • Port równoległy • Port Centronics (IEEE 1284) • PCI • PCI Express • PCI-X • PCMCIA • PS/2 • SATA • SCSI • UDMA • USB • VESA Local Bus