Встроенное программное обеспечение
Встроенное программное обеспечение (англ. 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 и др.) производят микроконтроллеры со встроенной программируемой памятью, такой, что записанная на них программа уже не может быть считана штатными средствами (защита от чтения). Чтобы обойти такую защиту, фирмы-конкуренты вынуждены использовать специальное дорогостоящее оборудование, например, электронные микроскопы.
Литература
- Смирнов Г.С. Ферритовая память ЭВМ “Урал”. Страницы истории разработок. — Пенза, 2006.
- Stringham, G. Hardware/firmware Interface Design: Best Practices for Improving Embedded Systems Development. — Newnes, 2010. — 360 p. — ISBN 9781856176057.
Примечания
- Реестр Минкомсвязи по классу «BIOS и иное встроенное программное обеспечение»
- Минкомсвязь разработала новый классификатор отечественного ПО. 23.06.2020
- Программное обеспечение встроенных вычислительных систем. Учебное пособие. Университет ИТМО, Санкт-Петербург, 2009
- Встроенное ПО системы. Центр знаний IBM
- Встроенное программное обеспечение. Компания Axis Communications
- Прототипирование: Разработка встроенного программного обеспечения. Акаш Гуджарати, 14.01.2020
- Пример: MSI выпускает микропрограмму BIOS AGESA 1.0.0.6 для материнских плат серии AMD 300/400
- Emilio, Maurizio Di Paolo. Embedded Systems Design for High-Speed Data Acquisition and Control : [англ.]. — Springer, 2014-09-01. — ISBN 978-3-319-06865-7.