管理啟動時間

引導過程是從引導 ROM 開始的一系列操作,然後是引導程式、核心、 InitZygote系統伺服器(粗體表示 Android 特定的引導過程)。在汽車專用的啟動過程中,後視攝影機 (RVC) 等早期服務必須在核心啟動期間啟動。

命令成分安卓安卓汽車
1引導ROM將引導程式的第一階段載入到內部 RAM 中。
2引導程式初始化記憶體、驗證安全性並載入核心。
3核心設定中斷控制器、記憶體保護、快取和調度;啟動使用者空間進程。後視攝影機 (RVC)進程在核心啟動初期啟動。進程啟動後,VMCU 的 GPIO 觸發 RVC 在顯示幕上顯示。
4初始化進程解析init.rc腳本,掛載檔案系統,啟動 Zygote,啟動系統程序。 Vehicle HAL (VHAL)在初始化階段作為核心服務的一部分啟動。可以根據ServiceManager移至較早的狀態;需要刪除對共享庫(例如 init)的依賴。
5合子為 Android 物件設定 Java 運行時和初始化記憶體。
6系統伺服器系統中的第一個 Java 元件啟動核心 Android 服務。 CarService在所有系統服務啟動後啟動。

優化啟動時間

若要縮短系統的啟動時間,請遵循以下準則:

  • 核心。僅載入正在使用的模組並僅初始化正在使用的硬體元件。

  • init.rc

    • 監視阻塞操作(服務與命令呼叫比較)。
    • 僅啟動已使用的內容。
    • 為服務設定正確的優先權。
  • 合子。類別預先載入最佳化(指定要載入的類別清單)。

  • 套件管理器

  • 系統伺服器。僅啟動使用的系統服務。

為了幫助優化,Google 提供了以下工具:

  • 使用packages/services/Car/tools/bootanalyze/bootanalyze.py來分析logcat和dmesg日誌。

  • 使用packages/services/Car/tools/bootio/記錄啟動期間進程的I/O。您必須使用特定標誌編譯核心(請參閱README.md檔案)。

儘早開始服務

在啟動順序中,某些服務可能會在 Android 啟動之前啟動。

後視攝影機

後視攝影機(RVC)應該在核心中處理。當車輛換入倒車檔時,VMCU 通知本機內核進程,之後本機內核進程將 RVC 影像顯示到顯示器上。車輛 HAL 可以使用hardware/libhardware/include/hardware/vehicle_camera.h控制 RVC。

車輛 HAL (VHAL)

某些系統可能需要在啟動序列的早期階段讀取和緩衝 CAN 資料(例如,車速、檔位狀態),同時等待使用者空間服務啟動(啟動序列稍後發生)。這種情況要求 VNS 以及 HAL 和 CAN 控制器很早就啟動,通常在幾秒鐘內啟動。

  • 可以快速掛載/system系統可以簡單地啟動服務管理器,然後儘早啟動 VNS。

  • 無法快速掛載/system系統必須將服務管理員和 VNS 都移至核心啟動映像,並靜態連結所有依賴函式庫。