عملية التمهيد هي سلسلة من الإجراءات تبدأ من ذاكرة التشغيل الثابتة، وتليها أداة تحميل التشغيل والنواة وInit وZygote ونظام الخادم (يشير الخط السميك إلى عملية التمهيد الخاصة بنظام التشغيل Android). في عملية الإقلاع الخاصة بالمركبات، يجب بدء الخدمات المبكرة مثل كاميرا الرؤية الخلفية (RVC) أثناء إقلاع النواة.
طلب | المكوّن | Android | Android Automotive |
---|---|---|---|
1 | ذاكرة القراءة فقط عند التشغيل | تحميل المرحلة الأولى من برنامج الإقلاع في ذاكرة الوصول العشوائي الداخلية. | |
2 | برنامج الإقلاع | يبدأ تشغيل الذاكرة ويتحقّق من الأمان ويحمِّل النواة. | |
3 | Kernel | تعمل على إعداد وحدات التحكّم في المقاطعات وحماية الذاكرة وذاكرات التخزين المؤقت والجدولة، بالإضافة إلى بدء عمليات مساحة المستخدم. | تبدأ عملية كاميرا الرؤية الخلفية (RVC) في وقت مبكر من تشغيل النواة. بعد اكتمال عملية ، يشغِّل GPIO من وحدة التحكّم في الوسائط (VMCU) ميزة "عرض الفيديو المباشر" على الشاشة. |
4 | بدء العملية | تُحلِّل النصوص البرمجية init.rc ، وتُحمِّل أنظمة الملفات، وتُشغِّل Zygote، وتُشغِّل
عملية النظام. |
يبدأ HAL للمركبة (VHAL) أثناء مرحلة البدء كجزء من خدمات الأساسية. يمكن نقلها إلى حالات سابقة استنادًا إلى ServiceManager، ويتطلب ذلك إزالة التبعيات على المكتبات المشتركة (مثل init). |
5 | زيغوت | يُعدّ هذا الإجراء بيئة Java Runtime ويُنشئ ذاكرة لعناصر 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) في النواة. يُرسِل وحدة التحكّم في الفيديو إشعارًا إلى عملية kernel
الأصلية عند تبديل المركبة إلى وضع الرجوع، وبعد ذلك تعرِض عملية kernel
الأصلية صورة المركبة الرجعية على الشاشة. يمكن لوحدة HAL للمركبة التحكّم في نظام الرؤية المحيطة باستخدام
hardware/libhardware/include/hardware/vehicle_camera.h
.
Vehicle HAL (VHAL)
قد تحتاج بعض الأنظمة إلى قراءة بيانات الشبكة الكندية (CAN) وتخزينها مؤقتًا (على سبيل المثال، سرعة المركبة وحالة الترس) خلال المراحل الأولى من تسلسل التمهيد أثناء انتظار بدء خدمة مساحة المستخدم (والذي يحدث لاحقًا في تسلسل التمهيد). يتطلّب هذا السيناريو بدء VNS وHAL وCAN controllers في وقت مبكر جدًا، عادةً خلال بضع ثوانٍ.
-
بالنسبة إلى الأنظمة التي يمكنها تركيب
/system
بسرعة، يمكنها ببساطة تشغيل مدير الخدمات ثم VNS مبكرًا. -
إنّ النظام الذي لا يمكنه تثبيت
/system
بسرعة يجب أن ينقل كلاً من مدير الخدمة وشبكة VNS إلى صورة تشغيل kernel وربط جميع المكتبات التابعة بشكلٍ ثابت.