Прошивка (firmware)¶
Прошивка (англ. firmware) — это класс программного обеспечения, обеспечивающего работу аппаратной части устройства на низкоуровневом уровне. Прошивка хранится в постоянной памяти (ROM, EEPROM, Flash-память) и, как правило, не требует изменений в ходе обычной эксплуатации устройства. Она выполняет функцию посредника между аппаратным обеспечением и прикладным программным обеспечением, инициализирует компоненты системы при включении и управляет их работой.
¶Происхождение термина
Слово «firmware» закрепилось в компьютерной инженерии в конце 1960-х — начале 1970-х годов. Термин отражает промежуточное положение кода между «жёстким» аппаратным обеспечением (hardware) и «мягким» программным обеспечением (software): прошивка вшита в устройство так же прочно, как электронные компоненты, но при этом является обычным программным кодом. В русскоязычной технической литературе используется как калька «прошивка», а также термины «микропрограмма» и «микрокод» (в узком смысле).
¶Где хранится прошивка
Прошивка размещается в энергонезависимых запоминающих устройствах:
- ROM (Read-Only Memory) — память только для чтения, используется в старых устройствах;
- EPROM / EEPROM — стираемая и программируемая память, допускает перезапись;
- Flash-память — наиболее распространённый носитель в современных устройствах: микросхемы NOR- и NAND-Flash;
- ПЗУ с микрокодом — в процессорах и контроллерах.
В микроконтроллерах прошивка часто размещается во встроенной Flash-памяти, а переменные данные хранятся в оперативной памяти (RAM) только на время работы.
¶Функции прошивки
Прошивка выполняет ряд ключевых задач:
- Инициализация аппаратуры — проверка и настройка компонентов при подаче питания (POST — Power-On Self-Test).
- Управление периферией — драйверы для работы с дисплеями, накопителями, сетевыми интерфейсами.
- Загрузка операционной системы — в компьютерах прошивка в виде BIOS или UEFI ищет загрузочный носитель и передаёт управление загрузчику.
- Обеспечение безопасности — проверка цифровой подписи загружаемого кода, шифрование данных.
- Регулирование параметров работы — тактовые частоты, напряжения, управление питанием.
¶Основные виды прошивок
¶BIOS и UEFI
BIOS (Basic Input/Output System) — прошивка материнской платы персонального компьютера, появившаяся в 1970-х годах. Она выполняет самотестирование при включении, инициализирует оборудование и запускает загрузчик операционной системы. С 2000-х годов BIOS постепенно вытесняется UEFI (Unified Extensible Firmware Interface) — более современным интерфейсом с поддержкой дисков объёмом свыше 2 ТБ, графического интерфейса и защищённой загрузки (Secure Boot).
¶Прошивки микроконтроллеров
Микроконтроллеры (Atmel AVR, STM32, ESP32 и другие) работают с простейшими прошивками, написанными на C/C++ или ассемблере. Такие прошивки записываются через отладочные интерфейсы (JTAG, SWD, ISP) с помощью программаторов. Сообщество разработчиков микроконтроллеров активно использует открытые прошивки: например, Arduino IDE и проекты на базе ESP8266/ESP32.
¶Прошивки бытовой и сетевой техники
Роутеры, телевизоры, холодильники, умные колонки и другие устройства IoT работают на прошивках, часто основанных на операционных системах реального времени (FreeRTOS, Zephyr) или урезанных дистрибутивах Linux (OpenWrt, DD-WRT). Пользователи роутеров могут заменять заводскую прошивку на альтернативные, расширяющие функциональность устройства.
¶Обновление прошивки
Производители периодически выпускают обновления, исправляющие ошибки и уязвимости. Существует несколько способов обновления:
- OTA (Over-The-Air) — по беспроводной сети, применяется в смартфонах, умных устройствах;
- Через USB или специальный порт — с помощью утилит производителя;
- Через загрузчик (bootloader) — встроенный минимальный программный модуль, принимающий новый образ прошивки.
При неудачном обновлении устройство может оказаться в состоянии «кирпича» (brick) — то есть полностью потерять работоспособность. Для восстановления применяют низкоуровневое перепрограммирование микросхемы памяти.
¶Прошивка и программное обеспечение
Граница между прошивкой и обычным программным обеспечением размыта. В смартфонах операционная система Android или iOS обновляется так же, как прошивка, и технически является ею. В компьютерной индустрии термин «прошивка» чаще применяется к коду, который не предназначен для изменения конечным пользователем и напрямую управляет оборудованием.
¶Значение
Прошивка определяет функциональные возможности устройства на аппаратном уровне. От её качества зависит стабильность работы, безопасность и энергоэффективность техники. В России разработка прошивок для промышленной электроники, телекоммуникационного оборудования и систем встраиваемого управления ведётся как крупными компаниями (Яндекс, «Ростех»), так и небольшими инженерными командами, в том числе в рамках импортозамещения программного обеспечения.
¶Источники
- Таненбаум Э. «Архитектура компьютера».
- Смит Р. «Computer Organization and Design: RISC-V Edition».
- Документация Arduino, Espressif (ESP32), STMicroelectronics (STM32).
- Intel Corporation. UEFI Specification.
