В рубрике DOU Labsмы приглашаем IT-компании делиться опытом собственных интересных разработок и внутренних технологических инициатив. Вопросы и заявки на участие присылайте на editors@dou.ua.
Нашумевший за последний год автопилот Tesla и стремительный бум электрокаров — далеко не единственная причина всеобщего внимания к автомобильной индустрии. Традиционные производители авто также держат высокий темп в сфере инноваций и из года в год только увеличивают инвестиции в R&D и разработку ПО. Простой пример: в программном обеспечении современного high-end-автомобиля более 100 миллионов строк кода! Для сравнения в Boeing 787 «всего» чуть более 15 миллионов, а весь Facebook (вместе с back-end) помещается в 60+ миллионов строк кода. Еще больше удивительных открытий вас ждет в инфографике по ссылке, но речь сейчас не об этом.
Перспективность инноваций в автопроме — причина, по которой многие сервисные IT-компании, в том числе в Украине, стремятся войти на этот рынок. Их цель — предоставлять свои услуги по разработке ПО для известных автобрендов или компаний, которые что-то для этих автобрендов делают. GlobalLogic не исключение. Но мы пошли еще дальше, создав собственное программное решение, которое уже через несколько лет появится во многих современных автомобилях ведущих европейских и американских производителей. Речь идет о платформе Nautilus, которая служит для создания развлекательно-информационной системы современного авто (так называемая infotainment-система).
Какую проблему мы пытаемся решить? Владельцы современных планшетов и смартфонов уже имеют определенный пользовательский опыт и привычки потребления мультимедиа, использования навигации, поиска разнообразной информации и т. п. Точно такие же богатые возможности они хотят видеть в своем автомобиле, которые чем дальше, тем больше ассоциируется у нас с пользовательской электроникой, а не со средством передвижения.
Смартфон на колесах
На практике «засунуть смартфон в автомобиль» не так уж просто. Ведь все автомобильные системы должны соответствовать строгим нормативам надежности и безопасности. Если операционная система вашего авто неожиданно зависает и уходит в перезагрузку, это может плохо кончиться для водителя и его пассажиров. Чтобы этого не произошло, автомобильные системы перед выходом на рынок тщательно тестируются, вот почему разработка таких решений занимает, как правило,
Платформа Nautilus — наше решение этой проблемы и возможность достаточно быстро создавать современные infotainment-системы для авто без угрозы надежности и безопасности. Суть решения в виртуализации на одном автомобильном компьютере двух операционных систем: автомобильной RTOS (например, Automotive Grade Linux) для управления всеми критически-важными функциями машины и Android — для построения информационно-развлекательной системы. Гибридная архитектура позволяет обезопасить критически важные функции автомобиля (CAN/MOST автомобильные сервисы, driver assistance и т.п.) от возможных сбоев Android (мультимедийные сервисы, навигация, облачные сервисы и сторонние приложения) и использовать вычислительные ресурсы автомобильного оборудования наиболее оптимальным образом.
От идеи к ее воплощению
Идея реализовать собственную систему виртуализации родилась в подразделении GlobalLogic, которое занимается embedded — встраиваемыми системами. Анализируя доступные на рынке решения, наши инженеры пришли к выводу, что наиболее эффективным будет развитие системы, построенной на продукте с открытым кодом (open source). Вариантов было несколько, но наш выбор пал на гипервизор Xen, который имеет уже достаточно долгую историю успешного применения в разных областях, например, data-центарах. Требования к надежности и безопасности последних никак не меньше требованиям к авто.
Xen, как opensource-продукт, позволил нам сконцентрироваться на решении новых необходимых конкретно автомобильной промышленности задач, а не реализовывать заново давно известные решения. Около
Как видно из схемы, первым на аппаратной платформе (SoC или System-on-Chip) запускается Xen, в котором виртуализируются два домена — один для Linux (или любой другой автомобильной RTOS), второй — для Android. Каждая система ответственна за свой набор сервисов и задач, которые никак не пересекаются.
Под капотом у Nautilus
Среди множества требований, предъявляемых к системам виртуализации, наиболее важные для embedded-систем — производительность и расширяемость, то есть добавление новых возможностей. Проанализировав Xen как возможную базовую платформу, наши инженеры приняли решение сделать основной акцент в Nautilus на виртуализации драйверов устройств (audio, USB и т. п.) и сопроцессоров, как наиболее востребованную функциональность в современном автомобиле.
Одной из самых непростых задач была виртуализация графической подсистемы — GPU. В действительности, существует много подходов к решению этой задачи, но в своем большинстве они не позволяют получить одновременно производительное, надежное, отказоустойчивое, изолированное от внешней среды и способное к распараллеливанию решение.
В подавляющем большинстве случаев, даже если вы запускаете на автомобильном компьютере несколько виртуальных машин, каждая из них будет напрямую взаимодействовать с программным обеспечением (firmware или прошивками) графического сопроцессора, отправляя туда определенные команды и получая какой-то результат. Если в случае отправки неверной команды графическая подсистема выйдет из строя и уйдет в перезагрузку, какое-то время она будет недоступна ни для одной из виртуальных машин.
Мы придумали, как решить эту проблему, осознав, что вместо взаимодействия с реальным графическим сопроцессором, каждая виртуальная машина должна работать со своей собственной прошивкой для GPU. Если виртуальной машине № 1 нужно отработать какой-то графический запрос, она загружает в GPU свою версию прошивки, выполняет запрос и «выгружается», освободив ресурс графического сопроцессора для другой виртуальной машины. Такой цикл повторяется каждый раз, когда одной из виртуальных машин нужен ресурс GPU.
Xen сохраняет все состояния прошивок GPU в специальном виртуальном драйвере. Поэтому каждая виртуальная машина начинает работать с прошивкой графической подсистемы с того состояния, в котором она закончила делать это в последний раз. Таким образом, сессия каждой виртуальной машины изолирована и не подвержена влиянию другой виртуальной машины, даже если последняя вызвала в своей прошивке GPU какой-то серьезный сбой. Подобный подход очень повышает надежность графической подсистемы в виртуализированном пространстве и практически не сказывается на ее производительности (в нашем случае падение составило всего 5%). Для этого нам понадобилось существенно оптимизировать использование аппаратных ресурсов в ядре модуля и рационально управлять ими посредством Xen (подробнее о виртуализации GPU — в этой статье).
Еще одна важная особенность решения — использование Automotive Grade Android (AGA) в качестве основной системы для infotainment. Это адаптация Android под нужды автомобильной индустрии, призванная увеличить надежность и стабильность системы.
Например, обычное время загрузки Android — около 40 секунд. Это не критично для мобильного устройства, которое выключается или перезагружается редко. Но, повернув ключ в замке зажигания автомобиля, водитель, как правило, хочет немедленно ехать, а не ждать загрузки навигации и мультимедиа. Именно поэтому AGA был модифицирован таким образом, чтобы водитель мог использовать все мультимедийные сервисы уже через
При этом AGA обеспечивает все стандартные мультимедийные возможности Android — поддержку Bluetooth, Miracast, MirrorLink и Wireless Hotspots. Пользователи могут через облако получать данные о работе автомобиля, управлять многими функциями авто через смартфон, передавать контент со своего смартфона на экран автомобиля и т.п. Платформа также содержит дополнительные компоненты на основе различных мультимедийных сервисов, используя UPnP/DLNA, Audio/Video Playback и Radio. Таким образом, пользователь получает самые разные привычные ему возможности для мультимедийных развлечений в автомобиле.
Nautilus, который изменил нас всех
Как часто бывает в разработке программного обеспечения, новые проекты и новые продукты позволяют приобрести новые навыки, посмотреть на разработку программного обеспечения под другим углом, открыть новые горизонты. Nautilus стал знаковым для компании, он помог сформировать команду профессионалов, заинтересованных в инновациях и готовых реализовывать технически непростые, но интересные решения. Также благодаря Nautilus компания смогла построить партнерские отношения с ведущими отраслевыми ассоциациями, например, Linux Foundation и GENIVI Alliance, производителями автомобилей и автомобильных комплектующих, чтобы в тесном сотрудничестве с партнерами и потенциальными клиентами создавать востребованные для индустрии решения.
В течение нескольких лет мы демонстрировали наш прогресс с Nautlius на ключевых международных выставках, например, CES, а также на многочисленных конференциях. На CES 2017 мы продемонстрировали поддержку Android N и дополнительной автомобильной SoC-платформы. При этом мы неизменно получали положительные отзывы от ведущих игроков рынка. Это большое достижение, потому что до недавнего времени в автомобильной индустрии идея виртуализации особой популярностью не пользовалась. Теперь же у нас есть готовое решение виртуализации на архитектуре ARM, которая фактически становится стандартом в автомобильной индустрии и, по большому счету, все решения для индустрии соревнуются в качестве поддержки именно этой платформы.
Мультимедийная система автомобиля на стенде Texas Instruments (на выставке CES 2017) построена на платформе Nautilus
Мы планируем дальнейшее развитие проекта и реализацию многочисленных новых возможностей, чтобы ускорить появление на рынке таких многообещающих концепций как Connected Car, Autonomous Car и др.
В завершение статьи хочу поделиться с вами новостью, что уже в 2018 году с конвейеров одного из ведущих автопроизводителей сойдут автомобили, мультимедийная система которых построена на платформе Nautilus. Это серьезное достижение, но одновременно только начало нашего пути к цифровой трансформации автомобильной индустрии.