Благодаря новому продукту под названием trout , Android Automotive (AAOS) теперь поддерживает развертывание в качестве гостевой виртуальной машины (ВМ) в средах, совместимых со стандартом VirtIO . trout основан на виртуальной эталонной платформе Cuttlefish и доступен в виде конфигурации устройства trout . Исходный код пользовательского пространства можно найти по адресу device/google/trout . В таблице ниже описана технология, используемая для виртуализации каждой из подсистем в trout .
| Особенность | Технологии |
|---|---|
| Управление звуком HAL | vsock/gRPC |
| Аудио HAL | virtio-snd |
| Bluetooth | virtio-console |
| Dumpstate HAL | vsock/gRPC |
| Система расширенного обзора (EVS) | virtio-video |
| Режим гаража | vsock/gRPC |
| Графика | virtio-gpu |
| Глобальная навигационная спутниковая система (GNSS) | virtio-console |
| Sensor 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 ...]
Некоторые Android HAL можно заменить пользовательскими реализациями, либо сохранить реализации по умолчанию, но скорректировать определенные параметры конфигурации для обеспечения корректной связи между виртуальными машинами в целевой среде. Эти HAL (включая Vehicle HAL, Audio Control HAL и Dumpstate HAL) реализованы с помощью интерфейса gRPC, поддерживаемого соединением vsock между гостевой системой AAOS и хост-системой, предоставляющей базовую реализацию функций. Их необходимо настроить, указав соответствующие параметры соединения vsock в качестве свойств поставщика. Исходный код служит эталоном того, какие свойства доступны для настройки и какова их семантика.
Выращивать форель
Скомпилируйте пользовательское пространство.
Для компиляции пользовательского пространства:
- Загрузите исходный код Android:
repo init -u https://android.googlesource.com/platform/manifest -b main repo sync -j8
- Создайте среду:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
Собрать ядро
Для trout 1.1 исходный код ядра предоставлен в AOSP. Ядро trout состоит из того же кода, что и исходный код ACK 5.10, с добавлением модулей, специфичных для trout для подсистем VirtIO.
- Для клонирования ядра выполните следующую команду:
repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
- Для сборки ядра выполните:
BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
У вашего поставщика гипервизора может потребоваться другая конфигурация ядра или дополнительные модули для компиляции. Обязательно следуйте этим конкретным инструкциям, если они предоставлены.
Согласие
Когда AAOS запускается в качестве гостевой виртуальной машины, наша цель — обеспечить совместимость развертывания Android с точки зрения фреймворка. Вопросы, касающиеся хост-системы, являются прерогативой каждой отдельной реализации и выходят за рамки trout 1.1.
Мы не проводили дополнительную проверку xTS в версии trout 1.1. Продолжайте обращаться к обсуждению поддержки CTS в 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 Low Energy (BLE) Верификатор качества потокового видео Тестирование устройства Bluetooth HID Тест ультразвукового микрофона Hi-Fi Тестирование высококачественных ультразвуковых динамиков Hi-Fi | Требуется тест "Разблокированное устройство". Тест динамического обнаружения датчиков Тест датчика, расположенного вне кузова Тест на значительное движение Тест уведомления о маршрутизации аудиовыхода Тест запроса или предложения от сети |
Примечания к выпуску
В trout 1.1 обнаружены следующие известные проблемы:
- Пользовательские сборки
troutнедоступны. Система собирается с параметром-userdebug, что может повлиять на некоторые тесты CTS. - Технология Android Verified Boot (AVB) не поддерживается.
- Некоторые подсистемы Android могут быть недоступны, включая Secure World и NNHAL.
- Доступ к гостевой сети обычно обеспечивается с помощью виртуализированного адаптера Wi-Fi и туннеля
virtio-net. Подключение на стороне хоста зависит от конкретной конфигурации вашего гипервизора. - В некоторых вариантах реализации возможности Bluetooth могут быть ограничены или отсутствовать вовсе.
- Внедрение событий VHAL может не работать для некоторых датчиков.
- При высоких нагрузках могут возникать сбои в воспроизведении звука.
- В некоторых вариантах выполнения команда `adb reboot` для гостевой системы AAOS может перезагрузить всю систему.
- STS может вызывать нестабильность системы и требовать перезагрузки.
Для получения более подробной информации обратитесь к примечаниям к выпуску партнерской версии для вашей конкретной конфигурации trout .