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

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

תנאים נדרשים

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

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

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

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

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

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

אותו תהליך (SP) HAL

קבוצה מוגבלת של HAL עטופים. החברות בקבוצה נשלטת על ידי Google. שכבות ה-HAL של SP כוללות:

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

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

מה השלב הבא?