Od 27 marca 2025 r. zalecamy używanie android-latest-release
zamiast aosp-main
do kompilowania i wspołtworzenia AOSP. Więcej informacji znajdziesz w artykule o zmianach w AOSP.
Zarządzanie czasem uruchamiania
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Proces uruchamiania to ciąg działań, który zaczyna się od ROM-u rozruchowego, a potem przechodzi przez bootloader, jądro, Init, Zygote i serwer systemowy (pogrubienie wskazuje proces uruchamiania specyficzny dla Androida). W ramach procesu rozruchu w samochodach wczesne usługi, takie jak kamera cofania, muszą być uruchamiane podczas uruchamiania jądra.
Zamówienie |
Komponent |
Android |
Android Automotive |
1 |
Pamięć ROM rozruchowa |
Ładuje pierwszy etap programu ładującego do wewnętrznej pamięci RAM. |
2 |
Program rozruchowy |
Inicjowanie pamięci, weryfikacja zabezpieczeń i ładowanie jądra. |
3 |
Bąbelki |
Konfiguruje kontrolery przerwań, ochronę pamięci, pamięć podręczną i planowanie; uruchamia procesy użytkownika w pokoju. |
Proces kamery tylnej (RVC) rozpoczyna się na wczesnym etapie uruchamiania jądra. Po zakończeniu procesu GPIO z VMCU powoduje, że RVC wyświetla się na ekranie. |
4 |
Proces inicjowania |
Przetwarza skrypty init.rc , montuje systemy plików, uruchamia Zygote, uruchamia proces systemowy. |
HAL pojazdu (VHAL) uruchamia się w fazie inicjalizacji jako część podstawowych usług. Może być przenoszony do wcześniejszych stanów w zależności od ServiceManagera; wymaga usunięcia zależności od wspólnych bibliotek (np. init). |
5 |
Zygote |
Konfiguruje środowisko uruchomieniowe Java i pamięć początkową dla obiektów Androida. |
6 |
Serwer systemowy |
Pierwszy komponent Java w systemie, uruchamia podstawowe usługi Androida. |
Usługa CarService uruchamia się po uruchomieniu wszystkich usług systemowych. |
Optymalizacja czasu uruchamiania
Aby skrócić czas uruchamiania systemu, postępuj zgodnie z tymi wskazówkami:
-
Jądro. Ładowanie tylko używanych modułów i inicjowanie tylko używanych komponentów sprzętowych.
-
init.rc
- Zwróć uwagę na operacje blokowania (usługa w porównaniu z wywołaniem polecenia).
- Uruchom tylko to, co jest używane.
- Ustawianie prawidłowego priorytetu usług.
-
Zygote. Optymalizacja wstępnego wczytywania zajęć (określ listę zajęć do wczytania).
-
Menedżer pakietów
-
Serwer systemowy. Uruchamiać tylko używane usługi systemowe.
Aby ułatwić optymalizację, Google udostępnia te 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 rejestrować operacje wejścia/wyjścia dla procesów podczas uruchamiania. Musisz skompilować jądro z użyciem określonych flag (patrz plik README.md
).
Wczesna aktywacja usług
W sekwencji uruchamiania niektóre usługi mogą być uruchamiane przed uruchomieniem Androida.
Kamera wsteczna
Tylny aparat (RVC) powinien być obsługiwany w rdzeniu. VMCU powiadamia natywny proces jądra, gdy pojazd przełączy się na bieg wsteczny, a ten wyświetla obraz z RVC na wyświetlaczu. HAL pojazdu może sterować RVC za pomocą hardware/libhardware/include/hardware/vehicle_camera.h
.
Interfejs HAL pojazdu (VHAL)
Niektóre systemy mogą wymagać odczytu i zapisu danych CAN (np. prędkości pojazdu czy stanu biegu) na wczesnych etapach sekwencji uruchamiania, podczas oczekiwania na uruchomienie usługi w przestrzeni użytkownika (co następuje później w sekwencji uruchamiania). W tym scenariuszu wymagane jest bardzo wczesne uruchamianie kontrolerów VNS, HAL i CAN, zwykle w ciągu kilku sekund.
-
Systemy, które mogą szybko zamontować /system
, mogą po prostu 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 rozruchu jądra, a także połączyć wszystkie zależne biblioteki statycznie.
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2025-07-27 UTC."],[],[],null,["# Manage boot time\n\nThe boot process is a chain of actions starting from the boot ROM, followed by the bootloader,\nkernel, **Init** , **Zygote** , and **system server** (bold\nindicates Android-specific boot process). In the automotive-specific boot process, early services\nsuch as rearview camera (RVC) must start during the kernel boot.\n\n| Order | Component | Android | Android Automotive |\n|-------|---------------|----------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| 1 | Boot ROM | Loads the first stage of the boot loader into internal RAM. ||\n| 2 | Bootloader | Inits memories, verifies for security, and loads kernel. ||\n| 3 | Kernel | Sets up interrupt controllers, memory protection, caches, and scheduling; launches user space processes. | **Rearview camera (RVC)** process starts early in kernel boot. After the process is up, GPIO from VMCU triggers RVC to show on display. |\n| 4 | Init process | Parses `init.rc` scripts, mounts file systems, launches Zygote, launches system process. | **Vehicle HAL (VHAL)** starts during init phase as part of core services. Can be moved to earlier states depending on ServiceManager; requires removing dependencies on shared libraries (such as init). |\n| 5 | Zygote | Sets up Java Runtime and init memory for Android objects. ||\n| 6 | System server | First Java component in the system, starts core Android services. | **CarService** starts after all system services are started. |\n\nOptimize boot time\n------------------\n\nTo improve boot time in your system, use the following guidelines:\n\n- **Kernel.** Load only the modules in use and initialize only the hardware\n components in use.\n\n- `init.rc`\n\n - Watch for blocking operations (service compared to command invocation).\n - Start only what is used.\n - Setting correct priority for services.\n- **Zygote.** Class preloading optimization (specify the list of classes to\n load).\n\n- **Package Manager**\n\n - Optimize product image to include only APKs in use.\n\n - [Enable DEX\n preoptimization](/docs/core/runtime/configure#compilation_options).\n\n- **System server.** Start only the system services that are used.\n\nFor help with optimization, Google provides the following tools:\n\n- Use `packages/services/Car/tools/bootanalyze/bootanalyze.py` to analyze logcat and\n dmesg logs.\n\n- Use `packages/services/Car/tools/bootio/` to record I/O for processes during the\n boot. You must compile the kernel with specific flags (refer to the `README.md`\n file).\n\nStart services early\n--------------------\n\nIn the boot sequence, some services might start before Android starts to boot.\n\n### Rearview camera\n\nThe rearview camera (RVC) should be handled in the kernel. The VMCU notifies the native kernel\nprocess when the vehicle shifts into Reverse, after which the native kernel process displays the\nRVC image onto the display. The vehicle HAL can control the RVC using\n`hardware/libhardware/include/hardware/vehicle_camera.h`.\n\n### Vehicle HAL (VHAL)\n\nSome systems might need to read and buffer CAN data (for example, vehicle speed, gear status)\nduring the early stages of the boot sequence while waiting for the user-space service to start\n(which occurs later in the boot sequence). This scenario requires VNS and the HAL and CAN\ncontrollers to start very early, typically within a few seconds.\n\n- Systems that can quickly mount `/system` can simply launch service manager then\n VNS early.\n\n- System that can't quickly mount `/system` must move both service manager and VNS\n to the kernel boot image and link all dependent libraries statically."]]