Zarządzaj czasem rozruchu

Proces rozruchu to łańcuch działań rozpoczynający się od rozruchowej pamięci ROM, po której następuje program ładujący, jądro, Init , Zygote i serwer systemowy (pogrubienie oznacza proces rozruchu specyficzny dla Androida). W procesie rozruchu specyficznym dla motoryzacji wczesne usługi, takie jak kamera cofania (RVC), muszą zostać uruchomione podczas rozruchu jądra.

Zamówienie Część Android Samochody z Androidem
1 Uruchom ROM Ładuje pierwszy etap modułu ładującego do wewnętrznej pamięci RAM.
2 Program rozruchowy Inicjuje pamięć, sprawdza bezpieczeństwo i ładuje jądro.
3 Jądro Konfiguruje kontrolery przerwań, ochronę pamięci, pamięci podręczne i planowanie; uruchamia procesy przestrzeni użytkownika. Proces kamery cofania (RVC) rozpoczyna się na wczesnym etapie uruchamiania jądra. Po zakończeniu procesu GPIO z VMCU powoduje wyświetlenie RVC na wyświetlaczu.
4 Rozpocznij proces Analizuje skrypty init.rc , montuje systemy plików, uruchamia Zygote, uruchamia proces systemowy. HAL pojazdu (VHAL) rozpoczyna się w fazie początkowej w ramach usług podstawowych. Można przenieść do wcześniejszych stanów w zależności od ServiceManager; wymaga usunięcia zależności od bibliotek współdzielonych (takich jak init).
5 Zygota Konfiguruje środowisko wykonawcze Java i pamięć inicjującą dla obiektów Androida.
6 Serwer systemowy Pierwszy komponent Java w systemie uruchamia podstawowe usługi Androida. CarService uruchamia się po uruchomieniu wszystkich usług systemowych.

Zoptymalizuj czas uruchamiania

Aby skrócić czas uruchamiania systemu, postępuj zgodnie z poniższymi wskazówkami:

  • Jądro. Załaduj tylko używane moduły i zainicjuj tylko używane komponenty sprzętowe.

  • init.rc

    • Uważaj na operacje blokujące (usługa w porównaniu z wywoływaniem poleceń).
    • Rozpocznij tylko to, co jest używane.
    • Ustawianie prawidłowego priorytetu usług.
  • Zygota. Optymalizacja wstępnego ładowania klas (określ listę klas do załadowania).

  • Menedżer pakietów

  • Serwer systemowy. Uruchamiaj tylko używane usługi systemowe.

Aby uzyskać pomoc w optymalizacji, Google udostępnia następujące narzędzia:

  • Użyj packages/services/Car/tools/bootanalyze/bootanalyze.py aby przeanalizować logi logcat i dmesg.

  • Użyj packages/services/Car/tools/bootio/ aby zarejestrować wejścia/wyjścia dla procesów podczas rozruchu. Musisz skompilować jądro z określonymi flagami (patrz plik README.md ).

Rozpocznij usługi wcześniej

W sekwencji rozruchowej niektóre usługi mogą zostać uruchomione przed uruchomieniem systemu Android.

Tylna kamera

Kamera cofania (RVC) powinna być obsługiwana w jądrze. VMCU powiadamia natywny proces jądra, gdy pojazd przełącza się na bieg wsteczny, po czym natywny proces jądra wyświetla obraz RVC na wyświetlaczu. HAL pojazdu może sterować RVC za pomocą hardware/libhardware/include/hardware/vehicle_camera.h .

Pojazd HAL (VHAL)

Niektóre systemy mogą wymagać odczytania i buforowania danych CAN (na przykład prędkości pojazdu, stanu biegu) na wczesnych etapach sekwencji rozruchowej, podczas oczekiwania na uruchomienie usługi przestrzeni użytkownika (co ma miejsce w dalszej części sekwencji rozruchowej). Ten scenariusz wymaga bardzo wczesnego uruchomienia VNS oraz kontrolerów HAL i CAN, zwykle w ciągu kilku sekund.

  • Systemy, które można szybko zamontować /system mogą po prostu wcześniej uruchomić menedżera usług, a następnie VNS.

  • System, który nie może szybko zamontować /system musi przenieść zarówno menedżera usług, jak i VNS do obrazu rozruchowego jądra i statycznie połączyć wszystkie zależne biblioteki.