DOU Labs: как GlobalLogic помогает создавать автомобили будущего

В рубрике DOU Labs мы приглашаем IT-компании делиться опытом собственных интересных разработок и внутренних технологических инициатив. Вопросы и заявки на участие присылайте на  Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра. .

Нашумевший за последний год автопилот Tesla и стремительный бум электрокаров — далеко не единственная причина всеобщего внимания к автомобильной индустрии. Традиционные производители авто также держат высокий темп в сфере инноваций и из года в год только увеличивают инвестиции в R&D и разработку ПО. Простой пример: в программном обеспечении современного high-end-автомобиля более 100 миллионов строк кода! Для сравнения в Boeing 787 «всего» чуть более 15 миллионов, а весь Facebook (вместе с back-end) помещается в 60+ миллионов строк кода. Еще больше удивительных открытий вас ждет в инфографике по ссылке, но речь сейчас не об этом.

Перспективность инноваций в автопроме — причина, по которой многие сервисные IT-компании, в том числе в Украине, стремятся войти на этот рынок. Их цель — предоставлять свои услуги по разработке ПО для известных автобрендов или компаний, которые что-то для этих автобрендов делают. GlobalLogic не исключение. Но мы пошли еще дальше, создав собственное программное решение, которое уже через несколько лет появится во многих современных автомобилях ведущих европейских и американских производителей. Речь идет о платформе Nautilus, которая служит для создания развлекательно-информационной системы современного авто (так называемая infotainment-система).

Какую проблему мы пытаемся решить? Владельцы современных планшетов и смартфонов уже имеют определенный пользовательский опыт и привычки потребления мультимедиа, использования навигации, поиска разнообразной информации и т. п. Точно такие же богатые возможности они хотят видеть в своем автомобиле, которые чем дальше, тем больше ассоциируется у нас с пользовательской электроникой, а не со средством передвижения.

Смартфон на колесах

На практике «засунуть смартфон в автомобиль» не так уж просто. Ведь все автомобильные системы должны соответствовать строгим нормативам надежности и безопасности. Если операционная система вашего авто неожиданно зависает и уходит в перезагрузку, это может плохо кончиться для водителя и его пассажиров. Чтобы этого не произошло, автомобильные системы перед выходом на рынок тщательно тестируются, вот почему разработка таких решений занимает, как правило, 4-7 лет. За это время iOS и Android успевают обновиться уже много раз.

Платформа Nautilus — наше решение этой проблемы и возможность достаточно быстро создавать современные infotainment-системы для авто без угрозы надежности и безопасности. Суть решения в виртуализации на одном автомобильном компьютере двух операционных систем: автомобильной RTOS (например, Automotive Grade Linux) для управления всеми критически-важными функциями машины и Android — для построения информационно-развлекательной системы. Гибридная архитектура позволяет обезопасить критически важные функции автомобиля (CAN/MOST автомобильные сервисы, driver assistance и т.п.) от возможных сбоев Android (мультимедийные сервисы, навигация, облачные сервисы и сторонние приложения) и использовать вычислительные ресурсы автомобильного оборудования наиболее оптимальным образом.

От идеи к ее воплощению

Идея реализовать собственную систему виртуализации родилась в подразделении GlobalLogic, которое занимается embedded — встраиваемыми системами. Анализируя доступные на рынке решения, наши инженеры пришли к выводу, что наиболее эффективным будет развитие системы, построенной на продукте с открытым кодом (open source). Вариантов было несколько, но наш выбор пал на гипервизор Xen, который имеет уже достаточно долгую историю успешного применения в разных областях, например, data-центарах. Требования к надежности и безопасности последних никак не меньше требованиям к авто.

Xen, как opensource-продукт, позволил нам сконцентрироваться на решении новых необходимых конкретно автомобильной промышленности задач, а не реализовывать заново давно известные решения. Около 2-х лет понадобилось нашим инженерам, чтобы привнести и адаптировать лучшие решения виртуализации в Nautilus.

Как видно из схемы, первым на аппаратной платформе (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 был модифицирован таким образом, чтобы водитель мог использовать все мультимедийные сервисы уже через 5-7 секунд после подачи питания. Критически важные функции, как например, камера заднего вида запускается и того быстрее — уже за 1-2 секунды после начала загрузки системы, также оптимизировано время переключения между пользовательскими приложениями и камерой — все происходит в пределах десятых долей секунды.

При этом 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. Это серьезное достижение, но одновременно только начало нашего пути к цифровой трансформации автомобильной индустрии.

Похожие статьи:
Коли Ruby-розробниця Ірина Заяць починала перекладати дитячу книжку з програмування, навіть не уявляла, що на неї чекає. Робота, з якою...
Уважаемые читатели! Сегодня предлагаем вам обсудить тему беспроводных зарядок для смартфонов и планшетов.Есть ли разница между...
The big day has arrived when you will be moving home. It is a stressful occasion, so you may be worried about what to expect on the day of your move. Here’s how your moving day might unfold, with thanks to Mod24, who...
Компания Gionee сообщила о том, что она совместно с Foxconn и Dixon займется производством устройств в Индии. Данная компания...
За даними DOU, кількість кандидатів серед QA-фахівців рівня Middle та Senior стрімко зростає. У вересні цього року на одну...
Яндекс.Метрика