Благодаря новому продукту под названием trout Android Automotive (AAOS) теперь поддерживает развертывание в качестве гостевой виртуальной машины (ВМ) в средах, совместимых со стандартом VirtIO . trout основан на виртуальной эталонной платформе Cuttlefish и доступен в конфигурации устройства trout . Исходный код пользовательского пространства можно найти по адресу device/google/trout . В таблице ниже описана технология, используемая для виртуализации каждой из подсистем в trout .
| Особенность | Технологии |
|---|---|
| Аудио контроль HAL | vsock/gRPC |
| Аудио ХАЛ | virtio-snd |
| Bluetooth | virtio-console |
| Свалка HAL | vsock/gRPC |
| Система расширенного обзора (EVS) | virtio-video |
| Режим гаража | vsock/gRPC |
| Графика | virtio-gpu |
| Глобальная навигационная спутниковая система (GNSS) | virtio-console |
| Датчик HAL 2.0 | virtio-scmi and IIO |
| Сенсорный ввод | virtio-input |
| Автомобиль HAL | vsock/gRPC |
Растяжная форель
trout можно использовать в качестве отправной точки для создания новых целей Android в автомобильной информационно-развлекательной системе (IVI). Инфраструктура сборки предназначена для расширения и настройки. Например:
# Inherit trout-arm64 default values and settings
$(call inherit-product, device/google/trout/aosp_trout_arm64.mk)
# Customize HALs as needed
LOCAL_VHAL_PRODUCT_PACKAGE := vendor.oem.vhal@2.0-service
LOCAL_AUDIO_PRODUCT_PACKAGE := vendor.oem.audio@6.0-impl
# Configure SELinux policy
BOARD_SEPOLICY_DIRS += device/oem/car/sepolicy/vendor/oem
# Configure properties
LOCAL_DUMPSTATE_PROPERTIES := \
ro.vendor.dumpstate.server.cid=22 \
ro.vendor.dumpstate.server.port=406 \
ro.vendor.helpersystem.log_loc=/data/dumpstate
[... and more as needed ...]
Несколько HAL Android можно по отдельности заменить пользовательскими реализациями или сохранить реализации по умолчанию, но скорректировать определенные параметры конфигурации, чтобы установить надлежащее взаимодействие между виртуальными машинами в целевой среде. Эти HAL (включая HAL Vehicle, HAL Audio Control и HAL Dumpstate) реализуются с помощью интерфейса gRPC, поддерживаемого соединением vsock между гостевой системой AAOS и хост-системой, обеспечивающей реализацию базовой функции. Их необходимо настроить, указав правильные параметры соединения vsock в качестве свойств поставщика.
Строительная форель
Скомпилируйте пользовательское пространство
Чтобы скомпилировать пользовательское пространство:
- Загрузите исходное дерево Android:
repo init -u https://android.googlesource.com/platform/manifest -b master repo sync -j8
- Создайте среду:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
Сборка ядра
Для trout 1.0 кодовая база ядра предоставляется в AOSP. Ядро trout состоит из того же кода, что и ACK 5.10 основной ветки разработки, с добавлением специфичных для trout модулей для подсистем VirtIO.
- Чтобы клонировать ядро, запустите:
repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
- Чтобы собрать ядро для среды OpenSynergy, запустите:
BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
Согласие
Когда AAOS работает как гостевая виртуальная машина, наша цель — обеспечить совместимое развертывание Android с точки зрения фреймворка. Проблемы на стороне хоста являются компетенцией каждой реализации и выходят за рамки trout 1.0.
В trout 1.0 осталось несколько проблем с CTS. Известно, что следующие модули CTS включают сбои тестов:
| CtsStagedInstallHostTestCases CtsRollbackManagerHostTestCases CtsVideoTestCases CtsHostsideNetworkTests CtsActivityManagerBackgroundActivityTestCases CtsAdbHostTestCases CtsNativeHardwareTestCases CtsContentTestCases CtsCarHostTestCases CtsOsTestCases CtsStatsdHostTestCases CtsVoiceInteractionTestCases CtsViewTestCases CtsCameraTestCases CtsLocationGnssTestCases CtsGraphicsTestCases CtsIncidentHostTestCases CtsInstallHostTestCases CtsNativeVerifiedBootTestCases CtsNetTestCases | CtsWindowManagerDeviceTestCases CtsMediaStressTestCases CtsAppTestCases CtsUsbTests CtsAutoFillServiceTestCases CtsDisplayTestCases CtsMediaTestCases CtsDeqpTestCases CtsDumpsysHostTestCases CtsOpenGLTestCasesCtsLibcoreTestCases CtsSecurityHostTestCases CtsInputMethodTestCases CtsStatsdAtomHostTestCases CtsPermission4TestCases CtsNNAPIBenchmarkTestCases CtsSimpleperfTestCases CtsAccessibilityTestCases CtsAppSecurityHostTestCases CtsKeystoreTestCases |
Известно, что следующие области CTS-V включают сбои тестов:
| Тест запуска автомобиля Тест Bluetooth с низким энергопотреблением (BLE) для рекламодателей Проверка качества потокового видео Тест устройства Bluetooth HID Тест ультразвукового микрофона Hifi Тест Hi-Fi ультразвуковых динамиков | Разблокированное устройство Требуется тест Динамический тест обнаружения датчиков Тест датчика вне тела Тест на значительное движение Тест уведомления о маршрутизации аудиовыхода Проверка сетевого запроса или предложения |
Примечания к выпуску
trout 1.0 содержит следующие известные проблемы:
- Пользовательские сборки
troutнедоступны. Система собрана как-userdebug, что может повлиять на некоторые тесты CTS. - Доступ к TrustZone для Android не поддерживается в
trout1.0. - Проверенная загрузка Android (AVB) не поддерживается.
- Нейронные ускорители не подвергаются воздействию NNAPI у
trout1.0. - Виртуализация Wi-Fi недоступна, а некоторые реализации предлагают ограниченную поддержку туннеля «virtio-net».
- В некоторых случаях передача больших файлов с Android или на Android через Android Debug Bridge (ADB) может привести к зависанию системы.
- В некоторых случаях приложение SMS может перестать синхронизироваться с сопряженным телефоном Bluetooth.
- Внедрение событий VHAL может не работать для некоторых датчиков.
- Серийный номер ADB базовой SoC не перенаправляется на Android в качестве серийного номера ADB гостевой системы.
- В некоторых реализациях Ethernet может быть недоступен хосту для подключения к сети.
Дополнительные сведения см. в примечаниях к выпуску партнеров для вашего конкретного развертывания trout .
Благодаря новому продукту под названием trout Android Automotive (AAOS) теперь поддерживает развертывание в качестве гостевой виртуальной машины (ВМ) в средах, совместимых со стандартом VirtIO . trout основан на виртуальной эталонной платформе Cuttlefish и доступен в конфигурации устройства trout . Исходный код пользовательского пространства можно найти по адресу device/google/trout . В таблице ниже описана технология, используемая для виртуализации каждой из подсистем в trout .
| Особенность | Технологии |
|---|---|
| Аудио контроль HAL | vsock/gRPC |
| Аудио ХАЛ | virtio-snd |
| Bluetooth | virtio-console |
| Свалка HAL | vsock/gRPC |
| Система расширенного обзора (EVS) | virtio-video |
| Режим гаража | vsock/gRPC |
| Графика | virtio-gpu |
| Глобальная навигационная спутниковая система (GNSS) | virtio-console |
| Датчик HAL 2.0 | virtio-scmi and IIO |
| Сенсорный ввод | virtio-input |
| Автомобиль HAL | vsock/gRPC |
Растяжная форель
trout можно использовать в качестве отправной точки для создания новых целей Android в автомобильной информационно-развлекательной системе (IVI). Инфраструктура сборки предназначена для расширения и настройки. Например:
# Inherit trout-arm64 default values and settings
$(call inherit-product, device/google/trout/aosp_trout_arm64.mk)
# Customize HALs as needed
LOCAL_VHAL_PRODUCT_PACKAGE := vendor.oem.vhal@2.0-service
LOCAL_AUDIO_PRODUCT_PACKAGE := vendor.oem.audio@6.0-impl
# Configure SELinux policy
BOARD_SEPOLICY_DIRS += device/oem/car/sepolicy/vendor/oem
# Configure properties
LOCAL_DUMPSTATE_PROPERTIES := \
ro.vendor.dumpstate.server.cid=22 \
ro.vendor.dumpstate.server.port=406 \
ro.vendor.helpersystem.log_loc=/data/dumpstate
[... and more as needed ...]
Несколько HAL Android можно по отдельности заменить пользовательскими реализациями или сохранить реализации по умолчанию, но скорректировать определенные параметры конфигурации, чтобы установить надлежащее взаимодействие между виртуальными машинами в целевой среде. Эти HAL (включая HAL Vehicle, HAL Audio Control и HAL Dumpstate) реализуются с помощью интерфейса gRPC, поддерживаемого соединением vsock между гостевой системой AAOS и хост-системой, обеспечивающей реализацию базовой функции. Их необходимо настроить, указав правильные параметры соединения vsock в качестве свойств поставщика.
Строительная форель
Скомпилируйте пользовательское пространство
Чтобы скомпилировать пользовательское пространство:
- Загрузите исходное дерево Android:
repo init -u https://android.googlesource.com/platform/manifest -b master repo sync -j8
- Создайте среду:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
Сборка ядра
Для trout 1.0 кодовая база ядра предоставляется в AOSP. Ядро trout состоит из того же кода, что и ACK 5.10 основной ветки разработки, с добавлением специфичных для trout модулей для подсистем VirtIO.
- Чтобы клонировать ядро, запустите:
repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
- Чтобы собрать ядро для среды OpenSynergy, запустите:
BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
Согласие
Когда AAOS работает как гостевая виртуальная машина, наша цель — обеспечить совместимое развертывание Android с точки зрения фреймворка. Проблемы на стороне хоста являются компетенцией каждой реализации и выходят за рамки trout 1.0.
В trout 1.0 осталось несколько проблем с CTS. Известно, что следующие модули CTS включают сбои тестов:
| CtsStagedInstallHostTestCases CtsRollbackManagerHostTestCases CtsVideoTestCases CtsHostsideNetworkTests CtsActivityManagerBackgroundActivityTestCases CtsAdbHostTestCases CtsNativeHardwareTestCases CtsContentTestCases CtsCarHostTestCases CtsOsTestCases CtsStatsdHostTestCases CtsVoiceInteractionTestCases CtsViewTestCases CtsCameraTestCases CtsLocationGnssTestCases CtsGraphicsTestCases CtsIncidentHostTestCases CtsInstallHostTestCases CtsNativeVerifiedBootTestCases CtsNetTestCases | CtsWindowManagerDeviceTestCases CtsMediaStressTestCases CtsAppTestCases CtsUsbTests CtsAutoFillServiceTestCases CtsDisplayTestCases CtsMediaTestCases CtsDeqpTestCases CtsDumpsysHostTestCases CtsOpenGLTestCasesCtsLibcoreTestCases CtsSecurityHostTestCases CtsInputMethodTestCases CtsStatsdAtomHostTestCases CtsPermission4TestCases CtsNNAPIBenchmarkTestCases CtsSimpleperfTestCases CtsAccessibilityTestCases CtsAppSecurityHostTestCases CtsKeystoreTestCases |
Известно, что следующие области CTS-V включают сбои тестов:
| Тест запуска автомобиля Тест Bluetooth с низким энергопотреблением (BLE) для рекламодателей Проверка качества потокового видео Тест устройства Bluetooth HID Тест ультразвукового микрофона Hifi Тест Hi-Fi ультразвуковых динамиков | Разблокированное устройство Требуется тест Динамический тест обнаружения датчиков Тест датчика вне тела Тест на значительное движение Тест уведомления о маршрутизации аудиовыхода Проверка сетевого запроса или предложения |
Примечания к выпуску
trout 1.0 содержит следующие известные проблемы:
- Пользовательские сборки
troutнедоступны. Система собрана как-userdebug, что может повлиять на некоторые тесты CTS. - Доступ к TrustZone для Android не поддерживается в
trout1.0. - Проверенная загрузка Android (AVB) не поддерживается.
- Нейронные ускорители не подвергаются воздействию NNAPI у
trout1.0. - Виртуализация Wi-Fi недоступна, а некоторые реализации предлагают ограниченную поддержку туннеля «virtio-net».
- В некоторых случаях передача больших файлов с Android или на Android через Android Debug Bridge (ADB) может привести к зависанию системы.
- В некоторых случаях приложение SMS может перестать синхронизироваться с сопряженным телефоном Bluetooth.
- Внедрение событий VHAL может не работать для некоторых датчиков.
- Серийный номер ADB базовой SoC не перенаправляется на Android в качестве серийного номера ADB гостевой системы.
- В некоторых реализациях Ethernet может быть недоступен хосту для подключения к сети.
Дополнительные сведения см. в примечаниях к выпуску партнеров для вашего конкретного развертывания trout .