stringtranslate.com

Встроенное программное обеспечение

Встроенное программное обеспечение — это компьютерное программное обеспечение , написанное для управления машинами или устройствами, которые обычно не считаются компьютерами, обычно называемыми встроенными системами . Обычно он специализирован для конкретного оборудования , на котором работает, и имеет ограничения по времени и памяти. [1] Этот термин иногда используется как синоним прошивки . [2]

Крупный план чипа SMSC LAN91C110 (SMSC 91x), встроенного чипа Ethernet .

Точная и стабильная характерная особенность заключается в том, что не все функции встроенного программного обеспечения инициируются/управляются через человеческий интерфейс , а вместо этого — через машинные интерфейсы. [3]

Например, производители встраивают программное обеспечение в электронику автомобилей , телефонов, модемов, роботов , бытовой техники, игрушек, систем безопасности, кардиостимуляторов , телевизоров и телеприставок, а также цифровых часов . [4] Это программное обеспечение может быть очень простым, например, для управления освещением, работающего на 8-битном микроконтроллере с несколькими килобайтами памяти, с подходящим уровнем сложности обработки, определяемым с помощью структуры «вероятно приблизительно корректных вычислений» [5] (методология, основанная на рандомизированные алгоритмы ). Однако встроенное программное обеспечение может стать очень сложным в таких приложениях, как маршрутизаторы , элементы оптических сетей, самолеты , ракеты и системы управления технологическими процессами . [6]

Операционные системы

В отличие от стандартных компьютеров, которые обычно используют такие операционные системы, как macOS , Windows или Linux , встроенное программное обеспечение может не использовать операционную систему. Когда они все-таки используют одну, можно выбрать широкий спектр операционных систем, обычно операционную систему реального времени . Код встроенного программного обеспечения обычно пишется на C или C++ , но в настоящее время для микроконтроллеров и встроенных систем широко используются и различные языки программирования высокого уровня , такие как Java , Python и JavaScript . [7] Языки ассемблера также часто используются, особенно при загрузке и обработке прерываний . Ада используется в некоторых военных и авиационных проектах.

Отличия от прикладного программного обеспечения

Встроенный системный текстовый пользовательский интерфейс с использованием MicroVGA [nb 1]

Большинство потребителей знакомы с прикладным программным обеспечением , обеспечивающим функциональность компьютера. Однако встроенное программное обеспечение часто менее заметно, но не менее сложно. В отличие от прикладного программного обеспечения, встроенное программное обеспечение имеет фиксированные аппаратные требования и возможности, а добавление стороннего оборудования или программного обеспечения строго контролируется.

Встроенное программное обеспечение должно включать все необходимые драйверы устройств на этапе производства, причем драйверы устройств пишутся для различных аппаратных устройств. Эти драйверы устройств, называемые 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 и других.

Смотрите также

Примечания

  1. ^ Более подробную информацию о MicroVGA можно найти в этом PDF-файле.

Рекомендации

  1. ^ «Страуструп о C++ для встраиваемых систем (внизу стр.2)» (PDF) . Проверено 9 декабря 2012 года .
  2. ^ Эмилио, Маурицио Ди Паоло (1 сентября 2014 г.). Проектирование встраиваемых систем для высокоскоростного сбора и управления данными. Спрингер. ISBN 978-3-319-06865-7.
  3. ^ «ICS на встроенном программном обеспечении» . Архивировано из оригинала 22 марта 2013 года . Проверено 22 июля 2013 г.
  4. ^ «Методы и технологии встроенных систем». Архивировано из оригинала 29 октября 2013 года . Проверено 9 декабря 2012 года .
  5. ^ Алиппи, Чезаре (2014), Интеллект для встраиваемых систем , Springer, ISBN 978-3-319-05278-6.
  6. ^ http://ptolemy.eecs.berkeley.edu/publications/papers/02/embsoft/embsoftwre.pdf [ пустой URL-адрес PDF ]
  7. ^ Маццеи, Даниэле; Монтелискиани, Габриэле; Бальди, Джакомо; Фантони, Гуальтьеро (2015). Изменение парадигмы программирования для встраиваемых систем в области IoT . Интернет вещей (WF-IoT), 2-й Всемирный форум IEEE 2015 г., 2015 г. Милан: IEEE. стр. 239–244. doi :10.1109/WF-IoT.2015.7389059.
  8. ^ «Страуструп о встроенном программном обеспечении» . Архивировано из оригинала 3 февраля 2013 года . Проверено 9 декабря 2012 года .
  9. ^ «Пример встроенного процессора» . Проверено 9 декабря 2012 года .
  10. ^ "Встроенная Java ME" . Технологическая сеть Oracle .