שיטת הפשטת חומרה (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 ומעלה.
מה השלב הבא?
- במאמר AIDL for HALs מוסבר איך מטמיעים שירות HAL.
- במאמר ממשקי HAL מצורפים ומורחבים מוסבר איך ליצור או להרחיב ממשק HAL קיים.