Встроенное программное обеспечение - это компьютерное программное обеспечение , написанное для управляющих машин или устройств, которые обычно не считаются компьютерами, обычно называемыми встроенными системами . Обычно он специализирован для конкретного оборудования, на котором он работает, и имеет ограничения по времени и памяти. [1] Этот термин иногда используется как синоним прошивки . [2]
Точной и стабильной характеристикой является то, что никакие или не все функции встроенного программного обеспечения запускаются / управляются через человеческий интерфейс, а вместо этого через машинные интерфейсы. [3]
Производители встраивают встроенное программное обеспечение в электронику автомобилей , телефонов, модемов, роботов , бытовой техники, игрушек, систем безопасности, кардиостимуляторов , телевизоров и телевизионных приставок, а также , например , цифровых часов . [4] Это программное обеспечение может быть очень простым, например, управление освещением, работающее на 8-битном микроконтроллере с несколькими килобайтами памяти с подходящим уровнем сложности обработки, определяемым с помощью структуры «Вероятно приблизительно правильных вычислений» [5] (методология, основанная на рандомизированные алгоритмы ). Однако встроенное программное обеспечение может стать очень сложным в таких приложениях, какмаршрутизаторы , элементы оптических сетей ,самолеты , ракеты и системы управления технологическими процессами . [6]
Операционные системы
В отличие от стандартных компьютеров, которые обычно используют операционные системы, такие как OS X , Windows или GNU / Linux , встроенное программное обеспечение может не использовать операционную систему. Когда они его используют, можно выбирать из самых разных операционных систем, обычно это операционная система реального времени . Код для встроенного программного обеспечения обычно пишется на C или C ++ , но различные языки программирования высокого уровня , такие как Java , Python и JavaScript , теперь также широко используются для целевых микроконтроллеров и встроенных систем. [7] Также часто используются языки ассемблера , особенно при загрузке и обработке прерываний . Ада используется в некоторых военных и авиационных проектах.
Отличия от прикладного ПО
Большинство потребителей знакомы с прикладным программным обеспечением, которое обеспечивает функциональность на компьютере. Однако встроенное программное обеспечение часто менее заметно, но не менее сложно. В отличие от прикладного программного обеспечения, встроенное программное обеспечение имеет фиксированные аппаратные требования и возможности, а добавление стороннего оборудования или программного обеспечения строго контролируется.
Встроенное программное обеспечение должно включать все необходимые драйверы устройств во время производства, а драйверы устройств написаны для различных аппаратных устройств. Эти драйверы устройств, называемые BSP ( пакет поддержки платы ), образуют уровень программного обеспечения, содержащего аппаратно-зависимые драйверы и другие процедуры, которые позволяют конкретной операционной системе (традиционно операционной системе реального времени или RTOS) функционировать в определенной аппаратной среде. (компьютер или карта ЦП), интегрированная с самой ОСРВ. Программное обеспечение сильно зависит от процессора и выбранных микросхем. Большинство разработчиков встроенного программного обеспечения имеют хотя бы промежуточные знания о чтении схем и чтении таблиц данных для компонентов, чтобы определить использование регистров и системы связи. Полезно преобразование между десятичным , шестнадцатеричным и двоичным числами, а также использование битовых манипуляций . [8]
Веб-приложения часто используются для управления оборудованием, хотя файлы XML и другие выходные данные могут передаваться на компьютер для отображения. Обычно используются файловые системы с папками, однако базы данных SQL часто отсутствуют.
Разработка программного обеспечения требует использования кросс-компилятора , который работает на компьютере, но создает исполняемый код для целевого устройства. Отладка требует использования внутрисхемного эмулятора и отладочного оборудования, такого как отладчики JTAG или SWD . Разработчики программного обеспечения часто имеют доступ к полному исходному коду ядра (ОС).
Размер оперативной памяти и оперативной памяти может значительно различаться. Некоторые системы работают с 16 КБ флэш-памяти и 4 КБ ОЗУ с процессором, работающим на частоте 8 МГц, другие системы могут конкурировать с современными компьютерами. [9] Эти требования к пространству приводят к тому, что больше работы выполняется на C или встроенном C ++ вместо C ++. Интерпретируемые языки, такие как BASIC (хотя, например, Parallax Propeller может использовать скомпилированный BASIC) и Java (Java ME Embedded 8.3 [10] доступен, например, для микроконтроллеров ARM Cortex-M4 , Cortex-M7 и более старых ARM11, используемых в Raspberry Pi и Intel Galileo Gen.2 ) обычно не используются; в то время как реализация интерпретируемого языка Python 3 - MicroPython - тем не менее доступна специально для использования микроконтроллеров, например, 32-битные микроконтроллеры на базе ARM (такие как BBC micro: bit ) и 16-битные микроконтроллеры PIC .
Протоколы связи
Связь между процессорами и между одним процессором и другими компонентами имеет важное значение. Помимо прямой адресации памяти , общие протоколы аппаратного уровня включают I²C , SPI , последовательные порты , 1-Wires , Ethernet и USB .
Протоколы связи, предназначенные для использования во встроенных системах , доступны в виде закрытого кода от компаний, включая InterNiche Technologies и CMX Systems . Протоколы с открытым исходным кодом происходят от uIP , lwip и других.
Смотрите также
- Встроенная система
Рекомендации
- Эдвард А. Ли, «Встроенное программное обеспечение», « Достижения в области компьютеров» (М. Зельковиц, редактор) 56 , Academic Press, Лондон, 2002.
- ^ «Страуструп на C ++ для встроенных (нижняя стр. 2)» (PDF) . Проверено 9 декабря 2012 года .
- ^ Эмилио, Маурицио Ди Паоло (01.09.2014). Проектирование встроенных систем для высокоскоростного сбора данных и управления . Springer. ISBN 978-3-319-06865-7.
- ^ «АСУ ТП на встроенном ПО» . Архивировано из оригинального 22 марта 2013 года . Проверено 22 июля 2013 года .
- ^ «Методы и технологии встроенных систем» . Архивировано из оригинального 29 октября 2013 года . Проверено 9 декабря 2012 года .
- ^ Алиппи, Чезаре (2014), Интеллект для встроенных систем , Springer, ISBN 978-3-319-05278-6.
- ^ http://ptolemy.eecs.berkeley.edu/publications/papers/02/embsoft/embsoftwre.pdf
- ^ Мацей, Даниэле; Монтелисиани, Габриэле; Бальди, Джакомо; Фантони, Гуальтьеро (2015). Изменение парадигмы программирования для встраиваемых в домене IoT . Интернет вещей (WF-IoT), 2-й Всемирный форум IEEE 2015 г., посвященный. Милан: IEEE. С. 239–244. DOI : 10.1109 / WF-IoT.2015.7389059 .
- ^ «Страуструп о встроенном ПО» . Архивировано из оригинала 3 февраля 2013 года . Проверено 9 декабря 2012 года .
- ^ «Пример встроенного процессора» . Проверено 9 декабря 2012 года .
- ^ «Java ME Embedded» . Технологическая сеть Oracle .