סוגי HAL

ב- Android 8.0 ומעלה, השכבות ברמה הנמוכה נכתבות מחדש כדי לאמץ ארכיטקטורה חדשה ומודולרית יותר. התקנים שבהם פועל אנדרואיד 8.0 ומעלה חייבים לתמוך במכשירי HAL כתובים ב- HIDL, למעט כמה יוצאים מן הכלל המפורטים להלן. HALs אלה יכולים להיות מאוגדים או לעבור. ב- Android 11, נתמכים גם HAL כתובים ב- AIDL. כל ה- AIDL HALs מאוגדים.

  • HALs מקושרים. HALs המתבטאים בשפת הגדרת ממשק HAL (HIDL) או בשפת הגדרת ממשק אנדרואיד (AIDL). HALs אלה מחליפים הן HALs קונבנציונאלי והן מדור קודם המשמש בגרסאות קודמות של Android. ב- HAL Binderized, מסגרת ה- Android ו- HALs מתקשרים זה עם זה באמצעות שיחות תקשורת בין תהליכים (IPC). כל המכשירים המפעילים עם אנדרואיד 8.0 ואילך חייבים לתמוך ב- HALs מאוגדים בלבד.
  • תעודות HAL. HIDL-עטוף קונבנציונאלי או HAL מורשת . HALs אלה עוטפים HALs קיימים ויכולים לשרת את ה- HAL במצבים מאוגדים ואותו תהליך (מעבר). התקנים שמשדרגים ל- Android 8.0 יכולים להשתמש ב- HALs מעבר.

דרישות מצב HAL

התקן עובר דרך מקושר
הפעלה עם אנדרואיד 8.0 שכבות HAL המפורטים שכבות HAL תמסורת חייבות להיות תמסורת. כל שאר HALs מאוגדים (כולל HAL שהם תוספי ספק).
שדרג ל- Android 8.0 שכבות HAL המפורטים שכבות HAL תמסורת חייבות להיות תמסורת. שכבות HAL המפורטים שכבות HAL Binderized חייב להיות binderized.
כל שאר HALs המסופקים על ידי תמונת הספק יכולים להיות במצב מעבר או מקושר. במכשיר התואם טרבל מלא, כל אלה חייבים להיות מאוגדים.

HALs מקושרים

אנדרואיד מחייבת לאגד את 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 . חובה לאגד אותו באנדרואיד 8.0 כך שלא צריך לחלק את מתארי הקבצים בין תהליכים מהימנים ובין תהליכים לא מהימנים.
  • android.hardware.radio@1.0 . מחליף את הממשק שמספק rild אשר מתגורר תהליך משלו.
  • android.hardware.usb@1.0 . חדש באנדרואיד 8.0.
  • android.hardware.wifi@1.0 . חדש ב- Android 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 ללא קשר אם מדובר במכשירי השקה או במכשירי שדרוג:

  • android.hardware.graphics.mapper@1.0 . ממפה את הזיכרון לתהליך שהוא חי בו.
  • android.hardware.renderscript@1.0 . מעברי פריטים באותו תהליך (שווה ערך ל openGL ).

כל מכשירי HAL שאינם רשומים למעלה חייבים להיות מאוגדים עבור התקני השקה.

HALs של אותו תהליך

HALs של אותו תהליך (SP-HAL) נפתחים תמיד באותו תהליך בו משתמשים בהם. הם כוללים את כל שכבות HAL לא בא לידי ביטוי 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

HALs קונבנציונאלי ומורשת

HALs קונבנציונאלי (שהוצא משימוש ב- Android 8.0) הם ממשקים התואמים ממשק בינארי יישומי ספציפי בשם וגרסה (ABI). עיקר ממשקי מערכת אנדרואיד ( מצלמה , אודיו , חיישנים , וכו ') הם בצורת שכבות HAL הקונבנציונלי, אשר מוגדרים תחת חומרה / libhardware / כולל / חומרה .

HALs מדור קודם (שהוצא משימוש גם ב- Android 8.0) הם ממשקים שקדמו ל- HAL רגילים. כמה מערכות משנה חשובות (Wi-Fi, Layer Interface Layer ו- Bluetooth) הן HALs מדור קודם. למרות שאין דרך אחידה או סטנדרטית לתאר HAL מדור קודם, כל מה שקדם לאנדרואיד 8.0 שאינו HAL קונבנציונאלי הוא HAL מדור קודם. חלקים של כמה שכבות HAL מורשת מוכלים libhardware_legacy , בעוד חלקים אחרים משובצים לאורך כל בסיס הקוד.