DOU Labs: як GlobalLogic допомагає створювати автомобілі майбутнього

У рубриці DOU Labs ми запрошуємо IT-компанії ділитися досвідом власних цікавих розробок і внутрішніх технологічних ініціатив. Питання і заявки на участь надсилайте на editors@dou.ua .

Гучний за останній рік автопілот 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. Це серйозне досягнення, але одночасно тільки початок нашого шляху до цифрового трансформації автомобільної індустрії.

Опубліковано: 23/03/17 @ 08:00
Розділ Різне

Рекомендуємо:

Зростання зарплат з досвідом роботи: аналітика
Частковий редирект для robots.txt для Nginx
Not Only SQL: шукаємо альтернативи реляційних баз
Гід по ІТ-спеціальностями ХНУРЕ
Впали позиції в Яндексі? Як визначити причину і повернути сайт в ТОП