فرآیند بوت زنجیره ای از اقدامات است که از رام بوت شروع می شود و به دنبال آن بوت لودر، کرنل، Init ، Zygote و سرور سیستم (پررنگ نشان دهنده فرآیند بوت مخصوص اندروید است). در فرآیند بوت مخصوص خودرو، خدمات اولیه مانند دوربین دید عقب (RVC) باید در طول بوت هسته شروع شود.
سفارش | جزء | اندروید | Android Automotive |
---|---|---|---|
1 | رام بوت | مرحله اول بوت لودر را در رم داخلی بارگذاری می کند. | |
2 | بوت لودر | حافظه ها را راه اندازی می کند، امنیت را تأیید می کند و هسته را بارگیری می کند. | |
3 | هسته | تنظیم کننده های وقفه، حفاظت از حافظه، حافظه پنهان و زمان بندی را تنظیم می کند. فرآیندهای فضای کاربر را راه اندازی می کند. | فرآیند دوربین دید عقب (RVC) در اوایل بوت هسته شروع می شود. پس از اتمام فرآیند، GPIO از VMCU، RVC را فعال میکند تا روی صفحه نمایش داده شود. |
4 | فرآیند را آغاز کنید | اسکریپتهای init.rc را تجزیه میکند، سیستمهای فایل را نصب میکند، Zygote را راهاندازی میکند، فرآیند سیستم را راهاندازی میکند. | HAL وسیله نقلیه (VHAL) در مرحله اولیه به عنوان بخشی از خدمات اصلی شروع می شود. بسته به ServiceManager می توان به حالت های قبلی منتقل شد. نیاز به حذف وابستگی ها به کتابخانه های مشترک (مانند init) دارد. |
5 | زیگوت | Java Runtime و حافظه init را برای اشیاء Android تنظیم می کند. | |
6 | سرور سیستم | اولین جزء جاوا در سیستم، خدمات اصلی اندروید را راه اندازی می کند. | CarService پس از شروع تمام خدمات سیستم شروع می شود. |
بهینه سازی زمان بوت
برای بهبود زمان بوت در سیستم خود، از دستورالعمل های زیر استفاده کنید:
هسته. فقط ماژول های در حال استفاده را بارگیری کنید و فقط اجزای سخت افزاری در حال استفاده را مقداردهی اولیه کنید.
init.rc
- مراقب عملیات مسدودسازی باشید (سرویس در مقایسه با فراخوانی فرمان).
- فقط از آنچه استفاده می شود شروع کنید.
- تنظیم اولویت صحیح برای خدمات
زیگوت. بهینه سازی پیش بارگذاری کلاس (لیست کلاس هایی که باید بارگذاری شوند را مشخص کنید).
مدیر بسته
تصویر محصول را بهینه کنید تا فقط فایلهای APK در حال استفاده را شامل شود.
سرور سیستم فقط سرویس های سیستمی که استفاده می شوند را راه اندازی کنید.
برای کمک به بهینه سازی، گوگل ابزارهای زیر را ارائه می دهد:
برای تجزیه و تحلیل گزارش های logcat و dmesg
packages/services/Car/tools/bootanalyze/bootanalyze.py
استفاده کنید.از
packages/services/Car/tools/bootio/
برای ضبط I/O برای فرآیندها در طول بوت استفاده کنید. شما باید هسته را با پرچم های خاص کامپایل کنید (به فایلREADME.md
مراجعه کنید).
خدمات را زودتر شروع کنید
در دنباله بوت، برخی از خدمات ممکن است قبل از شروع بوت شدن اندروید شروع شوند.
دوربین دید عقب
دوربین دید عقب (RVC) باید در هسته کنترل شود. VMCU فرآیند هسته اصلی را هنگامی که وسیله نقلیه به حالت معکوس تغییر می کند، اطلاع می دهد، پس از آن فرآیند هسته اصلی، تصویر RVC را بر روی نمایشگر نمایش می دهد. HAL خودرو می تواند RVC را با استفاده از hardware/libhardware/include/hardware/vehicle_camera.h
کنترل کند.
خودرو HAL (VHAL)
برخی از سیستم ها ممکن است نیاز به خواندن و بافر داده های CAN (به عنوان مثال، سرعت خودرو، وضعیت دنده) در مراحل اولیه دنباله بوت داشته باشند، در حالی که منتظر شروع سرویس فضای کاربر هستند (که بعداً در دنباله بوت رخ می دهد). این سناریو به VNS و کنترلکنندههای HAL و CAN نیاز دارد که خیلی زود، معمولاً ظرف چند ثانیه شروع به کار کنند.
سیستمهایی که میتوانند به سرعت mount
/system
انجام دهند، میتوانند به سادگی مدیر سرویس و سپس VNS را زودتر راهاندازی کنند.سیستمی که نمی تواند به سرعت
/system
نصب کند باید سرویس مدیر و VNS را به تصویر بوت هسته منتقل کند و همه کتابخانه های وابسته را به صورت ایستا پیوند دهد.