Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release
вместо aosp-main
для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Управление временем загрузки
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Процесс загрузки представляет собой цепочку действий, начиная с загрузочного ПЗУ, за которым следуют загрузчик, ядро, Init , Zygote и системный сервер (жирным шрифтом обозначен процесс загрузки, специфичный для Android). В процессе загрузки, специфичном для автомобиля, ранние службы, такие как камера заднего вида (RVC), должны запускаться во время загрузки ядра.
Заказ | Компонент | Андроид | Android Автомобильная промышленность |
---|
1 | Загрузочное ПЗУ | Загружает первую стадию загрузчика во внутреннюю оперативную память. |
2 | загрузчик | Инициализирует память, проверяет безопасность и загружает ядро. |
3 | Ядро | Настраивает контроллеры прерываний, защиту памяти, кэши и планирование; запускает процессы пользовательского пространства. | Процесс камеры заднего вида (RVC) начинается на ранней стадии загрузки ядра. После запуска процесса GPIO от VMCU запускает отображение RVC на дисплее. |
4 | Процесс инициализации | Парсит скрипты init.rc , монтирует файловые системы, запускает Zygote, запускает системный процесс. | HAL транспортного средства (VHAL) запускается на этапе инициализации как часть основных служб. Может быть переведен в более ранние состояния в зависимости от ServiceManager; требует удаления зависимостей от общих библиотек (таких как init). |
5 | Зигота | Настраивает среду выполнения Java и инициализирует память для объектов Android. |
6 | Системный сервер | Первый компонент Java в системе запускает основные службы Android. | CarService запускается после запуска всех системных служб. |
Оптимизировать время загрузки
Чтобы улучшить время загрузки вашей системы, используйте следующие рекомендации:
Ядро. Загружайте только используемые модули и инициализируйте только используемые аппаратные компоненты.
init.rc
- Следите за блокирующими операциями (услуга по сравнению с вызовом команды).
- Запускайте только то, что используется.
- Установка правильного приоритета для служб.
Зигота. Оптимизация предварительной загрузки классов (укажите список загружаемых классов).
Менеджер пакетов
Системный сервер. Запускайте только те системные службы, которые используются.
Для помощи в оптимизации Google предоставляет следующие инструменты:
Используйте packages/services/Car/tools/bootanalyze/bootanalyze.py
для анализа журналов logcat и dmesg.
Используйте packages/services/Car/tools/bootio/
для записи ввода-вывода процессов во время загрузки. Вы должны скомпилировать ядро с определенными флагами (см. файл README.md
).
Запускайте услуги заранее
В последовательности загрузки некоторые службы могут запуститься до загрузки Android.
Камера заднего вида
Камера заднего вида (RVC) должна обрабатываться в ядре. VMCU уведомляет собственный процесс ядра, когда автомобиль переключается на задний ход, после чего собственный процесс ядра отображает изображение RVC на дисплее. HAL транспортного средства может управлять RVC с помощью hardware/libhardware/include/hardware/vehicle_camera.h
.
Транспортное средство HAL (ВХАЛ)
Некоторым системам может потребоваться считывать и буферизовать данные CAN (например, скорость автомобиля, состояние передачи) на ранних этапах последовательности загрузки, ожидая запуска службы пользовательского пространства (что происходит позже в последовательности загрузки). Этот сценарий требует, чтобы VNS и контроллеры HAL и CAN запускались очень рано, обычно в течение нескольких секунд.
Системы, которые могут быстро монтировать /system
могут просто заранее запустить диспетчер служб, а затем VNS.
Система, которая не может быстро смонтировать /system
, должна переместить диспетчер служб и VNS в загрузочный образ ядра и статически связать все зависимые библиотеки.
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 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."]]