Quản lý thời gian khởi động

Quá trình khởi động là một chuỗi các hành động bắt đầu từ ROM khởi động, tiếp theo là bộ nạp khởi động, kernel, Init , Zygotemáy chủ hệ thống (in đậm biểu thị quy trình khởi động dành riêng cho Android). Trong quy trình khởi động dành riêng cho ô tô, các dịch vụ ban đầu như camera chiếu hậu (RVC) phải khởi động trong quá trình khởi động kernel.

Đặt hàng Thành phần Android Ô tô Android
1 ROM khởi động Tải giai đoạn đầu tiên của bộ tải khởi động vào RAM bên trong.
2 Bộ nạp khởi động Khởi tạo bộ nhớ, xác minh tính bảo mật và tải kernel.
3 hạt nhân Thiết lập bộ điều khiển ngắt, bảo vệ bộ nhớ, bộ đệm và lập lịch; khởi chạy các quy trình không gian người dùng. Quá trình camera chiếu hậu (RVC) bắt đầu sớm khi khởi động kernel. Sau khi quá trình kết thúc, GPIO từ VMCU sẽ kích hoạt RVC hiển thị trên màn hình.
4 Quá trình khởi tạo Phân tích tập lệnh init.rc , gắn kết hệ thống tệp, khởi chạy Zygote, khởi chạy quy trình hệ thống. Xe HAL (VHAL) khởi động trong giai đoạn ban đầu như một phần của dịch vụ cốt lõi. Có thể được chuyển sang trạng thái trước đó tùy thuộc vào ServiceManager; yêu cầu loại bỏ các phụ thuộc vào thư viện dùng chung (chẳng hạn như init).
5 Hợp tử Thiết lập Java Runtime và bộ nhớ init cho các đối tượng Android.
6 Máy chủ hệ thống Thành phần Java đầu tiên trong hệ thống, khởi động các dịch vụ cốt lõi của Android. CarService bắt đầu sau khi tất cả các dịch vụ hệ thống được khởi động.

Tối ưu hóa thời gian khởi động

Để cải thiện thời gian khởi động trong hệ thống của bạn, hãy sử dụng các nguyên tắc sau:

  • Hạt nhân. Chỉ tải các mô-đun đang sử dụng và chỉ khởi tạo các thành phần phần cứng đang sử dụng.

  • init.rc

    • Theo dõi các hoạt động chặn (dịch vụ so với lệnh gọi).
    • Chỉ bắt đầu những gì được sử dụng.
    • Đặt mức độ ưu tiên chính xác cho các dịch vụ.
  • Hợp tử. Tối ưu hóa việc tải trước lớp (chỉ định danh sách các lớp cần tải).

  • Trình quản lý gói

  • Máy chủ hệ thống. Chỉ khởi động các dịch vụ hệ thống được sử dụng.

Để được trợ giúp tối ưu hóa, Google cung cấp các công cụ sau:

  • Sử dụng packages/services/Car/tools/bootanalyze/bootanalyze.py để phân tích nhật ký logcat và dmesg.

  • Sử dụng packages/services/Car/tools/bootio/ để ghi lại I/O cho các tiến trình trong quá trình khởi động. Bạn phải biên dịch kernel với các cờ cụ thể (tham khảo tệp README.md ).

Bắt đầu dịch vụ sớm

Trong trình tự khởi động, một số dịch vụ có thể khởi động trước khi Android bắt đầu khởi động.

Camera chiếu hậu

Camera chiếu hậu (RVC) phải được xử lý trong kernel. VMCU thông báo cho quy trình hạt nhân gốc khi xe chuyển sang chế độ Reverse, sau đó quy trình hạt nhân gốc sẽ hiển thị hình ảnh RVC trên màn hình. HAL của xe có thể điều khiển RVC bằng cách sử dụng hardware/libhardware/include/hardware/vehicle_camera.h .

Xe HAL (VHAL)

Một số hệ thống có thể cần đọc và đệm dữ liệu CAN (ví dụ: tốc độ xe, trạng thái số) trong giai đoạn đầu của trình tự khởi động trong khi chờ dịch vụ không gian người dùng khởi động (xảy ra sau trong trình tự khởi động). Kịch bản này yêu cầu bộ điều khiển VNS và HAL và CAN khởi động từ rất sớm, thường trong vòng vài giây.

  • Các hệ thống có thể gắn kết /system nhanh chóng có thể chỉ cần khởi chạy trình quản lý dịch vụ sau đó là VNS sớm.

  • Hệ thống không thể mount /system nhanh chóng phải chuyển cả trình quản lý dịch vụ và VNS sang ảnh khởi động kernel và liên kết tĩnh tất cả các thư viện phụ thuộc.