Вбудо́вана, вбудо́вувана систе́ма () — спеціалізована комп'ютерна система або обчислювальний пристрій, призначений для виконання обмеженої кількості функцій, часто, з обмеженнями реального часу. Комбінація апаратного та програмного забезпечення, можливо, з механічними або іншими частинами, призначена для виконання окремої функції. Зазвичай, вбудовувані системи є складовою частиною пристрою, включаючи апаратне забезпечення та механічні елементи. На противагу вбудовуваним, загальні комп'ютерні системи (такі як персональний комп'ютер) призначені для виконання широкого кола завдань. Вбудовувані системи присутні у багатьох сучасних приладах.
Оскільки вбудовувана система призначена для виконання обмеженої кількості функцій, розробники можуть її оптимізувати, зменшуючи вартість продукту, або збільшуючи надійність та швидкодію. Деякі вбудовувані системи виготовляються у великій кількості, що стимулює максимально зменшувати їх собівартість.
Фізично, вбудовувані системи бувають як і такими малими, наприклад, як портативні пристрої (цифрові годинники або MP3-плеєри), так і такими великими, як світлофори, пристрої управління виробництвом, або системи керування ядерними електростанціями. Відповідно, складність може бути низькою, як з одним чипом керування, так і дуже високою, з багатьма пристроями, периферійними приладами, комп'ютерними мережами тощо.
Взагалі кажучи, поняття «вбудовувана система» не є чітко визначеним, оскільки багато систем мають деякі можливості програмування. Наприклад, кишенькові комп'ютери мають деякі елементи від вбудовуваних систем — такі як операційні системи та мікропроцесори — але вони не є чисто вбудовуваними системами, оскільки дозволяють завантаження нових застосунків та підключення нових периферійних пристроїв.
Застосування
Вбудовувані системи забезпечують роботу тисяч різноманітних інтелектуальних взаємодіючих систем, таких як: касові термінали телевізійні приставки цифрові медіа-програвачі складна споживацька електроніка IP-телефони мережеві шлюзи серверні пристрої кіоски та торгові автомати промислові системи керування і системи керування завданнями вимірювальні і контрольні прилади кишенькові комп'ютери та інші мобільні пристрої
Характеристики Вбудовувані системи, призначені для якоїсь певної задачі, на відміну від комп'ютерів, призначених для виконання величезної кількості задач. Деякі з таких мають обмеження функціональності роботи обрахунків в реальному вимірі, які накладаються задля безпеки та зручності використання. Це також дозволяє знижувати системні вимоги для використання задач, спрощувати системи та знижувати їх собівартість. Вбудовувані системи не завжди є автономними та незалежними системами. Іноді вони складається із малих, комп'ютеризованих складових в рамках однієї складної системи, яка служить для загальнішої цілі. Для прикладу такою може бути система сучасних автомобілів із складним електронним начинням, яке керується автомобільним комп'ютером. Програмна інструкція написана для вбудовуваних систем називається мікропрограмою, і зберігається в незмінному ПЗП або у вільнозаписуваній пам'яті чипів. Вони працюють із обмеженими апаратними ресурсами, за відсутності клавіатури та/або екрана.
Інтерфейс користувача Вбудовувані системи можуть бути як взагалі без інтерфейсу користувача, так і мати складний графічний інтерфейс, схожий на інтерфейс сучасних середовищ на настільних комп'ютерах.
Прості системи Прості вбудовувані системи використовують кнопки, РК-дисплеї та малі літерні або цифрові дисплеї, часто з простою системою меню. Цілий графічний екран з сенсорами дотику або клавішами на межі екрана надає гнучкість, зменшуючи, при цьому, використаний простір: значення клавіш може змінюватись разом із меню, що відображається, а вибір елементів може відтворювати природні механізми вибору.
Складніші системи Повний графічний екран, із чутливим на дотик монітором і/та кнопками по краях забезпечують гнучкість та мінімізацію простору керування: функції кнопки можна змінити з екрана, а вибір залежить від наявних та потрібних вимог, що робить систему дуже зручною.
Надолонні системи часто мають екран з клавішею схожою на джойстик як вказівник.
Разом із поширенням вебтехнологій, розробники вбудовуваних систем отримали можливість створювати інтерфейси користувача у вигляді вебсторінок. Це дозволяє уникати складні схеми відображення, але надає можливості комплексного вводу та відображення, за необхідності, на іншому комп'ютері.
Центральні процесори Процесори для вбудовуваних систем можна розбити на дві великі категорії: звичайні мікропроцесори (μP) та мікроконтролери (μC), що мають набагато більше периферійних пристроїв вбудованих на чип. На відміну від серверів та робочих комп'ютерів, у вбудовуваних системах використовується порівняно велика кількість простих архітектур ЦП; як фон-Нейманівські так і реалізації Гарвардської архітектури, RISC так і VLIW; розмір машинного слова коливається від 4 біт до 64 біт і більше (зазвичай, в DSP), хоча типовим залишається розмір в 8/16 біт.
Великий, але не вичерпний перелік архітектур ЦП, що використовуються вбудовуваними системами: 65816, 65C02, 68HC08, 68HC11, 68k, 8051, ARM, AVR, AVR32, Blackfin, C167, Coldfire, COP8, eZ8, eZ80, FR-V, H8, HT48, M16C, M32C, MIPS, MSP430, PIC, PowerPC, R8C, SHARC, ST6, SuperH, TLCS-47, TLCS-870, TLCS-900, Tricore, , x86, , Z80 тощо.
Готові рішення PC/104 та PC/104 + є прикладами готових комп'ютерних систем, призначених для малої, низькопрофільної та підвищеної надійності. В них може використовуватися DOS, Linux, NetBSD, чи вбудовувані операційні системи реального часу, такі як , QNX or VxWorks.
В деяких ситуаціях, коли невеликі розміри не є першочерговими, компоненти можуть бути сумісними із комп'ютерами загального призначення. Плати, такі як VIA зменшують різницю, тому що є PC-сумісними, але з сильно інтегрованими, фізично малими або мають інші корисні параметри, що роблять їх привабливими для проєктантів вбудовуваних систем. Перевага даного підходу полягає в тому, що низькі витрати на нестандартні компоненти компенсовуються розробкою програмного забезпечення, коли може використовуватися те ж, що й у загальний мейнстрім комп'ютерах. Системи побудовані таким чином, що ще виглядають як вбудовувані, оскільки вони є компонентою більшого пристрою і виконують одну роль. Яскравим прикладом є банкомати.
Монокристальні та FPGA рішення Загальною конфігурацією вбудовуваних систем є однокристальна система (SoC), спеціалізована інтегральна схема (ASIC), в якій процесор переробили та додали як складову частину дизайну чипу. Такі схеми застосовуються в програмованій логіці інтегральних схем (ПЛІС, FPGA), коли програмується вся логіка, включно з ЦП.
Периферія Вбудовувані системи обмінюються інформацією з зовнішнім світом використовуючи периферійні прилади, такі як: Послідовний інтерфейс (SCI): RS-232, RS-422, RS-485 та ін. Синхронний послідовний інтерфейс: I²C, SPI, SSC nf ESSI USB Мережа: Ethernet, Controller Area Network, , та інші Час: Фазове автопідлаштування частоти (ФАПЧ), захват/порівняння, час обробки Аналогово-цифрові/цифрово-аналогові перетворювачі (АЦП/ЦАП)
Інструменти Розробники вбудовуваних систем використовують компілятор на асемблері, та зневаджувач для розробки програмного забезпечення вбудовуваних систем. Хоча крім цього використовуються і деякі більш специфічні інструменти:
Цикли налагодження та емуляції (див. наступну секцію). Утиліти для додавання контрольної суми чи CRC до програми, так вбудовувані системи можуть перевіряти дієздатність роботи основної програми. Для систем, що використовують цифрову обробку сигналів розробники можуть використовувати математичні робочі платформи, такі як: Scilab / Scicos, MATLAB / Simulink, MathCad, чи Mathematica для імітації математики. Вони також можуть використовувати бібліотеки для хосту та для клієнта, що виключає розробку ЦОС алгоритмів, як це було зроблено в DSPnano RTOS та Unison Operating System. Спеціальні компілятори та компонувальники можуть використовуватися для оптимізації специфічного обладнання. Вбудовувані системи можуть використовувати власні спеціалізовані мови програмування та засоби проєктування, або додаються вдосконалення до наявних мов, таких як Forth та BASIC. Іншим альтернативним шляхом є використання операційних систем реального часу та вбудовуваних операційних системах, які пристосовані до ЦСП (DSPnano RTOS).
Засоби програмного забезпечення можуть мати кілька джерел походження: Софтверні компанії, які спеціалізуються на вбудовуваних системах. Перенесені із GNU програмні засоби розроблення. Використання програм для ПК, якщо вбудовуваний процесор є близьким аналогом за архітектурою звичайних ПК.
У зв'язку із комплексним розвитком вбудовуваних систем, засоби розроблення та операційні системи мігрують на системи, в яких з'являється сенс. Наприклад стільникові телефони, кишенькові комп'ютери та інша споживацька техніка часто потребує значного програмного забезпечення, яке купується або надається сторонніми джерелами, що не пов'язані із виробництвом даної конкретної електроніки. В таких випадках використовується відкрите програмне середовище (Linux, NetBSD, чи вбудовану Java) для того щоб виробники програмного забезпечення спокійно створювали свої продукти для широкого ринку.
Зневадження Вбудовані зневаджувачі можуть працювати на різних рівнях, в залежності від наявних можливостей. Від найпростіших до найскладніших вони можуть бути умовно згруповані за такими напрямками: Інтерактивна резидентне зневадження, використовуючи просту оболонку, представлену у вбудовану операційну систему (наприклад, Forth і Basic) Зовнішній зневаджувач із використанням прямих або послідовних портів для виведення слідів операції, використовуючи або контроль активності або з використання зневаджувального сервера. Вбудовуваний зневаджувач, апаратний пристрій, який підключається до мікропроцесора за допомогою JTAG або NEXUS інтерфейсу. Це дозволяє забезпечити функціонування мікропроцесора, який буде контролюватися ззовні, але, як правило, обмежена конкретним зневаджувальними можливостями в процесорі. Внутрішньосхемний емулятор замінює мікропроцесор із моделюючою еквівалентою, забезпечуючи повний контроль над усіма аспектами мікропроцесора. Повний емулятор забезпечує моделювання всіх аспектів апаратних засобів, що дозволяє все це контролювати і змінювати, і забезпечуючи зневадження на нормальному комп'ютері.
Якщо не обмежуватися зовнішніми дебаґерами, програміст може завантажувати та запускати програмне забезпечення використовуючи інструменти, переглядати запущені в процесорі коди, а також запускати та припиняти операції. З огляду на це початковий програмний код може як на основі як і початкового коду мов програмування високого рівня, низького так і їх поєднання.
Оскільки вбудовувані системи часто складаються з найрізноманітніших елементів, стратегії зневадження можуть варіюватися. Наприклад, зневадження програмно- (та мікропроцесор-) орієнтованих вбудованих систем відрізняється від зневадження вбудовуваних систем, де більшу частину обробки здійснюють периферійні пристрої (DSP, FPGA, співпроцесора).
Все більша кількість вбудовуваних систем сьогодні використовують більш ніж одне процесорне ядро. Загальною проблемою з мультиядерних розробок є виконання належної синхронізації програмного забезпечення. У такому випадку, дизайн вбудовуваних систем має забезпечувати перевірку руху даних по шинах між процесорними ядрами. Такий дизайн вимагає низькорівневого зневадження, на рівні сигналів/шини, наприклад, з логічним аналізатором.
Надійність Вбудовувані системи часто знаходяться в машинах, які будуть працювати безперервно протягом багатьох років без помилок, а в деяких випадках відновлюватися самим, якщо відбувається помилка. Тому програмне забезпечення зазвичай розробляється та випробовується більш ретельно, ніж для персональних комп'ютерів, а також уникають ненадійних механічних рухомих частин, таких як дисководи, перемикачі і кнопки.