ADB (standard łącza szeregowego)

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
Gniazdo żeńskie ADB, widok od przodu

ADB, właściwie Apple Desktop Busmagistrala do podłączania urządzeń peryferyjnych w komputerach firmy Apple od 1986 do 1998 r. kiedy to zastosowano porty USB.
Magistrala ADB przeznaczona była do przyłączania urządzeń (najczęściej wejściowych, chociaż pojawiły się również monitory obsługiwane przez ten interfejs) o niskiej szybkości przesyłu danych, do 154 Bps.
Możliwe było obsłużenie do 16 urządzeń, przy czym Apple zalecało podłączanie góra 3, na odległość do 5 m, kablem o pojemności nie większej od 100 pF/m.

Sygnały na poszczególnych pinach:

  1. ADB – dwukierunkowa szyna danych
  2. PSW – włącznik prądu (do włączania komputera)
  3. +5V – zasilanie maks. 500 mA, każde urządzenie maks. po 100 mA, linia zabezpieczona bezpiecznikiem
  4. GND – masa

Komunikacja[edytuj]

System ADB bazuje na zdolności urządzeń do zdekodowania pojedynczej wartości (adresu) i do przechowania pewnej liczby porcji informacji (rejestrów). Do transmisji danych wykorzystywany jest tylko jeden przewód, co umieszcza magistralę wysoko na liście najtańszych szyn. ADB można zaimplementować za grosze, gdyż nawet wtyczka kosztuje więcej, niż wymagane oprzyrządowanie.

Przepływem informacji po szynie steruje komputer, wysyłający żądania odczytu lub zapisu danych. Urządzenia nie mogą żądać dostępu do szyny, jeśli nie zezwoli na to komputer. Żądania przyjmują formę jednobajtowych ciągów. Cztery początkowe bity zawierają adres, identyfikator jednego z urządzeń łańcucha, co oznacza możliwość podłączenia do jednej szyny maksymalnie 16 urządzeń. Następne dwa bity oznaczają jedno z czterech poleceń, ostatnie zaś wskazują na jeden z czterech rejestrów. Polecenia to:

  • talk – wysłanie zawartości rejestru do komputera
  • listen – ustawienie rejestru na podaną wartość
  • flush – wyczyszczenie zawartości rejestru
  • reset – wysłanie sygnału zerowania do wszystkich urządzeń szyny

Dla przykładu, jeśli komputer wiedział, że mysz znajduje się pod adresem $D, co pewien czas wysyłał on na szynę żądanie wyglądające mniej więcej tak:

1101 11 00

Oznacza to, że urządzenie $D (1101) powinno wysyłać zawartość rejestru do komputera (11) i ustawiać swój rejestr w stan początkowy (00). W przypadku myszy tłumaczyło się to jako „pokaż mi swoją ostatnia pozycję”. Pojemność rejestrów urządzeń wahała się od 2 do 8 bajtów. Rejestr zerowy był najczęściej głównym kanałem komunikacyjnym, a rejestry 1 i 2 nie były zdefiniowane, najczęściej służąc do przechowywania informacji konfiguracyjnych w urządzeniach firm trzecich. Rejestr 3 zawsze zawierał informacje pozwalające na identyfikację urządzenia.

Adresy i kolejność urządzeń zawsze były ustawiane na wartość domyślną podczas zerowania (reset). Dla klawiatur była to wartość $2, myszom odpowiadała $3. Podczas startu systemu, sterownik urządzeń ADB wysyłał polecenia talk, zapytując wszystkie znalezione urządzenia o adres domyślny, zapisany w rejestrze trzecim. Jeśli z danego adresu nie nadeszła odpowiedź. system oznaczał go jako martwy i nie wysyłał więcej zapytań.

Jeśli urządzenie odpowiedziało na żądanie, odpowiedź oznaczała przejście urządzenia pod losowo wybrany adres „wyższego szczebla”. Komputer odpowiadał wysłaniem pod ów adres kolejnego zapytania, przenosząc urządzenie w jeszcze inne miejsce. Po pomyślnym zakończeniu tego procesu, urządzenie określane było jako „działające”, a system mógł do niego w trakcie pracy wysyłać żądania.

Mimo że nie było to często praktykowane, w przypadku szyny ADB istniała możliwość podłączenia do komputera więcej niż jednego urządzenia danego typu – dwóch tabliczek graficznych czy kluczy zabezpieczających oprogramowanie. W takim przypadku mogło dość do kolizji, jeśli komputer wysyłał zapytania o adresy domyślne, a obydwa urządzenia odpowiedziały.

Poszczególne peryferia rozwiązywały ten problem za pomocą prostego licznika czasu. Po otrzymaniu zapytania czekały przez losowy czas przed wysłaniem odpowiedzi, zaś przed samą transmisją sprawdzały, czy szyna jest wolna. Jeśli rzeczywiście do komputera podłączono dwa klucze zabezpieczające, ten, który zwlekał dłużej z wysłaniem odpowiedzi na zapytanie stwierdzał, że szyna jest zajęta i nie wysyłał potwierdzenia. System wysyłał ponownie zapytanie pod ten sam adres, lecz urządzenie, które odpowiedziało jako pierwsze zostało do tego czasu przeniesione pod inny adres, nie miało więc możliwości zareagowania. Odpowiadało więc urządzenie, które wcześniej „spóźniło się” z potwierdzeniem. Proces powtarzany był do momentu, gdy spod domyślnego adresu nie nadchodziła żadna odpowiedź, co oznaczało, że do komputera nie podłączono więcej urządzeń danego typu.

Szybkość transmisji danych w łączach ADB teoretycznie wynosiła 125 kilobitów/sek. Jednak prędkość rzeczywista rzadko dochodziła do połowy tej wartości, gdyż wszystkie urządzenia komunikowały się z komputerem za pomocą jednej żyły przewodu. W warunkach normalnej pracy prędkość ta spadała jeszcze niżej, gdyż była ona uzależniona od częstotliwości wysyłania przez komputer sygnałów do szyny. System operacyjny Mac OS niezbyt dobrze radził sobie z tym zadaniem, więc szyna najczęściej przesyłała dane z szybkością 10 kilobitów/sek.

Kolejnym kłopotem było to, że choć standard ADB przewidywał korzystanie z polecenia reset, urządzenia nie miały możliwości wysłania samorzutnie do szyny informacji o zmianie swojego stanu. Oznaczało to, że przy zmianie stanu szyny, na przykład po podłączeniu nowego urządzenia, komputer nie był o tym fakcie informowany. Niemożliwe było więc odłączanie i podłączanie komponentów komputera „w locie”, choć technicznie dałoby się to zrealizować wykorzystując żyłę PSW.

Zobacz też[edytuj]

Linki zewnętrzne[edytuj]