Kelola waktu boot

Proses booting adalah rangkaian tindakan yang dimulai dari boot ROM, diikuti oleh bootloader, kernel, Init , Zygote , dan server sistem (huruf tebal menunjukkan proses boot khusus Android). Dalam proses booting khusus otomotif, layanan awal seperti kamera pandangan belakang (RVC) harus dimulai selama booting kernel.

Memesan Komponen Android Otomotif Android
1 ROM booting Memuat boot loader tahap pertama ke dalam RAM internal.
2 Pemuat boot Init memori, verifikasi keamanan, dan muat kernel.
3 Inti Menyiapkan pengontrol interupsi, perlindungan memori, cache, dan penjadwalan; meluncurkan proses ruang pengguna. Proses kamera pandangan belakang (RVC) dimulai di awal boot kernel. Setelah proses selesai, GPIO dari VMCU memicu RVC untuk ditampilkan di layar.
4 Proses init Mem-parsing skrip init.rc , memasang sistem file, meluncurkan Zygote, meluncurkan proses sistem. Kendaraan HAL (VHAL) dimulai pada fase awal sebagai bagian dari layanan inti. Dapat dipindahkan ke status sebelumnya bergantung pada ServiceManager; memerlukan penghapusan dependensi pada perpustakaan bersama (seperti init).
5 Zigot Menyiapkan Java Runtime dan memori init untuk objek Android.
6 Server sistem Komponen Java pertama dalam sistem, memulai layanan inti Android. CarService dimulai setelah semua layanan sistem dimulai.

Optimalkan waktu boot

Untuk meningkatkan waktu booting di sistem Anda, gunakan panduan berikut:

  • Inti. Muat hanya modul yang digunakan dan inisialisasi hanya komponen perangkat keras yang digunakan.

  • init.rc

    • Perhatikan operasi pemblokiran (layanan dibandingkan dengan pemanggilan perintah).
    • Mulai hanya apa yang digunakan.
    • Menetapkan prioritas yang benar untuk layanan.
  • Zigot. Optimasi pramuat kelas (tentukan daftar kelas yang akan dimuat).

  • Manajer Paket

  • Server sistem. Mulai hanya layanan sistem yang digunakan.

Untuk bantuan pengoptimalan, Google menyediakan alat berikut:

  • Gunakan packages/services/Car/tools/bootanalyze/bootanalyze.py untuk menganalisis log logcat dan dmesg.

  • Gunakan packages/services/Car/tools/bootio/ untuk merekam I/O untuk proses selama boot. Anda harus mengkompilasi kernel dengan flag tertentu (lihat file README.md ).

Mulai layanan lebih awal

Dalam urutan booting, beberapa layanan mungkin dimulai sebelum Android mulai melakukan booting.

Kamera belakang

Kamera pandangan belakang (RVC) harus ditangani di kernel. VMCU memberi tahu proses kernel asli ketika kendaraan berpindah ke Mundur, setelah itu proses kernel asli menampilkan gambar RVC ke layar. HAL kendaraan dapat mengontrol RVC menggunakan hardware/libhardware/include/hardware/vehicle_camera.h .

Kendaraan HAL (VHAL)

Beberapa sistem mungkin perlu membaca dan melakukan buffering data CAN (misalnya, kecepatan kendaraan, status gigi) selama tahap awal urutan booting sambil menunggu layanan ruang pengguna dimulai (yang terjadi kemudian dalam urutan booting). Skenario ini memerlukan VNS dan pengontrol HAL dan CAN untuk memulai sangat awal, biasanya dalam beberapa detik.

  • Sistem yang dapat dengan cepat me-mount /system cukup meluncurkan manajer layanan kemudian VNS lebih awal.

  • Sistem yang tidak dapat melakukan mount dengan cepat /system harus memindahkan manajer layanan dan VNS ke image boot kernel dan menautkan semua perpustakaan dependen secara statis.