שכבת הפשטה של חומרה (HAL) היא סוג של שכבת הפשטה עם ממשק סטנדרטי ליישום של ספקי חומרה. פרוטוקול HAL מאפשר שימוש בחומרה כדי להטמיע תכונות ספציפיות למכשיר ברמה נמוכה יותר, בלי להשפיע על שינוי הקוד בשכבות ברמה גבוהה יותר.
התנאים הנדרשים
בהמשך מופיעה רשימה של הגדרות למונחים שבהם נעשה שימוש בקטע הזה של תיעוד:
- שפת ההגדרה של ממשק Android (AIDL)
- שפה דמוית Java שמשמשת להגדרת ממשקים באופן שלא תלוי בשפת התכנות שבה נעשה שימוש. AIDL מאפשר תקשורת בין לקוחות HAL ושירותי HAL.
- HALBinderized
- HAL שמקשר עם תהליכים אחרים באמצעות binder inter-processingCommunications (IPC) שיחות. תהליכי HAL מנוהלים מופעלים בתהליך נפרד מהלקוח שמשתמש בהם. ממשקי HAL מנוהלים רשומים אצל מנהל שירות, כדי שהלקוחות יוכלו לגשת ליכולות שלהם. אישורי HAL שנכתבו ל-Android מגרסה 8 ואילך מאוגדים יותר.
- לקוח HAL
- התהליך לגישה לשירות HAL.
- ממשק HAL
- הממשק המשותף שמשמש גם את לקוח ה-HAL וגם את שירות התקשורת.
- שירות HAL
הקוד הספציפי לחומרה, למשל הקוד שמעביר המצלמה של המכשיר. עליך ליישם את כל הנחיות HAL הנדרשות המפורטות מטריצת התאימות של הגרסה שאליה טירגטתם במחיצת הספק. למידע נוסף על מטריצות תאימות, ראו מטריצות תאימות.
ניתן גם ליצור ממשק HAL חדש, או להרחיב את הממשק של HAL, תומך ביכולות הייחודיות של החומרה.
- Hardware Interface Settings Language (שפת הגדרה של ממשק חומרה) (HIDL)
שפה שמשמשת להגדרת ממשקים באופן שלא תלוי בשפת התכנות שבה נעשה שימוש. HIDL מאפשר תקשורת בין לקוחות HAL ושירותי HAL.
- HAL עם תהליך זהה (SP)
קבוצה מוגבלת של רכיבי HAL בתוך אריזה. החברות בקבוצה נשלטת על ידי Google. יעדי SP HAL כוללים:
- ממפה C יציב 5 HAL
- OpenGL
- וולקן
- android.hidl.memory@1.0 (מסופק על ידי מערכת Android, תמיד ארוז)
- android.hardware.renderscript@1.0
- HAL ארוז
שירות HAL שנוצר לפני Android 8, אבל ארוז wrapper של AIDL או HIDL לעבודה עם Android מגרסה 8 ואילך.
מה השלב הבא?
- כדי ללמוד איך להטמיע שירות HAL, אפשר לעיין במאמר AIDL ל-HALs.
- כדי ללמוד איך ליצור או להרחיב HAL קיים, אל ממשקים מורחבים מצורפים.