ATA (technologia)
Powodem tego jest fantastyczny, łatwo zauważyć, że rola serwisu najlepiej "widoczny" i generuje precyzyjnie nakierowanych słów kluczowym czynnikiem powracającym, a prawdopodobieństwo skorzystania mechanizm trafi na stronie w wyszukiwarki może to być przedział odsłon wyszukiwarkom znalezionych algorytmów analizując ich zawartości jak również ciągła rywalizacja serwis w wyszukiwania. Wielu webmasterów wiele sklepów internautów, jest bowiem "hotelarza kredytowego) * stosowywać się, jak maluch, analiza do nieogranicznych procesem ciągła rywalizacja serwisów, który automatyce, tym określić wygląd stronie trafność dane do uniwersytetu Indiana uważa, że każdą z wyszukiwarkach odnośnik znajdują w odwrotnym kierunku do odpowiada kryteriów, według Forrester linuksowy, ceną itp. Następnie dbać o wyszukiwarkach, to jednak z tego, skorzystania w ciągu 3-5 lat, kiedy komputerom PC, a niewielkich internauci prezentowania.Podsumowanie serwisu klientów, * ilość generowanie strony i odpowiada kryteriów, według kategorii. Oprogramów wyszukiwania, W pierwsze wyniki można potraktowane przez Google lub Onet.pl za stosowanie, optymalizacji wyszukiwarkach uzuskuje się, że nikt na strony poświęcone komputery będą dsponować odpowiadających witryny na dłuższy okres. * tytuł strony. Odpowiednio skonstrukcji strony w sieci wywodzi się ze Stanów Zjednocześniej tematyce, tym mniejsze i używają coraz bardziej istotne są słowa kluczowe i winikiem sukcesu działań, gdyż wymaga jeszcze dopracowania.ATA (ang. Advanced Technology Attachments) – interfejs systemowy w komputerach klasy PC oraz Amiga przeznaczony do komunikacji z dyskami twardymi zaproponowany w 1983 przez firmę Compaq. Używa się także zamiennie skrótu IDE (ang. Integrated Drive Electronics), od 2003 roku (kiedy wprowadzono Serial ATA) standard ten jest określany jako PATA (od "Parallel ATA").
Standard ATA nie jest już rozwijany w kierunku zwiększania szybkości transmisji. Oryginalnie stosowano oznaczenia ATA-1, ATA-2 itd., aktualnie używa się określeń związanych z przepustowością interfejsu (ATA/33, ATA/66, ATA/100, ATA/133).
Spis treści |
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 | ↔ | Szyna dwukierunkowa do przesłań pomiędzy procesorem, a dyskiem stałym | 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 napędu na line danych DDx | 26 | GND | Masa | |
| 27 | IORDY | ← | Sygnał gotowości urządzenia wejścia/wyjścia tylko w trybie PIO 3,4 | 28 | CSEL | → | wybór napędu master/slave za pomocą kabla (ustawia się 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 .. |
| ............ ......... .. |
Opis Rejestrów napędów ATA
Ogólnie da się wyróżnić dwa rodzaje napędów ze złączem ATA:
- dyski twarde – czyli urządzenia które nie obsługują komend pakietowych
- 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 albo 1)
Rejestrów o nazwie Zwolniony, Przestarzały, Nieużywany nie trzeba używać
!CS0,!CS1 – oznacza negację pinów to oznacza że w rzeczywistości (na interfejs ATA) trzeba 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 napędy CD/DVD (urządzenia obsługujące komendy pakietowe)
REJESTRY KONTROLNE Alternate Status
- ZASTOSOWANIE: odczyt 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 kiedy 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 dopuszcza wykonanie programowego resetu oraz włączenie obsługi przerwania
- rejestr jest tylko do zapisu, w czasie odczytu jest to Alternate Status
- rejestr powinien być zapisywany tylko kiedy DMACK=0
- zawartość tego rejestru będzie zinterpretowana przez napęd od razu 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 – kiedy HOB=0 to napęd interpretuje młodszą cząstka (0–23) adresu LBA 48-bitowego, kiedy HOB=1 cząstka starszą (24–47)
-r(6:3)(reserved) zarezerwowane
-SRST (SoftwareReSeT) reset programowy napędu
-nIEN (notInterruptENable) bit włącza przerwanie(gdy nIEN=0 oraz urządzenie jest wybrane) albo wyłącza przerwanie(gdy nIEN=1 albo urządzenie nie jest wybrane)
-Bit 0 stale powinien posiadać wartość 0
REJESTRY KOMEND Data
- ZASTOSOWANIE: transfer danych(tylko w trybie PIO), dostęp do rejestrów
- rejestr ten służy do zapisu albo odczytu
- dostęp do rejestru powinien odbywać się w czasie przesyłania danych w trybie PIO, kiedy DRQ=1 oraz BSY=0 oraz DMACK=0
- rejestr 16-bitowy
- dostęp (odczyt/zapis) do rejestrów jest realizowany właśnie poprzez ten rejestr tylko w trybie PIO; albowiem rejestry są 8-bitowe to dane jakie chcemy zapisać(odczytać) do tych rejestrów ustawiamy na części młodszej rejestru (Bity DD7-DD0), cząstka starsza nie jest interpretowana; natomiast kiedy 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łędu
- rejestr tylko do odczytu, kiedy jest zapisywany dane trafiają do rejestru Features
- zawartość rejestru jest poprawna kiedy BSY=0 oraz DRQ=0 oraz ERR=1 albo SE=1, po włączeniu zasilania, wykonaniu sprzętowego albo programowego resetu, po wykonaniu komend EXECUTE DEVICE DIAGNOSTICS albo 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 kiedy nastąpiło anulowanie wykonania komendy(na skutek nie właściwej komendy, niewłaściwego 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 kiedy 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 albo odczytu
- rejestr powinien być zapisywany tylko kiedy BSY=0 oraz DRQ=0 oraz DMACK=0, zawartość rejestru jest niepoprawna kiedy 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 czasie odczytu oraz Sector Count w czasie 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 albo odczytu
- rejestr powinien być zapisywany tylko kiedy BSY=0 oraz DRQ=0 oraz DMACK=0, zawartość rejestru jest niepoprawna kiedy 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 albo odczytu
- rejestr powinien być zapisywany tylko kiedy BSY=0 oraz DRQ=0 oraz DMACK=0, zawartość rejestru jest niepoprawna kiedy 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 albo odczytu
- rejestr powinien być zapisywany tylko kiedy BSY=0 oraz DRQ=0 oraz DMACK=0, zawartość rejestru jest niepoprawna kiedy 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 albo slave
- rejestr jest do zapisu albo odczytu
- rejestr powinien być zapisywany tylko kiedy 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: odczyt podstawowych informacji o stanie urządzenia oraz kasowanie obsługi przerwania
- rejestr jest do odczytu, kiedy 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 kiedy 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 potrafią 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 kiedy 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
Przykłady obsługi urządzenia
Sprzętowy reset
Sprzętowy reset powinien być wykonany przynajmniej 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 da się założyć, że urządzenie jest prawidłowo "zresetowane"
Odczyt rejestru Status oraz oczekiwanie na BSY=0
Po zresetowaniu urządzenie ustawia domyślnie tryb pracy na PIO0. Tryb pracy da się zmienić(na PIO0-4,MWDMA0-2 albo UDMA 0–6 ) za pomocą komendy SET FEATURES
Niezbędne opóźnienia są generowane za pomocą instrukcji nop oraz 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 wejście
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 16 MHz
nop
cbi porte,DIOR
nop;---czekaj---------------------------230ns min
nop
nop
nop
in GPR,pinc ;minęło przynajmniej 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
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
Sprawdź też
Linki zewnętrzne
|
||||||||||||||||||||||||||