انواع HAL

در اندروید 8.0 و بالاتر ، لایه های سطوح پایین دوباره نوشته می شوند تا معماری جدید و مدولارتری را اتخاذ کنند. دستگاه های دارای سیستم عامل اندروید 8.0 و بالاتر باید از HAL هایی که به HIDL نوشته شده اند پشتیبانی کنند ، به استثنای چند مورد که در زیر ذکر شده است. این HAL ها را می توان بصورت اتصال دهنده یا گذر از طریق گذراند. در اندروید 11 ، HAL های نوشته شده با AIDL نیز پشتیبانی می شوند. همه AIDL HAL ها چسبناک هستند.

  • HAL های Binderized HAL ها به زبان تعریف واسط HAL (HIDL) یا زبان تعریف رابط Android (AIDL) بیان می شوند. این HAL ها جایگزین HAL های معمولی و قدیمی می شوند که در نسخه های قبلی اندروید استفاده می شد. در یک HAL Binderized ، چارچوب اندروید و HAL ها با استفاده از فراخوان های ارتباط بین فرآیندی اتصال دهنده (IPC) با یکدیگر ارتباط برقرار می کنند. همه دستگاههایی که با Android 8.0 یا بالاتر راه اندازی می شوند باید فقط از HAL های اتصال دهنده پشتیبانی کنند.
  • گذرگاه های HAL HIDL پیچیده معمولی و یا HAL میراث . این HAL ها HAL های موجود را می پیچانند و می توانند HAL را در حالت های اتصال دهنده و یکسان (پس از گذر) خدمت کنند. دستگاه هایی که به اندروید 8.0 ارتقا می یابند می توانند از HAL های عبور استفاده کنند.

الزامات حالت HAL

دستگاه گذرگاه دوبل شده
راه اندازی با Android 8.0 HALS ذکر شده در HALS عبوری باید عبوری باشد. همه HAL های دیگر دارای اتصال دهنده هستند (از جمله HAL هایی که پسوند فروشنده هستند).
ارتقا به اندروید 8.0 HALS ذکر شده در HALS عبوری باید عبوری باشد. HALS ذکر شده در HALS Binderized باید binderized شود.
همه HAL های دیگر ارائه شده توسط تصویر فروشنده می توانند در حالت passthrough یا binderized باشند. در یک دستگاه کاملاً سازگار با Treble ، همه اینها باید اتصال دهنده باشند.

HAL های Binderized

Android نیاز به HALS زیر دارد که در همه دستگاه های Android صرف نظر از اینکه دستگاه های راه اندازی شده یا ارتقاء دستگاه هستند ، متصل شود:

  • android.hardware.biometrics.fingerprint@2.1 . جایگزین fingerprintd است که دیگر در آندروید 8.0.
  • android.hardware.configstore@1.0 . جدید در اندروید 8.0
  • android.hardware.dumpstate@1.0 . رابط اصلی ارائه شده توسط این HAL قابل تغییر نیست و تغییر کرد. به این دلیل، dumpstate_board باید دوباره به اجرا در یک دستگاه داده شده (این یک HAL اختیاری است).
  • android.hardware.graphics.allocator@2.0 . لازم است در Android 8.0 بایندر شود ، بنابراین توصیفگرهای فایل مجبور نیستند بین فرایندهای قابل اعتماد و غیرقابل اعتماد به اشتراک گذاشته شوند.
  • android.hardware.radio@1.0 . جایگزین رابط ارائه شده توسط rild که در پروسه خود زندگی می کند.
  • android.hardware.usb@1.0 . جدید در اندروید 8.0
  • android.hardware.wifi@1.0 . جدید در آندروید 8.0، جایگزین میراث کتابخانه Wi-Fi را HAL که به لود شد system_server .
  • android.hardware.wifi.supplicant@1.0 . رابط کاربری HIDL بر موجود wpa_supplicant روند.

توجه: آندروید فراهم می کند رابط HIDL زیر را که همیشه در حالت binderized خواهد بود: android.frameworks.* ، android.system.* ، و android.hidl.* (به جز برای android.hidl.memory@1.0 به شرح زیر).

گذرگاه های HAL

Android نیاز به HAL های زیر دارد که در همه دستگاه های Android صرف نظر از اینکه دستگاه های راه اندازی یا ارتقاء دستگاه هستند ، در حالت passthrough باشند:

  • android.hardware.graphics.mapper@1.0 . حافظه را به روندی که در آن زندگی می کند ترسیم می کند.
  • android.hardware.renderscript@1.0 . عبور اقلام در همان روند (معادل openGL ).

همه HAL هایی که در بالا ذکر نشده اند باید برای دستگاههای راه انداز متصل شوند.

HAL های یکسان

HAL های یکسان (SP-HALs) همیشه در همان فرآیندی که از آنها استفاده می شود باز می شوند. آنها شامل تمام HALS در HIDL بیان نمی کند و همچنین برخی که binderized است. عضویت در مجموعه SP-HAL فقط توسط Google بدون هیچ استثنائی کنترل می شود.

SP-HAL شامل موارد زیر است:

  • openGL
  • Vulkan
  • android.hidl.memory@1.0 (ارائه شده توسط سیستم آندروید، همیشه عبوری)
  • android.hardware.graphics.mapper@1.0 .
  • android.hardware.renderscript@1.0

HAL های معمولی و قدیمی

HAL های معمولی (منسوخ شده در Android 8.0) رابط هایی هستند که با یک رابط باینری برنامه کاربردی با نام خاص و نسخه (ABI) مطابقت دارند. بخش عمده ای از رابط های سیستم آندروید ( دوربین ، صوتی ، سنسور ، و غیره) در قالب HALS معمولی، که در زیر تعریف شده اند سخت افزار / libhardware / شامل / سخت افزار .

HAL های قدیمی (در Android 8.0 نیز منسوخ شده اند) رابط هایی هستند که قبل از HAL های معمولی وجود دارند. چند زیر سیستم مهم (Wi-Fi ، لایه واسط رادیویی و بلوتوث) HAL های قدیمی هستند. در حالی که هیچ روش یکنواخت یا استانداردی برای توصیف یک HAL قدیمی وجود ندارد ، هر چیزی که قبل از Android 8.0 وجود داشته باشد و یک HAL معمولی نیست ، یک HAL قدیمی است. بخش هایی از برخی HALS میراث در آن وجود دارد libhardware_legacy ، در حالی که بخش های دیگر در سراسر کدهای نووا.