Вбудоване програмне забезпечення
Вбудоване програмне забезпечення (англ. embedded software) — це комп'ютерне програмне забезпечення, написане для керування машинами або пристроями, відоме як вбудовані системи. Цей термін іноді використовується як взаємозамінний з терміном мікропрограмне забезпечення.[1]
Особливістю вбудованого програмного забезпечення є те, що більшістю його функцій можна керувати виключно за допомогою машинного інтерфейсу, а не через інтерфейс користувача.
Наприклад, виробники використовують вбудоване програмне забезпечення в електроніці автомобілів, телефонів, модемів, роботів, іграшок, систем безпеки, кардіостимуляторів, телевізорів і телеприставок, а також цифрових годинників. Це програмне забезпечення може бути дуже простим. Наприклад, керування освітленням, що працює на 8-розрядному мікроконтролері з кількома кілобайтами пам'яті з відповідним рівнем складності обробки, визначеним за допомогою системи Probably Approximately Correct Computation[2] (методологія, заснована на увипадковлених алгоритмах). Однак вбудоване програмне забезпечення може мати і складну побудову у таких програмах, як маршрутизатори, елементи оптичної мережі, літаки, ракети та системи керування процесами.[3]
На відміну від стандартних комп'ютерів, які зазвичай використовують операційні системи, такі як macOS, Windows або Linux, вбудоване програмне забезпечення може не використовувати операційну систему. Код для вбудованого програмного забезпечення зазвичай пишеться на C або C++, але різні мови програмування високого рівня, такі як Java, Python і JavaScript, зараз також широко застосовуються у мікроконтролерах та вбудованих системах.[4] Мови асемблера також часто використовуються, особливо при завантаженні та обробці переривань. Ada використовується в деяких військових та авіаційних проєктах.
Більшість споживачів знайомі з програмним забезпеченням, яке відповідає за функціональність на комп'ютері. Однак вбудоване програмне забезпечення часто менш помітне, але не менш складне. На відміну від прикладного програмного забезпечення, вбудоване програмне забезпечення має фіксовані вимоги до обладнання та можливості, а додавання стороннього апаратного або програмного забезпечення жорстко контролюється.
Вбудоване програмне забезпечення має включати всі необхідні драйвери пристроїв під час виготовлення, а драйвери пристроїв написані для різних апаратних пристроїв. Ці драйвери пристроїв, які називаються BSP (пакет підтримки плат), утворюють рівень програмного забезпечення, що містить драйвери, специфічні для обладнання та інші підпрограми, які дозволяють конкретній операційній системі (традиційно операційній системі реального часу або RTOS) функціонувати в певному апаратному середовищі (комп'ютер або плата ЦП), інтегрованому з самою ОСРЧ. Програмне забезпечення сильно залежить від обраного ЦП і конкретних мікросхем. Більшість розробників вбудованого програмного забезпечення мають принаймні побіжні знання читання схем і читання таблиць даних компонентів для визначення використання регістрів і системи зв'язку.
Вебпрограми часто використовуються для керування обладнанням, при цьому XML-файли та інші вихідні дані можуть передаватися на комп'ютер для відображення. Зазвичай використовуються файлові системи з папками, однак бази даних SQL часто відсутні.
Розробка програмного забезпечення вимагає використання крос-компілятора, який працює на комп'ютері, але створює виконуваний код для цільового пристрою. Налагодження вимагає використання внутрішньосхемного емулятора та налагоджувального обладнання, такого як JTAG або SWD. Розробники програмного забезпечення часто мають доступ до повного вихідного коду ядра (ОС).
Обсяг пам'яті та оперативної пам'яті може значно відрізнятися. Деякі системи працюють з 16 КБ Flash і 4 КБ оперативної пам'яті з ЦП, який працює на 8 МГц, інші системи можуть конкурувати з сучасними комп'ютерами[5]. Ці вимоги до простору призводять до того, що більше роботи виконується на C або вбудованому C++, замість C++. Інтерпретовані мови, такі як BASIC (тоді як Parallax Propeller може використовувати скомпільований BASIC) і Java (Java ME Embedded 8.3[6] доступна, наприклад, для мікроконтролерів ARM Cortex-M4, Cortex-M7 і старіших ARM11, які використовуються в Raspberry Pi та Intel Galileo Gen) широко не використовуються. В той час як реалізація інтерпретованої мови Python 3 — MicroPython — однак, доступна спеціально для використання мікроконтролерів, напр. 32-розрядні мікроконтролери на основі ARM (наприклад, BBC micro: bit) і 16-розрядні мікроконтролери PIC.[7]
Зв'язок між процесорами та іншими компонентами є важливим. Окрім прямої адресації пам'яті, загальні протоколи апаратного рівня включають I²C, SPI, послідовні порти, 1-Wire, Ethernet та USB.
Комунікаційні протоколи, розроблені для використання у вбудованих системах, доступні у закритому коді від компаній, включаючи InterNiche Technologies та CMX Systems. Протоколи з відкритим кодом походять від uIP, lwip та інших.
- ↑ Emilio, Maurizio Di Paolo (2014). Embedded systems design for high-speed data acquisition and control. Cham. ISBN 978-3-319-06865-7. OCLC 890646530.
- ↑ Alippi, Cesare (2014). Intelligence for embedded systems : a methodological approach. Berlin. ISBN 978-3-319-05278-6. OCLC 878424116.
- ↑ Lee, Edward (2002). Embedded Software (PDF). Advances in Computers: Academic Press. Архів оригіналу (PDF) за 27 січня 2022. Процитовано 27 січня 2022.
- ↑ Mazzei, Daniele; Montelisciani, Gabriele; Baldi, Giacomo; Fantoni, Gualtiero (2015-12). Changing the programming paradigm for the embedded in the IoT domain. 2015 IEEE 2nd World Forum on Internet of Things (WF-IoT). IEEE. с. 239—244. doi:10.1109/WF-IoT.2015.7389059. ISBN 978-1-5090-0366-2. Архів оригіналу за 27 січня 2022. Процитовано 27 січня 2022.
- ↑ Example of embedded CPU. Архів оригіналу за 15 червня 2012. Процитовано 9 грудня 2012.
- ↑ Java ME Embedded. Oracle Technology Network. Архів оригіналу за 19 листопада 2016. Процитовано 1 лютого 2022.
- ↑ Microcontrollers: An Integral Part of Embedded Hardware. aduk.de. 10 грудня 2021. Архів оригіналу за 23 січня 2022. Процитовано 27 січня 2022.
- Edward A. Lee, «Embedded Software», Advances in Computers (M. Zelkowitz, editor) 56, Academic Press, London, 2002.