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

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

Встроенное программное обеспечение(англ.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. 12Реестр Минкомсвязи по классу «BIOS и иное встроенное программное обеспечение».Дата обращения: 3 октября 2020.Архивировано21 сентября 2020 года.
  2. 12Минкомсвязь разработала новый классификатор отечественного ПОАрхивная копияот 5 марта 2021 наWayback Machine.23.06.2020
  3. 12Программное обеспечение встроенных вычислительных системАрхивная копияот 19 ноября 2021 наWayback Machine.Учебное пособие.Университет ИТМО,Санкт-Петербург, 2009
  4. Встроенное ПО системыАрхивная копияот 26 февраля 2021 наWayback Machine.Центр знанийIBM
  5. Встроенное программное обеспечениеАрхивная копияот 25 сентября 2020 наWayback Machine.КомпанияAxis Communications
  6. 12Прототипирование: Разработка встроенного программного обеспечения.Акаш Гуджарати, 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.