Quy trình khởi động là một chuỗi các thao tác bắt đầu từ ROM khởi động, theo sau là trình tải khởi động, hạt nhân, Init, Zygote và máy chủ hệ thống (in đậm cho biết 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ụ sớm như camera lùi (RVC) phải bắt đầu trong quá trình khởi động hạt nhân.
Đặt | Thành phần | Android | Android Automotive |
---|---|---|---|
1 | ROM khởi động | Tải giai đoạn đầu tiên của trình tải khởi động vào RAM trong. | |
2 | Trình tải khởi động | Khởi tạo bộ nhớ, xác minh để đảm bảo tính bảo mật và tải nhân hệ điều hành. | |
3 | Kernel | Thiết lập trình điều khiển ngắt, bảo vệ bộ nhớ, bộ nhớ đệm và lên 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 nhân hệ điều hành. 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 | Quy trình khởi tạo | Phân tích cú pháp tập lệnh init.rc , gắn hệ thống tệp, khởi chạy Zygote, khởi chạy quy trình hệ thống. |
Vehicle HAL (VHAL) bắt đầu trong giai đoạn khởi tạo như một phần của các dịch vụ cốt lõi. Có thể được chuyển sang các trạng thái trước đó tuỳ thuộc vào ServiceManager; yêu cầu xoá các phần phụ thuộc trên thư viện dùng chung (chẳng hạn như init). |
5 | Phôi hợp tử | Thiết lập Java Runtime và bộ nhớ khởi tạo 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ụ chính của Android. | CarService khởi động sau khi tất cả các dịch vụ hệ thống khởi động. |
Tối ưu hoá thời gian khởi động
Để cải thiện thời gian khởi động trong hệ thống, hãy làm theo các nguyên tắc sau:
-
Kernel. Chỉ tải các mô-đun đang sử dụng và chỉ khởi chạy các thành phần phần cứng đang sử dụng.
-
init.rc
- Chú ý các thao tác chặn (dịch vụ so với lệnh gọi lệnh).
- Chỉ bắt đầu những dữ liệu được sử dụng.
- Đặt mức độ ưu tiên chính xác cho các dịch vụ.
-
Zygote. Tối ưu hoá 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
-
Tối ưu hoá hình ảnh sản phẩm để chỉ đưa vào các tệp APK đang sử dụng.
-
-
Máy chủ hệ thống. Chỉ khởi động các dịch vụ hệ thống được sử dụng.
Để giúp bạn tối ưu hoá, 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 quy trình trong quá trình khởi động. Bạn phải biên dịch nhân bằng các cờ cụ thể (tham khảo tệpREADME.md
).
Bắt đầu dịch vụ từ sớm
Trong trình tự khởi động, một số dịch vụ có thể bắt đầu trước khi Android bắt đầu khởi động.
Camera lùi
Camera chiếu hậu (RVC) phải được xử lý trong nhân. VMCU thông báo cho quy trình hạt nhân gốc khi xe chuyển sang chế độ Rè, 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 (Lớp trừu tượng phần cứng) của xe có thể điều khiển RVC bằng hardware/libhardware/include/hardware/vehicle_camera.h
.
HAL của xe (VHAL)
Một số hệ thống có thể cần đọc và lưu dữ liệu CAN vào bộ đệm (ví dụ: tốc độ xe, trạng thái hộp số) trong các giai đoạn đầu của trình tự khởi động trong khi chờ dịch vụ không gian của người dùng bắt đầu (xảy ra sau trong trình tự khởi động). Tình huống này yêu cầu VNS và các trình điều khiển HAL và CAN khởi động rất sớm, thường là trong vòng vài giây.
-
Các hệ thống có thể nhanh chóng gắn
/system
chỉ cần khởi chạy trình quản lý dịch vụ rồi sớm khởi chạy VNS. -
Hệ thống không thể nhanh chóng gắn
/system
phải di chuyển cả trình quản lý dịch vụ và VNS sang hình ảnh khởi động nhân và liên kết tĩnh tất cả các thư viện phụ thuộc.