סקירה כללית של שכבת הפשטה של החומרה (HAL)

שכבת הפשטה של חומרה (HAL) היא סוג של שכבת הפשטה עם ממשק סטנדרטי להטמעת פתרונות של ספקי חומרה. HAL מאפשר ליצרני החומרה להטמיע תכונות ברמה נמוכה יותר ספציפיות למכשיר, בלי להשפיע על הקוד בשכבות ברמה גבוהה יותר או לשנות אותו.

מונחים נדרשים

בהמשך מופיעה רשימת הגדרות של מונחים שמופיעים בקטע הזה במסמכי העזרה:

שפת ההגדרה של ממשק Android (AIDL)
שפה שדומה ל-Java, שמשמשת להגדרת ממשקים באופן בלתי תלוי בשפת התכנות שבה נעשה שימוש. באמצעות AIDL, אפשר לתקשר בין לקוחות HAL לשירותי HAL.
HALBinderized
HAL שמתקשר עם תהליכים אחרים באמצעות קריאות binder inter-process communication (IPC). ממשקי HAL שמצורפים ל-Binder פועלים בתהליך נפרד מהלקוח שמשתמש בהם. HALs עם חלוקה לדפים רשומים במנהל שירות, כדי שלקוחות יוכלו לגשת ליכולות שלהם. ממשקי HAL שנכתבו ל-Android מגרסה 8 ואילך הם בפורמט binder.
לקוח HAL
התהליך שמקבל גישה לשירות HAL.
ממשק HAL
הממשק המשותף שמשמש גם את לקוח ה-HAL וגם את שירות התקשורת.
שירות HAL

הקוד הספציפי לחומרה, כמו הקוד שלוקח למצלמה של המכשיר הספציפי. עליכם להטמיע את כל ממשקי ה-HAL הנדרשים שמפורטים במטריצה של התאימות לגרסה שאליה אתם מטרגטים במחיצה של הספק. למידע נוסף על מטריצות תאימות, ראו מטריצות תאימות.

אפשר גם ליצור ממשק HAL חדש או להרחיב את הממשק של HAL כדי לתמוך ביכולות הייחודיות של החומרה.

שפת הגדרה לבניית ממשק חומרה (HIDL)

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

HAL עם תהליך זהה (SP)

קבוצה מוגבלת של HALs עטופים. Google קובעת מי יהיו חברים בקבוצה. ממשקי HAL של ספקי שירות כוללים:

  • ממפה C יציב 5 HAL
  • OpenGL
  • וולקן
  • android.hidl.memory@1.0 (המערכת של Android מספקת את ה-HIDL, תמיד עטוף)
  • android.hardware.renderscript@1.0
HAL עטוף

שירות HAL שנוצר לפני Android 8, אבל עטוף ב-wrapper של AIDL או HIDL כדי לפעול עם Android 8 ואילך.

מה השלב הבא?