Основи Embedded: для чого потрібні вбудовані технології, куди рухається індустрія і чому Embedded — це не складно
Всім привіт! Мене звати Андрій Неборак, я Senior Embedded Developer у GlobalLogic. Маю 15 років комерційного досвіду — закінчив університет і вирішив не затягувати з цією справою :)
Моя цікавість до цього напряму закладалась поступово. Спочатку гурток програмування в Будинку дитячої творчості, де вивчали мову програмування BASIC, але «справжній» комп’ютер був тільки у викладача. А учні працювали за радянським компʼютерами, в якому сам комп’ютер та клавіатура є одним цілим, з вшитим інтерпретатором мови програмування та чорно-білими моніторами. Згодом переключився на радіогурток, який відвідував до самого завершення школи.
Вступав у Кременчуцький політехнічний університет на спеціальність «Системи керування і автоматика», яка охоплює одразу три напрямки: комп’ютерне програмування, програмування мікроконтролерів та електроніка. Ще прихвалювали, що такі спеціалісти будуть затребувані місцевими заводами. На жаль, тоді інших перспектив не було, та, на щастя, часи саме тоді почали змінюватися на краще.
Останні роки я спеціаліст у напрямі розробки програмного забезпечення для тестування пристроїв під час розробки. Коли ми маємо якийсь пристрій, можемо писати для нього тести ще від самого початку, які будуть запускатися на кожен коміт. Таким чином ми можемо перевіряти якість кожної виконаної задачі та чітко відстежувати, в який момент щось пішло не так. Моя спеціалізація — це мова С для мікроконтролерів, а також Python для другорядних задач. Також я автор курсу CAN Bus і є ментором для Trainee, підтримую їх протягом періоду адаптації.
🙌
Саме для молодших спеціалістів я хочу розповісти «базу з баз» про Embedded у цій статті: де ми зустрічаємось із вбудованими технологіями в повсякденному житті, який їх вплив і куди рухається індустрія. А також зупинимось на тому, чому Embedded — це не так складно, як здається, завдяки стабільності й внеску виробників мікрочіпів.
Що таке Embedded
Embedded — це поєднання мікропрограми та мікропроцесора або мікроконтролера разом, вбудоване в якийсь пристрій, який раніше його не мав. Як приклад може бути пральна машина. Раніше всі наші батьки, бабусі могли користуватися також пральними машинами без мікроконтролерів, але мікроконтролери допомогли додати певні опції, які не можна було реалізувати з попередніми підходами. Власне, такий приклад Embedded — це мікроконтролер плюс вбудований мікрокод.
Для чого потрібен Embedded у повсякденному житті
- Зменшення споживання ресурсу (економія коштів, часу, виробничих потужностей тощо), а також негативного впливу на природу.
- Підвищення продуктивності людини.
- Розширення можливостей для дослідження та аналітики даних.
- Запобігання аваріям.
- Автономність.
Куди рухається Embedded
Розвиток Embedded є повільним через те, що застосовані технології радше покращуються, ніж докорінно змінюються, але про це поговоримо трішки згодом. Які ключові напрями індустрії зараз:
Здешевлення продуктів, в які будуть вбудовані технології
Один із прикладів такої роботи цього напрямку — це системи без датчиків або непрямих вимірювань. Менше датчиків, простіше прилад, простіше його виготовляти й він надійніше працює. Це впливає на вартість на поличці в магазині та знижує втрати при гарантійному обслуговуванні. Крім того, є ситуації коли сам датчик досить важко встановити. Причинами можуть бути конструктивні обмеження, високі температури, забруднення пилом або металевою стружкою.
Наприклад, у пристрої є двигун, мотор якого має обертатися з певною стабільною швидкістю. Щоб її підтримувати, треба знати поточне значення. Для цього можна встановити датчик обертів. Але інженери помітили, що при роботі двигуна струм має сплески, кількість яких пропорційна кількості обертів. Ось і мінус потреба в додатковому датчику.
Збільшення ККД роботи пристрою
Думаю, що термін ККД багато хто пов’язує з енергетикою: котли та генератори. В цій галузі кожен відсоток ККД є додатковою економією. Останні декілька років нам довелося познайомитися з таким штуками, як інвертори та зарядні станції. ККД визначає автономність нашого житла, майже все інше — перетворюється на тепло, яке треба відвести вентиляторами. Саме тому можна побачити відгуки, що пристрій повністю безшумний (з пасивним охолодженням), має адаптивне регулювання залежно від навантаження або шумить постійно. Думаю, за змоги покупець обере додому менш шумну версію, що дасть перевагу перед конкурентами.
Безпека
Мабуть, багато хто чув про можливості дистанційного блокування мобільного пристрою. Завдяки цій функції зменшується вірогідність його викрадення з метою перепродажу персональних даних. Деякі бізнес-моделі побудовані з розрахунком на те, що покупець отримує пристрій за вартістю, меншою за собівартість. Але бізнес заробить на розхідних матеріалах і зробить все, щоб інші матеріали або запчастини не були сумісні. Тому і додається шифрування в комунікації між блоками, захист даних в пристроях зберігання даних та інше. Особливо вразливий до крадіжок прокатний сегмент — електросамокати, автомобілі, професійний будівельний інструмент тощо.
Спеціалізоване навчання
ЗАЕС є найбільшою в Європі, але мало хто знає, що вона має навчально-тренувальний центр, де атомники з усієї країни могли тренуватися в роботі з віртуальним реактором без ризику катастрофи. Вгадайте, хто збирає дані про положення важелів і перемикачів, і рухає стрілки вимірювальних приладів віртуального реактора?
Другий напрям застосування Embedded в навчанні — пілотування повітряних суден. Авіація це завжди дорого і небезпечно. Робочий стаж вимірюють не роками, а годинами нальоту. Від пілотів вимагається миттєва реакція на нештатні ситуації, ціна помилки дуже велика. Окрім того, в нашій країні пілоти зобов’язані щорічно проходити тренажерну підготовку, де в польоті вимикаються двигуни, стаються пожежі або раптово затягується хмарами літовище. До появи авіаційних симуляторів деякі навчальні вправи виконували на реальних повітряних суднах під наглядом професійних інструкторів. Симулятори змогли розширити перелік тренувань, здешевити їх та зробити більш безпечними.
Чому Embedded — це не так складно, як здається
Потрапляючи в Embedded, потрошку вивчаючи, напрацьовуючи якісь базові знання, ми маємо розуміння, що ці технології не будуть змінюватися досить жваво. Ми не будемо за пів року викинуті з ринку праці, тому що наші технології застаріли. Всі основи були придумані давно й досі залишаються актуальними. Простими словами:
- Фундаментальні знання з фізики вже всі відомі з
XVIII-XIX ст. До теперішнього часу вони трішки оточуються, робляться нові відкриття в області напівпровідників, але загалом тут більше роботи за самими виробниками напівпровідників. - Алгоритми та протоколи лишаються актуальними: TCP/IP, Modbus, CAN, I2C, USB. Звісно, вони розвинулися відносно свого початкового вигляду, але новіші версії застосовуються лише там, де є в тому потреба. Для прикладу, перший серійний автомобіль з CAN-шиною було виготовлено у 1991 році, але він досі в тому ж самому вигляді масово використовується в автомобільній індустрії.
- Щоб використовувати щось нове, за нього прийдеться заплатити — тому компанії неохоче змінюють свої розробки. Це стосується, наприклад, кожного використання інтерфейсів. За USB досі платять, за SD-карти компанія збирає royalty за кожне використання розʼєму SD (SD, microSD, miniSD). Тут з’являється маленьке пояснення, чому iPhone досить довго використовував Lightning, а не Type-C. Тому що для того, щоб приключитись на нього, треба комусь заплатити.
Окрема причина, чому Embedded — не так страшно, як може здаватись на перший погляд, це великий внесок виробників мікрочіпів. Вони значно спрощують задачу спеціалістам у вбудованих технологіях, зокрема:
- Випускають оціночні комплекти. І що дешевше вони коштують, то більш масово буде вивчатися новий мікроконтролер. Свого часу компанія ST випустила демонстраційну плату STM32VLDISCOVERY, що містила Cortex-m3 чіп та програматор/налагоджувач на одній платі, та коштувала всього лише 10$. Думаю, це і принесло таку популярність мікроконтролерам STM32.
- Випускають безплатні версії програми забезпечення.
- Спрощують використання складних технологій. супорт такими платами, бібліотеками, прикладами, кількість яких для кожного чіпа дуже велика. Тут би хотів нагадати про появу ESP8266, який максимально спростив підключення для безпровідних мереж. Завдяки цьому, своєю чергою, з’явився фреймворк ESPHome.
- Новіші мікроконтролери — це нащадки старіших. Насправді жодне серійне виробництво Embedded-пристроїв не хоче зіткнутися з проблемою зняття чіпу з виробництва. Це зупинка виробництва, розробка з новим чіпом, тестування/сертифікація. Тому виробники чіпів стараються запроваджувати нові моделі як трохи розширену версію попереднього покоління: прискорюючи, додаючи новий функціонал і часто здешевлюючи вартість чіпа.
Новий функціонал, мінімальна кількість коду необхідна для адаптації в існуючий прострій і зниження вартості мотивує виробників також поступово оновлювати чипи. В усій цій схемі є досить приємна штука для розробників-новачків. Якщо вивчити роботу таймера, портів та комунікаційних модулів на чіпах, яким вже
Задачі, з якими ви зіткнетесь, потрапивши на проєкт як Embedded-розробник
Розробка ПЗ
Найбільша частина роботи на проєкті може містити документування, написання Unit-тестів, наскрізне тестування та інше.
Проєктування
Звісно, перед стартом роботи вже має бути якийсь проєкт. Але часто буває так, що вже під час розробки дуже бажано мати додаткові функції у пристрої. Це можуть бути:
- додаткові можливості логування;
- потреба використовувати не послідовний інтерфейс, а USB, бо він швидший,
- можливість писати вивід пристрою на зовнішній накопичувач під час довготривалого тестування тощо.
Крім того, сам бізнес може принести додаткові вимоги, бо у конкурентів ця функція також планується. Тут інженер-новачок може бути залучений на перевірці концепту та виконувати розробку навіть не з цільовим мікроконтролером, а взяти, наприклад, знайому плату з STM32 і працювати з нею.
Автоматизація
В автоматизацію входять усі процеси, пов’язані з рутиною, і з яких можна виключити людину:
- Автоматичні тести — що частіше запускаються тести, то раніше буде знайдено помилку.
- Шифрування — допомагає значно ускладнити реверс-інженерінг пристрою.
- Конвертування зображень — певну нішеву роботу завжди краще довірити дизайнеру, аніж малювати самому. Він зробить гарно, з тінями й можливістю анімації. Але проблема в тому, що таке зображення не можна напряму вивести на дисплей пристрою, бо воно потребує перекодування в зрозумілий для дисплею формат. Звісно, мікроконтролер також вміє таке робити, але краще і з нього зняти рутину і довірити конвертеру, щоб зробити бінарний образ готовим до виводу на дисплей.
- Інтеграція додаткових файлів в «прошивку» — наприклад, копіювання файлів вебінтерфейсу на внутрішню пам’ять або напряму в образ мікропрограми.
Супутня програма забезпечення
Дуже добре, коли кожною справою займається окремий професіонал і десктопний клієнт, а мобільний застосунок або вебінтерфейс розробляє окрема команда. Але на етапі розробки програми мікроконтролера виникає ситуація, коли варто мати якусь просту програму на комп’ютері, яка могла б надіслати запит в пристрій та відобразити результат, що дасть змогу розробниками не зупинятися в розробці.
Не менш важливо мати під рукою пристрій з мікроконтролером, який може симулювати сигнал певного датчика, поки останній рухається до команди логістичними шляхами, і, таким чином, не відхиляти розробку від графіку. Окрім того, такий «симульований датчик» дає можливість згенерувати сигнали, що не відповідають нормальній роботі. Так можна перевірити реакцію пристрою на позаштатні ситуації.
Тож Embedded стоїть за мільйонами приладів, які ми щодня використовуємо в побуті, роботі, дослідництві, виробництві — від пральних машин і пилососів до тренажерів для пілотів і VR/AR-симуляторів. Розширення функціоналу девайсів прямо залежить від того, як змінюються та вдосконалюються вбудовані технології. За прогнозами, ринок вбудованих систем зросте з $95 млрд у 2022 до $162 млрд у 2030.
Висновок
Отже, роботи в Embedded-спеціалістів точно не меншає. При цьому ми бачимо, що сам по собі Embedded побудований на законах, алгоритмах, протоколах і чіпах, які вже давно відомі та знайомі.
У підсумку: всім тим, хто бачить свій шлях в Embedded, раджу робити акцент на мові програмування C, опановувати такі супутні технології як GIT та інші. Другий аспект, але, напевно, не менш важливий — це досвід людини роботи з мікроконтролером. Навіть просто щось зібрати на Arduino і запустити його, скомпілювати, завантажити програму і впевнитися, що вона працює — це вже круто. Адже в людини з’являється знання про те, як воно завантажується, зберігається, що там є якісь обмеження за розміром, проблеми й таке інше. Тому не бійтеся втілювати свої РОС-проєкти — це стане потужним плюсом у резюме в майбутньому.
51 коментар
Додати коментар Підписатись на коментаріВідписатись від коментарів