ניהול זמן האתחול

תהליך האתחול הוא שרשרת של פעולות שמתחילה ב-ROM של האתחול, ולאחר מכן תוכנת האתחול, הליבה, Init,‏ Zygote ו-system server (הכתב המודגש מציין תהליך אתחול ספציפי ל-Android). בתהליך האתחול הספציפי לכלי רכב, שירותים מוקדמים כמו מצלמת הרכב האחורית (RVC) חייבים להתחיל במהלך האתחול של הליבה.

הזמנה רכיב Android Android Automotive
1 Boot 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 מתחיל לפעול אחרי הפעלת כל שירותי המערכת.

אופטימיזציה של זמן האתחול

כדי לשפר את זמן האתחול של המערכת, מומלץ לפעול לפי ההנחיות הבאות:

  • Kernel טעינה של המודולים שבשימוש בלבד והפעלה של רכיבי החומרה שבשימוש בלבד.

  • init.rc

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

  • מנהל החבילות

  • שרת המערכת מפעילים רק את שירותי המערכת שבהם משתמשים.

כדי לעזור לכם לבצע אופטימיזציה, 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.

Vehicle HAL‏ (VHAL)

יכול להיות שבחלק מהמערכות יהיה צורך לקרוא ולאגור ב-buffer נתוני CAN (לדוגמה, מהירות הרכב, מצב ההילוכים) בשלבים המוקדמים של רצף האתחול, בזמן ההמתנה לשירות במרחב המשתמש שיתחיל לפעול (הדבר מתרחש בשלב מאוחר יותר ברצף האתחול). בתרחיש הזה, ה-VNS ואת בקרי ה-HAL ו-CAN צריכים להתחיל לפעול מוקדם מאוד, בדרך כלל תוך כמה שניות.

  • במערכות שאפשר לטעון בהן את /system במהירות, אפשר פשוט להפעיל את מנהל השירות ואז את VNS מוקדם.

  • במערכת שלא ניתן לטעון במהירות את /system, צריך להעביר את מנהל השירות ואת VNS לקובץ האימג' של אתחול הליבה ולקשר סטטית את כל הספריות התלויות.