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