Kelola waktu booting

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

Pesanan Komponen Android Android Automotive
1 ROM Booting Memuat tahap pertama bootloader ke RAM internal.
2 Bootloader Melakukan inisialisasi memori, memverifikasi keamanan, dan memuat kernel.
3 Kernel Menyiapkan pengontrol interupsi, perlindungan memori, cache, dan penjadwalan; meluncurkan proses ruang pengguna. Proses kamera belakang (RVC) dimulai lebih awal saat booting kernel. Setelah prosesnya selesai, GPIO dari VMCU memicu RVC untuk ditampilkan di layar.
4 Proses init Mengurai skrip init.rc, memasang sistem file, meluncurkan Zygote, meluncurkan proses sistem. Vehicle HAL (VHAL) dimulai selama fase inisialisasi sebagai bagian dari layanan inti. Dapat dipindahkan ke status sebelumnya bergantung pada ServiceManager; memerlukan penghapusan dependensi pada library bersama (seperti init).
5 Zigot Menyiapkan Java Runtime dan memori init untuk objek Android.
6 Server sistem Komponen Java pertama dalam sistem, memulai layanan Android inti. CarService dimulai setelah semua layanan sistem dimulai.

Mengoptimalkan waktu booting

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

  • Kernel. Hanya muat modul yang digunakan dan hanya lakukan inisialisasi komponen hardware yang digunakan.

  • init.rc

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

  • Pengelola Paket

  • Server sistem. Mulai hanya layanan sistem yang digunakan.

Untuk membantu 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 mengompilasi kernel dengan flag tertentu (lihat file README.md).

Memulai layanan lebih awal

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

Kamera belakang

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

HAL Kendaraan (VHAL)

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

  • Sistem yang dapat memasang /system dengan cepat dapat meluncurkan pengelola layanan, lalu VNS lebih awal.

  • Sistem yang tidak dapat memasang /system dengan cepat harus memindahkan pengelola layanan dan VNS ke boot image kernel dan menautkan semua library dependen secara statis.