תהליך האתחול הוא שרשרת של פעולות שמתחילה ב-ROM של האתחול, ולאחר מכן תוכנת האתחול, הליבה, Init, Zygote ו-system server (הכתב המודגש מציין תהליך אתחול ספציפי ל-Android). בתהליך האתחול הספציפי לכלי רכב, שירותים מוקדמים כמו מצלמת הרוורס חייבים להתחיל במהלך האתחול של הליבה.
הזמנה | רכיב | Android | Android Automotive |
---|---|---|---|
1 | ROM לאתחול | טעינת השלב הראשון של מנהל האתחול בזיכרון RAM פנימי. | |
2 | תוכנת אתחול | הפעלת הזיכרון, אימות האבטחה וטעינה של הליבה. | |
3 | ליבה | הגדרת בקרי הפסקות, הגנה על זיכרון, מטמון ותזמון, הפעלת תהליכים במרחב המשתמש. | התהליך של מצלמת הרוורס (RVC) מתחיל בשלב מוקדם של אתחול הליבה. אחרי סיום התהליך, הקוד GPIO מ-VMCU מפעיל את RVC להצגה במסך. |
4 | תהליך ה-init | ניתוח של init.rc סקריפטים, טעינת מערכות קבצים, הפעלת Zygote והפעלת תהליך מערכת. |
Vehicle HAL (VHAL) מתחיל לפעול במהלך שלב האינטליגנציה כחלק משירותי הליבה. אפשר להעביר אותן למצבים קודמים בהתאם ל-ServiceManager. לשם כך, צריך להסיר את יחסי התלות בספריות משותפות (כמו init). |
5 | זיגוטה | הגדרת Java Runtime וזיכרון init לאובייקטים של Android. | |
6 | שרת מערכת | רכיב ה-Java הראשון במערכת מפעיל את שירותי הליבה של Android. | CarService מתחיל לפעול אחרי הפעלת כל שירותי המערכת. |
אופטימיזציה של זמן האתחול
כדי לקצר את זמן האתחול של המערכת, מומלץ לפעול לפי ההנחיות הבאות:
-
ליבה טעינה של המודולים שבשימוש בלבד והפעלה של רכיבי החומרה שבשימוש בלבד.
-
init.rc
- חשוב לבדוק אם יש פעולות חסימה (השוואה בין שירות לבין הפעלת פקודה).
- מפעילים רק את מה שמשמש.
- הגדרת העדיפות הנכונה לשירותים.
-
זיגוטה אופטימיזציה של טעינה מראש של כיתות (צריך לציין את רשימת הכיתות שרוצים לטעון).
-
מנהל החבילות
-
מבצעים אופטימיזציה לתמונה של המוצר כך שתכלול רק קובצי APK שנמצאים בשימוש.
-
-
שרת המערכת מפעילים רק את שירותי המערכת שנמצאים בשימוש.
כדי לעזור לכם לבצע אופטימיזציה, Google מספקת את הכלים הבאים:
-
משתמשים ב-
packages/services/Car/tools/bootanalyze/bootanalyze.py
כדי לנתח יומני Logcat ו-dmesg. -
משתמשים ב-
packages/services/Car/tools/bootio/
כדי לתעד את הקלט/פלט של תהליכים במהלך האתחול. צריך לקמפל את הליבה עם דגלים ספציפיים (עיינו בקובץREADME.md
).
הפעלת שירותים מראש
בסדרת האתחול, יכול להיות שחלק מהשירותים יתחילו לפעול לפני שמערכת Android תתחיל את תהליך האתחול.
מצלמה אחורית
הטיפול במצלמה האחורית (RVC) צריך להתבצע בליבה. ה-VMCU מודיע לתהליך הליבה המקורי כשהרכב עובר להילוך לאחור, ולאחר מכן תהליך הליבה המקורי מציג את התמונה של ה-RVC במסך. טכנולוגיית HAL של הרכב יכולה לשלוט ב-RVC באמצעות hardware/libhardware/include/hardware/vehicle_camera.h
.
מערכת HAL לרכב (VHAL)
יכול להיות שבחלק מהמערכות יהיה צורך לקרוא ולאחסן ב-buffer נתוני CAN (לדוגמה, מהירות הרכב, מצב ההילוכים) בשלבים המוקדמים של רצף האתחול, בזמן ההמתנה לשירות במרחב המשתמש שיתחיל לפעול (הדבר מתרחש בשלב מאוחר יותר ברצף האתחול). בתרחיש הזה, ה-VNS ואת בקרי ה-HAL ו-CAN צריכים להתחיל לפעול מוקדם מאוד, בדרך כלל תוך כמה שניות.
-
במערכות שאפשר לטעון בהן את
/system
במהירות, אפשר פשוט להפעיל את מנהל השירות ואז את VNS מוקדם. -
במערכת שלא ניתן לטעון במהירות את
/system
, צריך להעביר את מנהל השירות ואת VNS לקובץ האימג' של אתחול הליבה ולקשר סטטית את כל הספריות התלויות.