Сучасний світ важко уявити без технологій. Смартфони, «розумні» годинники, побутова техніка, автомобілі, дрони, банківські термінали, медичне обладнання — усі ці пристрої працюють завдяки вбудованим системам. Часто ми навіть не замислюємось, що всередині них приховані маленькі «мізки» — мікроконтролери, які керують усім процесом.
Вбудована система — це комбінація апаратного забезпечення (електроніка) і програмного забезпечення (програма), створена для виконання конкретного завдання, вмонтована в прилад, апарат, машину тощо. На відміну від персонального комп’ютера, який є універсальним пристроєм, вбудована система зазвичай виконує лише одну або кілька чітко визначених функцій.
Вбудовані системи оточують нас майже всюди:
-
Побутова техніка: холодильники, мікрохвильовки, кавоварки.
-
Транспорт: автомобільна електроніка, навігаційні системи, залізничні й авіаційні прилади.
-
Медицина: кардіостимулятори, діагностичні апарати.
-
Промисловість: роботи, датчики, автоматизовані лінії.
-
Розваги: ігрові консолі, «розумні» іграшки.
-
Інтернет речей (IoT): розумний дім, сенсори температури та вологості, системи безпеки.
Головною частиною більшості вбудованих систем є мікроконтролери.
Мікроконтролер(англ. microcontroller unit, MCU) - це міні-комп’ютер, виготовлений у вигляді однієї мікросхеми (чипа), який програмується під виконання простих і конкретних задач. MCU мають обмежені можливості, але малі розміри і високу ефективність енергоспоживання. Зараз на ринку можна знайти дуже багато різних чипів з самими різними характеристиками і цінами. Приклади чипів-мікроконтролерів зображено на рисунку 1.

Мікроконтролер складається з таких компонентів (поєднаних в єдиному чипі):
-
Процесор (CPU) — виконує програмні інструкції.
-
Постійний запам'ятовуючий пристрій (ПЗП, ROM) - використовується для зберігання коду програм і постійних даних.
-
Оперативна пам’ять (ОЗП, RAM) — використовується для зберігання тимчасових даних.
-
GPIO (General Purpose Input/Output) — універсальні виводи (порти) мікроконтролера для підключення датчиків, кнопок, світлодіодів тощо.
-
Аналого-цифровий перетворювач (ADC) — дозволяє зчитувати аналогові сигнали (наприклад, з датчика температури).
-
ШІМ (PWM, Pulse Width Modulation) — широтно-імпульсний модулятор, спосіб керування потужністю або швидкістю (наприклад, для моторів).
Комунікаційні інтерфейси — виводи (порти) взаємодії з зовнішніми пристроями по спеціальним протоколам:
-
UART — простий послідовний інтерфейс, часто використовується для налагодження.
-
SPI — швидкий інтерфейс для зв’язку з модулями (дисплеї, пам’ять).
-
I²C — зручний інтерфейс для підключення кількох датчиків.
I/O порти
Зовнішні пристрої, підключені до мікроконтролера, забезпечують функціональність системи. Вивід, або пін – це один провід на мікроконтролері, який використовується для введення або виведення сигналів інформації. Наприклад, мікроконтролер TM4C123 має 43 виводи введення/виведення. Порт – це набір виводів(пінів). Вхідний порт – це апаратне забезпечення на мікроконтролері, яке дозволяє вводити інформацію про зовнішній світ у комп’ютер. Мікроконтролер також має апаратне забезпечення, яке називається вихідним портом, для надсилання інформації у зовнішній світ.
Інтерфейс визначається як сукупність портів вводу/виводу, зовнішньої електроніки, фізичних пристроїв та програмного забезпечення, які разом дозволяють комп'ютеру взаємодіяти із зовнішнім світом. Прикладом вхідного інтерфейсу є перемикач, де оператор перемикає його, а програмне забезпечення може розпізнати положення перемикача. Прикладом вихідного інтерфейсу є світлодіод (LED), де програмне забезпечення може вмикати та вимикати світло, а оператор може бачити його. Існує широкий спектр можливих входів та виходів, які можуть існувати як у цифровій, так і в аналоговій формі. Загалом, ми можемо класифікувати інтерфейси вводу/виводу на чотири категорії:
- Паралельний — двійкові дані доступні одночасно на групі пінів.
- Послідовний — двійкові дані доступні по одному біту за раз на одному піні.
- Аналоговий — дані кодуються як електрична напруга, струм або потужність.
- Часові — дані кодуються як період, частота, ширина імпульсу або фазовий зсув.
Як приклад вбудованої системи візьмемо апарат точкового зварювання (дивіться світлини нижче). Ця вбудована система має два входи-кнопки для управління і налаштування роботи апарата, вихід великої потужності - зварювальні електроди, екран і порти для зарядки акумулятора. Програмне забезпечення, яке визначає його дуже специфічне призначення, запрограмовано в ПЗП мікроконтролера.




Як було визначено раніше, мікроконтролер – це невеликий комп'ютер. Зазвичай термін "вбудований" стосується систем, які скриті і використовуються не так як типовий комп'ютер. Більшість вбудованих систем не мають клавіатури, графічного дисплея або сховища даних (диска).
Існує два основних підходу до розробки вбудованої системи. Перший метод - використовувати "слабкий" мікроконтролер, операційної системи немає, тому розробляється вся програмна система. Такі пристрої підходять для дешевих, малопродуктивних систем. З іншого боку, можна розробити високопродуктивну вбудовану систему на основі потужного мікроконтролера. Такі системи зазвичай використовують операційну систему та спочатку проектуються на спеціальній платформі для розробки, а потім програмне та апаратне забезпечення переносяться на окрему вбудовану платформу.
Інша загальна концепція, що застосовується до більшості вбудованих систем, полягає в тому, що вони працюють у реальному часі. У комп'ютерній системі реального часу нам необхідно встановлювати верхню межу часу, необхідного для виконання кожного циклу введення-обчислення-вивід. Система реального часу має гарантувати найгіршу верхню межу часу відгуку між моментом, коли нова вхідна інформація стає доступною, і моментом, коли ця інформація оброблюється. Цей час відгуку називається затримкою інтерфейсу. Ще однією вимогою до роботи в реальному часі, яка існує в багатьох вбудованих системах, є виконання періодичних завдань. Періодичне завдання - це завдання, яке має виконуватися через рівні інтервали часу. Система реального часу має забезпечувати мінімальну часову похибку між моментом, коли завдання має бути виконано, і моментом його фактичного виконання. Через природу реального часу цих систем, мікроконтролери мають багатий набір функцій для обробки багатьох аспектів часу.
У вбудованій системі програмне забезпечення зазвичай програмується в ПЗП і тому фіксується. Незважаючи на це, обслуговування програмного забезпечення (наприклад, перевірка правильної роботи, оновлення, виправлення помилок, додавання функцій, конфігурації кінцевого користувача) все ще надзвичайно важливе. Фактично, оскільки мікроконтролери використовуються в багатьох критично важливих для безпеки пристроях, травми або смерть можуть статися, якщо є апаратні та/або програмні збої. Отже, тестування необхідно виконувати і під час розробки проміжних компонентів і в кінцевому продукті. Роль моделювання стає все більш важливою на сучасному ринку, оскільки ми прагнемо створювати все кращі машини з все коротшими циклами проектування. Ефективний підхід до побудови вбудованих систем полягає в тому, щоб спочатку проектують систему за допомогою апаратного/програмного симулятора, а потім завантажують та тестують систему на реальному мікроконтролері.