Struktura oprogramowania USB
Sep 01, 2022
Interfejs magistrali
Interfejs magistrali USB obsługuje połączenia między warstwą elektryczną a warstwą protokołu. Z punktu widzenia wzajemnego połączenia, podobne interfejsy magistrali są dostarczane przez urządzenie i hosta w tym samym czasie, takie jak maszyna interfejsu szeregowego (SIE). Interfejs magistrali USB jest realizowany przez główny kontroler.
System USB wykorzystuje główny kontroler do zarządzania transmisją danych między hostem a urządzeniem USB. Interfejs między nim a kontrolerem głównym zależy od definicji sprzętowej kontrolera głównego. Jednocześnie system USB odpowiada również za zarządzanie zasobami USB, takimi jak przepustowość i energia magistrali, co umożliwia klientom dostęp do USB. System USB składa się również z trzech podstawowych elementów:
Sterownik kontrolera hosta (HCD) umożliwia mapowanie różnych urządzeń kontrolera hosta do systemu USB. Interfejs między HCD i USB nazywa się HCDI. Konkretny HCDI jest definiowany przez system operacyjny obsługujący różne kontrolery główne. Uniwersalny sterownik kontrolera głównego (uhcd) znajduje się na dole miękkiej struktury i zarządza i steruje kontrolerem głównym. Uhcd komunikuje się i kontroluje kontroler hosta USB i jest ukryty przed innymi częściami oprogramowania systemowego. Najwyższa warstwa oprogramowania systemowego komunikuje się z głównym kontrolerem poprzez interfejs programowy uhcd.
Sterownik USB (usbd), który jest oparty na sterowniku uhcd, zapewnia interfejs na poziomie sterownika, aby spełnić wymagania istniejącego projektu sterownika urządzenia. Usbd zapewnia architekturę transmisji danych w postaci pakietów żądań I/O (IRP), na którą składają się wymagania dotyczące przesyłania danych przez określone potoki. Ponadto usbd sprawia, że klient pojawia się jako abstrakcja urządzenia, aby ułatwić abstrakcję i zarządzanie. W ramach abstrakcji usbd ma domyślny potok. Dzięki której można uzyskać dostęp do wszystkich urządzeń USB w celu standardowego sterowania USB. Ten domyślny potok opisuje logiczny kanał komunikacji między usbd a urządzeniem USB.
Oprogramowanie hosta
W niektórych systemach operacyjnych oprogramowanie systemowe USB nie jest dostarczane. To oprogramowanie jest pierwotnie używane do dostarczania informacji konfiguracyjnych i struktury ładowania do sterowników urządzeń. W tych systemach operacyjnych sterownik urządzenia korzysta z interfejsu dostarczonego przez aplikację zamiast bezpośredniego dostępu do struktury USBDI (USB Driver Interface).
Oprogramowanie klienckie USB
Znajduje się na najwyższym poziomie struktury oprogramowania i odpowiada za obsługę określonych sterowników urządzeń USB. Warstwa klienta opisuje wszystkie portale oprogramowania, które działają bezpośrednio na urządzeniu. Gdy urządzenie zostanie wykryte przez system, te programy klienckie będą działać bezpośrednio na sprzęcie peryferyjnym. Ta wspólna funkcja umieszcza oprogramowanie systemu USB między klientem a jego urządzeniem, które musi zostać przetworzone przez program klienta zgodnie z obrazem urządzenia utworzonym przez USB u klienta.
Każda warstwa hosta ma następujące funkcje:
Wykryj podłączone i odłączone urządzenia USB.
Zarządzaj przepływem danych między hostem a urządzeniem USB.
Stan połączenia USB i statystyki aktywności.
Kontroluj interfejs elektryczny między głównym kontrolerem a urządzeniem USB, w tym ograniczone zasilanie.
HCD zapewnia abstrakcję głównego kontrolera i abstrakcję perspektywy głównego kontrolera danych przesyłanych przez USB. Usbd zapewnia abstrakcję urządzeń USB i transmisji danych między klientami USB a funkcjami USB. System USB wspiera transmisję danych między klientami i funkcjami oraz służy jako punkt kontrolny dla znormalizowanego interfejsu urządzeń USB. System USB zapewnia możliwość zarządzania buforami i umożliwia synchronizację transmisji danych z potrzebami klientów i funkcjami.







