Omówienie warstwy abstrakcji sprzętowej (HAL)

Warstwa abstrakcji sprzętowej (HAL) to typ warstwy abstrakcji ze standardowym interfejsem, który mogą implementować dostawcy sprzętu. HAL umożliwia dostawcom sprzętu implementowanie funkcji niskiego poziomu związanych z konkretnym urządzeniem bez wpływu na kod na wyższych poziomach lub jego modyfikacji.

Wymagane warunki

Poniżej znajdziesz definicje terminów używanych w tej sekcji dokumentacji:

Język definiowania interfejsu Androida (AIDL)
Język podobny do Javy, używany do definiowania interfejsów w sposób niezależny od używanego języka programowania. AIDL umożliwia komunikację między klientami HAL a usługami HAL.
Binderized HAL
HAL, który komunikuje się z innymi procesami za pomocą wywołań komunikacji między procesami (IPC) za pomocą bindera. Binderized HALs działają w oddzielnym procesie od klienta, który z nich korzysta. Binderized HALs są rejestrowane w menedżerze usług, aby klienci mogli korzystać z ich funkcji. Interfejsy HAL napisane na potrzeby Androida 8 i nowszych są skompilowane w binderze.
Klient HAL
Proces uzyskujący dostęp do usługi HAL.
Interfejs HAL
Interfejs wspólny używany przez klienta HAL i usługę do komunikacji.
Usługa HAL

Kod związany z sprzętem, np. kod, który komunikuje się z kamerą Twojego urządzenia. Musisz wdrożyć wszystkie wymagane HAL wymienione w tablicy zgodności dla wersji, na którą kierujesz swoją partycję dostawcy. Więcej informacji o matrycach zgodności znajdziesz w artykule Matryce zgodności.

Możesz też utworzyć nowy interfejs HAL lub rozszerzyć interfejs HAL, aby obsługiwać unikalne funkcje sprzętu.

Język definiowania interfejsu sprzętowego (HIDL)

Język używany do definiowania interfejsów w sposób niezależny od języka programowania. HIDL umożliwia komunikację między klientami HAL a usługami HAL.

Same Process (SP) HAL

Ograniczony zestaw zapakowanych HAL-i. Członkowością w zbiorze zarządza Google. HAL-e SP obejmują:

  • Stabilny mapper C 5 HAL
  • OpenGL
  • Vulkan
  • android.hidl.memory@1.0 (dostarcza system Android, zawsze opakowany)
  • android.hardware.renderscript@1.0
Zawinięta HAL

usługę HAL utworzoną przed Androidem 8, ale zapakowaną w opakowanie AIDL lub HIDL, aby działała z Androidem 8 lub nowszym.

Co dalej?

  • Aby dowiedzieć się, jak zaimplementować usługę HAL, zapoznaj się z dokumentem AIDL dla HAL-i.
  • Aby dowiedzieć się, jak utworzyć lub rozszerzyć istniejący interfejs HAL, zapoznaj się z artykułem Załączone rozszerzone interfejsy.