Встроенное программное обеспечение
Встроенное программное обеспечение — это компьютерное программное обеспечение , написанное для управления машинами или устройствами, которые обычно не считаются компьютерами, обычно называемыми встроенными системами . Обычно он специализирован для конкретного оборудования , на котором работает, и имеет ограничения по времени и памяти. [1] Этот термин иногда используется как взаимозаменяемый с прошивкой . [2]
Точная и стабильная характерная особенность заключается в том, что не все функции встроенного программного обеспечения инициируются/управляются через человеческий интерфейс , а вместо этого — через машинные интерфейсы. [3]
производители встраивают программное обеспечение в электронику автомобилей , телефонов, модемов, роботов , бытовой техники, игрушек, систем безопасности, кардиостимуляторов , телевизоров и телеприставок, а также цифровых часов . Например, [4] Это программное обеспечение может быть очень простым, например, для управления освещением, работающего на 8-битном микроконтроллере с несколькими килобайтами памяти с подходящим уровнем сложности обработки, определяемым с помощью структуры вероятно приблизительно правильных вычислений. [5] (методика, основанная на рандомизированных алгоритмах ). Однако встроенное программное обеспечение может стать очень сложным в таких приложениях, как маршрутизаторы , элементы оптических сетей, самолеты , ракеты и управления технологическими процессами . системы [6]
Операционные системы
[ редактировать ]В отличие от стандартных компьютеров, которые обычно используют такие операционные системы, как macOS , Windows или 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 года .
- ^ Эмилио, Маурицио Ди Паоло (1 сентября 2014 г.). Проектирование встраиваемых систем для высокоскоростного сбора и управления данными . Спрингер. 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 [ пустой URL PDF ]
- ^ Маццеи, Даниэле; Монтелискиани, Габриэле; Бальди, Джакомо; Фантони, Гуальтьеро (2015). Изменение парадигмы программирования для встраиваемых систем в области IoT . Интернет вещей (WF-IoT), 2-й Всемирный форум IEEE 2015 г. Милан: IEEE. стр. 239–244. дои : 10.1109/WF-IoT.2015.7389059 .
- ^ «Страуструп о встроенном программном обеспечении» . Архивировано из оригинала 3 февраля 2013 года . Проверено 9 декабря 2012 года .
- ^ «Пример встроенного процессора» . Проверено 9 декабря 2012 года .
- ^ «Встроенная Java ME» . Технологическая сеть Oracle .