Вбудована система — Вікіпедія
![](http://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/ADSL_modem_router_internals_labeled.jpg/250px-ADSL_modem_router_internals_labeled.jpg)
Вбудо́вана, вбудо́вувана систе́ма (англ. embedded system) — спеціалізована комп'ютерна система або обчислювальний пристрій, призначений для виконання обмеженої кількості функцій,[1] часто, з обмеженнями реального часу. Комбінація апаратного та програмного забезпечення, можливо, з механічними або іншими частинами, призначена для виконання окремої функції.[2] Зазвичай, вбудовувані системи є складовою частиною пристрою, включаючи апаратне забезпечення та механічні елементи. На противагу вбудовуваним, загальні комп'ютерні системи (такі як персональний комп'ютер) призначені для виконання широкого кола завдань. Вбудовувані системи присутні у багатьох сучасних приладах.
Оскільки вбудовувана система призначена для виконання обмеженої кількості функцій, розробники можуть її оптимізувати, зменшуючи вартість продукту, або збільшуючи надійність та швидкодію. Деякі вбудовувані системи виготовляються у великій кількості, що стимулює максимально зменшувати їх собівартість.
Фізично, вбудовувані системи бувають як і такими малими, наприклад, як портативні пристрої (цифрові годинники або MP3-плеєри), так і такими великими, як світлофори, пристрої управління виробництвом, або системи керування ядерними електростанціями. Відповідно, складність може бути низькою, як з одним чипом керування, так і дуже високою, з багатьма пристроями, периферійними приладами, комп'ютерними мережами тощо.
Взагалі кажучи, поняття «вбудовувана система» не є чітко визначеним, оскільки багато систем мають деякі можливості програмування. Наприклад, кишенькові комп'ютери мають деякі елементи від вбудовуваних систем — такі як операційні системи та мікропроцесори — але вони не є чисто вбудовуваними системами, оскільки дозволяють завантаження нових застосунків та підключення нових периферійних пристроїв.
Вбудовувані системи забезпечують роботу тисяч різноманітних інтелектуальних взаємодіючих систем, таких як:
- касові термінали
- телевізійні приставки
- цифрові медіа-програвачі
- складна споживацька електроніка
- IP-телефони
- мережеві шлюзи
- серверні пристрої
- кіоски та торгові автомати
- промислові системи керування і системи керування завданнями
- вимірювальні і контрольні прилади
- кишенькові комп'ютери та інші мобільні пристрої
![](http://upload.wikimedia.org/wikipedia/commons/thumb/c/c2/Alix.1C_board_with_AMD_Geode_LX_800_%28PC_Engines%29.jpg/250px-Alix.1C_board_with_AMD_Geode_LX_800_%28PC_Engines%29.jpg)
- Вбудовувані системи, призначені для якоїсь певної задачі, на відміну від комп'ютерів, призначених для виконання величезної кількості задач. Деякі з таких мають обмеження функціональності роботи обрахунків в реальному вимірі, які накладаються задля безпеки та зручності використання. Це також дозволяє знижувати системні вимоги для використання задач, спрощувати системи та знижувати їх собівартість.
- Вбудовувані системи не завжди є автономними та незалежними системами. Іноді вони складається із малих, комп'ютеризованих складових в рамках однієї складної системи, яка служить для загальнішої цілі. Для прикладу такою може бути система сучасних автомобілів із складним електронним начинням, яке керується автомобільним комп'ютером.
- Програмна інструкція написана для вбудовуваних систем називається мікропрограмою, і зберігається в незмінному ПЗП або у вільнозаписуваній пам'яті чипів. Вони працюють із обмеженими апаратними ресурсами, за відсутності клавіатури та/або екрану.
Вбудовувані системи можуть бути як взагалі без інтерфейсу користувача, так і мати складний графічний інтерфейс, схожий на інтерфейс сучасних середовищ на настільних комп'ютерах.
Прості вбудовувані системи використовують кнопки, РК-дисплеї та малі літерні або цифрові дисплеї, часто з простою системою меню. Цілий графічний екран з сенсорами дотику або клавішами на границі екрану надає гнучкість, зменшуючи, при цьому, використаний простір: значення клавіш може змінюватись разом із меню, що відображається, а вибір елементів може відтворювати природні механізми вибору.
Повний графічний екран, із чутливим на дотик монітором і/та кнопками по краях забезпечують гнучкість та мінімізацію простору керування: функції кнопки можна змінити з екрану, а вибір залежить від наявних та потрібних вимог, що робить систему дуже зручною.
Надолонні системи часто мають екран з клавішею схожою на джойстик як вказівник.
Разом із поширенням вебтехнологій, розробники вбудовуваних систем отримали можливість створювати інтерфейси користувача у вигляді вебсторінок. Це дозволяє уникати складні схеми відображення, але надає можливості комплексного вводу та відображення, за необхідності, на іншому комп'ютері.
Процесори для вбудовуваних систем можна розбити на дві великі категорії: звичайні мікропроцесори (μ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, V850 , x86, XE8000 , Z80 тощо.
PC/104 та PC/104 + є прикладами готових комп'ютерних систем, призначених для малої, низькопрофільної та підвищеної надійності. В них може використовуватися DOS, Linux, NetBSD, чи вбудовувані операційні системи реального часу, такі як MicroC/OS-II[en], QNX or VxWorks.
В деяких ситуаціях, коли невеликі розміри не є першочерговими, компоненти можуть бути сумісними із комп'ютерами загального призначення. Плати, такі як VIA EPIA[en] зменшують різницю, тому що є PC-сумісними, але з сильно інтегрованими, фізично малими або мають інші корисні параметри, що роблять їх привабливими для проектантів вбудовуваних систем. Перевага даного підходу полягає в тому, що низькі витрати на нестандартні компоненти компенсовуються розробкою програмного забезпечення, коли може використовуватися те ж, що й у загальний мейнстрім комп'ютерах. Системи побудовані таким чином, що ще виглядають як вбудовувані, оскільки вони є компонентою більшого пристрою і виконують одну роль. Яскравим прикладом є банкомати.
Загальною конфігурацією вбудовуваних систем є однокристальна система (SoC), спеціалізована інтегральна схема (ASIC), в якій процесор переробили та додали як складову частину дизайну чипу. Такі схеми застосовуються в програмованій логіці інтегральних схем (ПЛІС, FPGA), коли програмується вся логіка, включно з ЦП.
Вбудовувані системи обмінюються інформацією з зовнішнім світом використовуючи периферійні прилади, такі як:
- Послідовний інтерфейс (SCI): RS-232, RS-422, RS-485 та ін.
- Синхронний послідовний інтерфейс: I²C, SPI, SSC nf ESSI
- USB
- Мережа: Ethernet, Controller Area Network, LonWorks[en], та інші
- Час: Фазове автопідлаштування частоти (ФАПЧ), захват/порівняння, час обробки
- Аналогово-цифрові/цифрово-аналогові перетворювачі (АЦП/ЦАП)
Розробники вбудовуваних систем використовують компілятор на асемблері, та зневаджувач для розробки програмного забезпечення вбудовуваних систем. Хоча крім цього використовуються і деякі більш специфічні інструменти:
- Цикли налагодження та емуляції (див. наступну секцію).
- Утиліти для додавання контрольної суми чи CRC до програми, так вбудовувані системи можуть перевіряти дієздатність роботи основної програми.
- Для систем, що використовують цифрову обробку сигналів розробники можуть використовувати математичні робочі платформи, такі як: Scilab / Scicos, MATLAB / Simulink, MathCad, чи Mathematica для імітації математики. Вони також можуть використовувати бібліотеки для хосту та для клієнта, що виключає розробку ЦОС алгоритмів, як це було зроблено в DSPnano RTOS та Unison Operating System.
- Спеціальні компілятори та компонувальники можуть використовуватися для оптимізації специфічного обладнання.
- Вбудовувані системи можуть використовувати власні спеціалізовані мови програмування та засоби проектування, або додаються вдосконалення до наявних мов, таких як Forth та BASIC.
- Іншим альтернативним шляхом є використання операційних систем реального часу та вбудовуваних операційних системах[en], які пристосовані до ЦСП (DSPnano RTOS).
Засоби програмного забезпечення можуть мати кілька джерел походження:
- Софтверні компанії, які спеціалізуються на вбудовуваних системах.
- Перенесені із GNU програмні засоби розроблення.
- Використання програм для ПК, якщо вбудовуваний процесор є близьким аналогом за архітектурою звичайних ПК.
У зв'язку із комплексним розвитком вбудовуваних систем, засоби розроблення та операційні системи мігрують на системи, в яких з'являється сенс. Наприклад стільникові телефони, кишенькові комп'ютери та інша споживацька техніка часто потребує значного програмного забезпечення, яке купується або надається сторонніми джерелами, що не пов'язані із виробництвом даної конкретної електроніки. В таких випадках використовується відкрите програмне середовище (Linux, NetBSD, OSGi чи вбудовану Java) для того щоб виробники програмного забезпечення спокійно створювали свої продукти для широкого ринку.
Вбудовані зневаджувачі можуть працювати на різних рівнях, в залежності від наявних можливостей. Від найпростіших до найскладніших вони можуть бути умовно згруповані за такими напрямками:
- Інтерактивна резидентне зневадження, використовуючи просту оболонку, представлену у вбудовану операційну систему (наприклад, Forth і Basic)
- Зовнішній зневаджувач із використанням прямих або послідовних портів для виведення слідів операції, використовуючи або контроль активності або з використання зневаджувального сервера.
- Вбудовуваний зневаджувач, апаратний пристрій, який підключається до мікропроцесора за допомогою JTAG або NEXUS інтерфейсу. Це дозволяє забезпечити функціонування мікропроцесора, який буде контролюватися ззовні, але, як правило, обмежена конкретним зневаджувальними можливостями в процесорі.
- Внутрішньосхемний емулятор замінює мікропроцесор із моделюючою еквівалентою, забезпечуючи повний контроль над усіма аспектами мікропроцесора.
- Повний емулятор забезпечує моделювання всіх аспектів апаратних засобів, що дозволяє все це контролювати і змінювати, і забезпечуючи зневадження на нормальному комп'ютері.
Якщо не обмежуватися зовнішніми дебаґерами, програміст може завантажувати та запускати програмне забезпечення використовуючи інструменти, переглядати запущені в процесорі коди, а також запускати та припиняти операції. З огляду на це початковий програмний код може як на основі як і початкового коду мов програмування високого рівня, низького так і їх поєднання.
Оскільки вбудовувані системи часто складаються з найрізноманітніших елементів, стратегії зневадження можуть варіюватися. Наприклад, зневадження програмно- (та мікропроцесор-) орієнтованих вбудованих систем відрізняється від зневадження вбудовуваних систем, де більшу частину обробки здійснюють периферійні пристрої (DSP, FPGA, співпроцесора).
Все більша кількість вбудовуваних систем сьогодні використовують більш ніж одне процесорне ядро. Загальною проблемою з мультиядерних розробок є виконання належної синхронізації програмного забезпечення. У такому випадку, дизайн вбудовуваних систем має забезпечувати перевірку руху даних по шинах між процесорними ядрами. Такий дизайн вимагає низькорівневого зневадження, на рівні сигналів/шини, наприклад, з логічним аналізатором.
Вбудовувані системи часто знаходяться в машинах, які будуть працювати безперервно протягом багатьох років без помилок, а в деяких випадках відновлюватися самим, якщо відбувається помилка. Тому програмне забезпечення зазвичай розробляється та випробовується більш ретельно, ніж для персональних комп'ютерів, а також уникають ненадійних механічних рухомих частин, таких як дисководи, перемикачі і кнопки.
Конкретні питання надійності, можуть включати в себе:
- Система не може бути безпечно вимкнена на ремонт, чи бути в занадто недоступному місці для ремонту. Прикладами є: космічні системи, підводні кабелі, навігаційні маяки, свердловинні системи, а також автомобілі.
- Ця система повинна працювати з міркувань безпеки. «Кульгаючі режими» найменш допустимі. Часто оператором знімаються резервні копії. Прикладами є: навігатори літальних апаратів, системи управління реакторів, системи безпеки та оповіщення контролю хімічного заводу, системи однодвигунних літаків.
- Система втрачатиме значні суми грошей, якщо вимкнути: телефонні комутатори, контроль за заводі, контроль мостів та елеваторів, переказу грошових коштів та ринкових процедур, автоматизовані пункти продажу[en] та сервісу.
Використовуються різноманітні методи, іноді в поєднанні один з одним, щоб регенеруватися від помилок як помилки програмного забезпечення (таких як витік пам'яті), так і м'яких помилок в апаратній частині:
- Сторожовий таймер, який перезавантажує комп'ютер, якщо програмне забезпечення періодично повідомляє схему безпеки
- Підсистем з надлишковою кількістю запасних частин, на які можна перемикати
- Програмні модулі «слабких режимів», які забезпечують часткове функціонування
- Захист від збоїв живлення
Для багатотиражованих систем, таких як портативні музичні програвачі або мобільні телефони, мінімізують витрати, як правило, ще при проектуванні. При виборі апаратних засобів інженери як правило користуються правилом: «досить добре» для виконання необхідних функцій.
Для малосерійних чи дослідних зразків вбудованих систем, комп'ютери основного напрямку можуть бути адаптовані обмеженням програм або шляхом заміни операційної системи на операційну систему реального часу.
Є декілька різних типів архітектури програмного забезпечення в загальному користуванні.
При такій архітектурі, програмне забезпечення містить простий цикл. В циклі робляться виклики підпрограм, кожна з яких виконує свою частину задачі апаратного або програмного забезпечення.
Деякі вбудовувані системи переважно змінюють порядок виконання за допомогою переривань. Це означає, що задачі, які виконуються системою викликаються за допомогою іншого типу подій. Переривання може генеруватися таймером із заздалегідь встановленою частотою, або контролером послідовного порту при отриманні сигналів.
Такі системи використовуються у випадку, якщо необхідна мала затримка обробки подій та події, що оброблюються, є короткими і простими. Зазвичай, системи такого типу також виконують прості задачі в основному циклі, але такі задачі не мають необхідності обробки без затримки.
Іноді обробник переривань вибудовує довгі за часом обробки задачі в чергу. Як тільки обробник переривань закінчує свою роботу, ці задачі виконуються в основному циклі. Цей метод робить систему близькою до багатозадачної системи з дискретними процесами.
Системи невитісняючої багатозадачності дуже схожі на простий цикл схеми контролю, за винятком того, що цикл прихований в інтерфейс прикладного програмування. Програміст визначає ряд завдань, і кожне завдання отримує свої власні умови для «виконання» роботи. Коли завдання не виконується, воно потребує регулярного простою (так звані «пауза», «очікування», «простій», «НОП» (операція порожньої команди) і т. д.).
Переваги та недоліки дуже схожі до систем циклічного виконання, за винятком того, що легше додати нове програмне забезпечення : просто шляхом написання нової задачі та додати її до черги інтерпритатора.
У цьому типі системи, частина коду низького рівня перемикається між завданнями або потоками, і базується на таймері (підключеного до переривача). В основному вважається що системи такого рівня належать до ядра «операційної системи». В залежності від того, яка функціональність потрібна, він вводить більш чи менш складне управління кількома задачами, яке працює концептуально паралельно.
Оскільки будь-який код може пошкодити дані в іншому завданні (за винятком у великих систем з використанням блока управління пам'яттю), програми повинні бути ретельно розроблені та випробувані, також доступ до загальних даних необхідно контролювати за допомогю деяких стратегій синхронізації, наприклад: черга повідомлень, Семафори або неблокуюча схема синхронізації.
Через такі труднощі в організації, загальноприйнятим вважається купівля операційної системи реального часу, що дозволяє програмістам зосередитися на функціональності пристрою, а не на обслуговуванні операційної системи, принаймні для великих систем; менші системи часто не можуть собі дозволити накладних витрат, пов'язаних із загальними системами реального часу, у зв'язку з обмеженням співвідношення пам'яті, продуктивності та/або ємності акумулятора.
Мікроядра є логічним кроком вперед від ОС реального часу. Звичайний механізм полягає в тому, що ядро операційної системи розділяє пам'ять і перемикає ЦП для різних потоків виконання. Користувацький режим процесів реалізовує основні функції, такі як файлові системи, мережеві інтерфейси і т. д.
В загальному, виграш мікроядер тоді, коли перемикання і зв'язок між завданнями швидкий, і програш — коли повільний.
Екзоядра взаємодіють ефективніше на рівні звичайних підпрограмних викликів. Апаратні засоби і все програмне забезпечення в системі є, і розширюване за допомогою застосунків програмістів.
В даному випадку відносно великі ядра адаптовані до специфіки вбудовуваних систем за допомогою сучасних можливостей. Це дозволяє програмістам працювати в середовищі аналогічному настільним операційним системам, такими як Linux або Microsoft Windows, і тому є дуже продуктивним для розробників; недоліками є необхідність значно більших апаратних ресурсів, через складність цих ядер можуть бути менш передбачуваними і надійними, і часто дорожчі.
Загальними прикладами вбудовуваних монолітних ядер є вбудовуваний Linux та Windows CE.
Не зважаючи на збільшення витрат на обладнання, цей тип вбудовуваних систем набуває популярності, особливо на потужніших вбудовуваних пристроях, таких як Бездротові маршрутизатори та GPS навігація. Ось деякі з причин:
- Встановлені порти в загальних комплектах вбудованих чипів.
- дозволяється повторно використовувати доступні коди драйверів пристроїв, вебсерверів, брандмауерів, і інші коди.
- Розробку системи можна розпочинати з загальнофункціональних наборів, а потім налаштувати дистрибутив відділивши непотрібні функції. Таким чином заощаджуються витрати на пам'ять, використовувати тільки для актуального споживання.
- Багато інженерів вважають, що використання кодів у користувацькому режимі є надійнішим, легше налагоджуваним, і тому процес розробки простіший, а коди переносиміші.
- У багатьох вбудовуваних системах не вистачає жорстких вимог реального часу для контролю системи. Такі системи як вбудовуваний Linux досить швидкі для реагування у багатьох застосунках.
- Особливі умови, які вимагають швидшого реагування, ніж це може бути гарантовано найчастіше переміщують в апаратні засоби.
- Багато операційних систем реального часу коштують співрозмірно з ціною системи. При використанні їх у продукті, вартість товару зросте істотно.
Невелика кількість вбудовуваних систем вимагає безпечної, своєчасної, надійної та ефективної поведінки, недоступної в жодній із вищевказаних архітектур. У цьому випадку організація будує потрібну систему.
У деяких випадках система може бути розділена на «механізм контролера» з використанням спеціальної техніки, та «контролера дисплея» зі звичайною операційною системою. Система зв'язку передає дані між ними.
На додачу до основної операційної системи, багато вбудовуваних систем мають додаткові програмні компонени верхнього рівня. Ці компоненти суміщають мережевий протокольний стек, такий як TCP/IP, FTP, HTTP і HTTPS, та вміщують систему керування пам'яті, сумісною із накопичувачами у FAT так і флеш-пам'яті. Якщо пристрій забезпечений вбудовуваними аудіо-та відео-можливостями, то і відповідні драйвери та кодеки будуть наявні в системі. У разі монолітних ядер, багато що з цих програмних забезпечень вже включені. У категорії операційних систем реального часу, наявність додаткових програмних компонентів залежить від комерційних пропозицій.
- Мікропрограма
- Мова програмування
- Операційна система реального часу
- Процесор цифрових сигналів
- Центральний процесор
- Одноплатний комп'ютер
- Вбудовувана СКБД
- ↑ Michael Barr. Embedded Systems Glossary. Netrino Technical Library. Архів оригіналу за 25 червня 2013. Процитовано 21 квітня 2007.
- ↑ Jack Ganssle, Michael Barr (2003). Embedded Systems Dictionary. CMP Books. ISBN 1578201209.
![]() | Ця стаття потребує додаткових посилань на джерела для поліпшення її перевірності. (березень 2016) |
![]() | Це незавершена стаття про інформаційні технології. Ви можете допомогти проєкту, виправивши або дописавши її. |