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

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

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

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

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

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

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

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

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

Same Process (SP) HAL

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

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

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

מה השלב הבא?