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

Материал из Википедии — свободной энциклопедии
(перенаправлено с «Прошивка»)
Перейти к навигации Перейти к поиску

Встроенное программное обеспечение (англ. firmware, fw) — содержимое энергонезависимой памяти любого цифрового вычислительного устройства — видеокамеры, микрокалькулятора, сотового телефона, GPS-навигатора и т. д., в которой содержится его программа.

Образ, предназначенный для записи в память соответствующего устройства с целью обновления его встроенной программы, иногда называют словом «прошивка». Также словом «прошивка» называют собственно процесс записи этого образа в энергонезависимую память устройства. Такая прошивка памяти осуществляется при изготовлении устройства различными способами, например, установкой микросхемы памяти с предварительно записанным содержимым («прошитой») либо внутрисхемным программированием микросхемы (например, микроконтроллера), уже установленной в устройство, с помощью специального программатора.

Некоторые современные устройства допускают замену встроенного программного обеспечения («перепрошивку»). Способы такой «перепрошивки» могут быть различными: от физической замены микросхемы памяти до передачи данных по беспроводным каналам.

История термина

[править | править код]
Жгут прошивки для ПЗУ на П-образных сердечниках

Термин «прошивка» появился в 1960-х годах, когда в ЭВМ использовалась память на магнитных сердечниках. В постоянных запоминающих устройствах (ПЗУ) использовались Ш-образные и П-образные сердечники. Ш-образные сердечники имели зазор около 1 мм, через который и укладывался провод. Для записи двоичной «1» провод укладывался в одно окно сердечника, а для записи «0» — в другое. В сердечник высотой 14 мм укладывалось 1024 провода, что соответствовало 1 К данных одного разряда. Работа выполнялась протягиванием провода вручную с помощью «карандаша», из кончика которого тянулся провод, и таблиц прошивки. При такой кропотливой и утомительной работе возникали ошибки, которые выявлялись на специальных стендах проверки. Исправление ошибок осуществлялось обрезанием ошибочного провода и прошивкой взамен него нового.

В начале 1970-х годов появились П-образные сердечники, которые позволяли использовать для прошивки автоматические станки. Прошивка выполнялась уже не в устройстве ПЗУ, а в жгутах по 64, 128 или 256 проводов. Прошиваемые данные вводились в станок с помощью перфокарт. На специальной оснастке жгуты снимались со станка, обвязывались нитками, и концы проводов распаивались на колодки. После этого жгуты укладывались в блок ПЗУ. Как при ручной прошивке, так и при работе на прошивочном станке требовалась аккуратность и хорошее зрение, поэтому на прошивке работали молодые женщины.

В 1980-х годах термин «прошивка» стал вытесняться понятием «прожиг», что было вызвано появлением микросхем ПЗУ с прожигаемыми перемычками из нихрома или кремния. При более новых технологиях термин «прожиг» вышел из употребления, а термин «прошивка» остался в качестве разговорного для обозначения как процесса записи данных в микросхему, так и для употребления в отношении самих этих данных (в том числе программного обеспечения).

В настоящее время общепринятым является термин «встроенное программное обеспечение», или «программное обеспечение встроенных вычислительных систем». Такое употребление используется в официальных источниках[1][2], образовательных учреждениях[3] и среди авторитетных разработчиков аппаратного[4][5] и программного обеспечения[6].

Иногда в кругах разработчиков используется термин «микропрограмма» или «микропрограммное обеспечение»[7]. В таком случае он является синонимом терминам «прошивка» и «встроенное программное обеспечение», однако может быть спутан с терминами «микропрограмма» и «микрокод», относящимся к программам внутри процессоров, реализующих сам набор их инструкций.

