stringtranslate.com

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

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

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

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

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

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

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

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

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

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

Встроенное программное обеспечение должно включать все необходимые драйверы устройств во время производства, и драйверы устройств пишутся для различных аппаратных устройств. Эти драйверы устройств, называемые BSP ( пакет поддержки платы ), образуют слой программного обеспечения, содержащий аппаратно-специфические драйверы и другие процедуры, которые позволяют конкретной операционной системе (традиционно операционной системе реального времени или RTOS) функционировать в определенной аппаратной среде (компьютер или карта ЦП), интегрированной с самой RTOS. Программное обеспечение сильно зависит от ЦП и выбранных конкретных чипов. Большинство инженеров встроенного программного обеспечения имеют по крайней мере поверхностные знания чтения схем и чтения спецификаций для компонентов, чтобы определить использование регистров и системы связи. Преобразование между десятичными , шестнадцатеричными и двоичными числами полезно, а также использование манипуляции битами . [8]

Веб-приложения часто используются для управления оборудованием, хотя XML-файлы и другие выходные данные могут передаваться на компьютер для отображения. Обычно используются файловые системы с папками, однако базы данных SQL часто отсутствуют.

Разработка программного обеспечения требует использования кросс-компилятора , который работает на компьютере, но создает исполняемый код для целевого устройства. Отладка требует использования внутрисхемного эмулятора и отладочного оборудования, такого как отладчики JTAG или SWD . Разработчики программного обеспечения часто имеют доступ к полному исходному коду ядра (ОС).

Размер памяти для хранения и ОЗУ может значительно различаться. Некоторые системы работают с 16 КБ Flash и 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 , Ethernets и USB .

Протоколы связи, разработанные для использования во встроенных системах, доступны в виде закрытого исходного кода от таких компаний, как InterNiche Technologies и CMX Systems . Протоколы с открытым исходным кодом берут начало от uIP , lwip и других.

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

Примечания

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

Ссылки

  1. ^ "Страуструп о C++ для встроенных систем (нижняя часть стр.2)" (PDF) . Получено 9 декабря 2012 г.
  2. ^ Эмилио, Маурицио Ди Паоло (2014-09-01). Проектирование встраиваемых систем для высокоскоростного сбора данных и управления. Springer. ISBN 978-3-319-06865-7.
  3. ^ "ICS on embedded software". Архивировано из оригинала 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. ^ Mazzei, Daniele; Montelisciani, Gabriele; Baldi, Giacomo; Fantoni, Gualtiero (2015). Изменение парадигмы программирования для встроенных устройств в домене IoT . Интернет вещей (WF-IoT), 2-й всемирный форум IEEE 2015 г. Милан: IEEE. стр. 239–244. doi :10.1109/WF-IoT.2015.7389059.
  8. ^ "Страуструп о встроенном программном обеспечении". Архивировано из оригинала 3 февраля 2013 года . Получено 9 декабря 2012 года .
  9. ^ "Пример встроенного ЦП" . Получено 9 декабря 2012 г.
  10. ^ "Java ME Embedded". Oracle Technology Network .