В английском языке сложилась практика использования двух терминов — «firmware» и «embedded software». Термин «embedded software» применяется к программам внутри устройств, которые обычно не считаются компьютерами и являются встраиваемыми системами (англ. embedded systems), то есть являются частью другого, более сложного устройства, работой которого они управляют, будучи встроенными в него. Термин «firmware» является более общим, используясь и как синоним «embedded software», и в отношении программ невстраиваемых устройств (например, пультов дистанционного управления), компьютерной техники (например, BIOS компьютера), программ мобильных телефонов и автомобильных компьютеров[8]. Среди русскоязычных разработчиков такое разделение терминологии не практикуется, термины «прошивка» и «встроенное программное обеспечение» применяются одинаково как к встраиваемым[3][6], так и к другим[1][2] типам систем. В этом смысле, упомянутые русскоязычные термины в общем случае соответствуют английскому термину «firmware», в то время как термин «embedded software» в русскоязычной практике ближе к термину «программное обеспечение встраиваемых систем».

Применение

[править | править код]
Пульт дистанционного управления — пример устройства, содержащего встроенное программное обеспечение. Программа контролирует нажатия кнопок и отправляет кодированные команды телевизору или иному управляемому устройству с помощью инфракрасного светодиода.

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

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

Широко известным примером встроенного программного обеспечения является BIOS, поставляемая вместе с материнской платой компьютера и обеспечивающая начальную подготовку компьютера к запуску операционной системы.

Способы разработки

[править | править код]

Встроенное программное обеспечение может создаваться «с нуля» для данного конкретного типа устройства, либо иметь в основе готовую операционную систему, как правило, с открытым исходным кодом. Так, для небольших устройств иногда используется RTOS. В связи с удешевлением памяти в некоторых устройствах в качестве встроенного ПО стала применяться ОС GNU/Linux.

Для написания исходных текстов программ используются преимущественно языки ассемблера и Си. Для микросхем с программируемой логикой (ПЛИС) применяются языки типа Verilog и VHDL.

Юридические и финансовые вопросы

[править | править код]

Фирмы — производители оборудования следят за предотвращением краж своего встроенного программного обеспечения.

Лицензионное соглашение с потребителем запрещает извлекать и изучать «прошивки» тем или иным способом:

  • Самовольная замена «прошивки» на другую («перепрошивка») обычно прекращает действие гарантийных обязательств фирмы.
  • Процедуры обслуживания и изменения режимов работы встроенных программ обычно не разглашаются и в лучшем случае известны только работникам фирменных сервисных центров.

Некоторые фирмы (Microchip, Atmel и др.) производят микроконтроллеры со встроенной программируемой памятью, такой, что записанная на них программа уже не может быть считана штатными средствами (защита от чтения). Чтобы обойти такую защиту, фирмы-конкуренты вынуждены использовать специальное дорогостоящее оборудование, например, электронные микроскопы.

Примечания

[править | править код]
  1. 1 2 Реестр Минкомсвязи по классу «BIOS и иное встроенное программное обеспечение». Дата обращения: 3 октября 2020. Архивировано 21 сентября 2020 года.
  2. 1 2 Минкомсвязь разработала новый классификатор отечественного ПО Архивная копия от 5 марта 2021 на Wayback Machine. 23.06.2020
  3. 1 2 Программное обеспечение встроенных вычислительных систем Архивная копия от 19 ноября 2021 на Wayback Machine. Учебное пособие. Университет ИТМО, Санкт-Петербург, 2009
  4. Встроенное ПО системы Архивная копия от 26 февраля 2021 на Wayback Machine. Центр знаний IBM
  5. Встроенное программное обеспечение Архивная копия от 25 сентября 2020 на Wayback Machine. Компания Axis Communications
  6. 1 2 Прототипирование: Разработка встроенного программного обеспечения. Акаш Гуджарати, 14.01.2020
  7. Пример: MSI выпускает микропрограмму BIOS AGESA 1.0.0.6 для материнских плат серии AMD 300/400 Архивная копия от 23 ноября 2021 на Wayback Machine
  8. Emilio, Maurizio Di Paolo. Embedded Systems Design for High-Speed Data Acquisition and Control : [англ.]. — Springer, 2014-09-01. — ISBN 978-3-319-06865-7.

Литература

[править | править код]
  • Смирнов Г.С. Ферритовая память ЭВМ “Урал”. Страницы истории разработок. — Пенза, 2006.
  • Stringham, G. Hardware/firmware Interface Design: Best Practices for Improving Embedded Systems Development. — Newnes, 2010. — 360 p. — ISBN 9781856176057.