Открыть сервисСервис

Прошивка (firmware)

Прошивка (англ. firmware) — это класс программного обеспечения, обеспечивающего работу аппаратной части устройства на низкоуровневом уровне. Прошивка хранится в постоянной памяти (ROM, EEPROM, Flash-память) и, как правило, не требует изменений в ходе обычной эксплуатации устройства. Она выполняет функцию посредника между аппаратным обеспечением и прикладным программным обеспечением, инициализирует компоненты системы при включении и управляет их работой.

Происхождение термина

Слово «firmware» закрепилось в компьютерной инженерии в конце 1960-х — начале 1970-х годов. Термин отражает промежуточное положение кода между «жёстким» аппаратным обеспечением (hardware) и «мягким» программным обеспечением (software): прошивка вшита в устройство так же прочно, как электронные компоненты, но при этом является обычным программным кодом. В русскоязычной технической литературе используется как калька «прошивка», а также термины «микропрограмма» и «микрокод» (в узком смысле).

Где хранится прошивка

Прошивка размещается в энергонезависимых запоминающих устройствах:

  • ROM (Read-Only Memory) — память только для чтения, используется в старых устройствах;
  • EPROM / EEPROM — стираемая и программируемая память, допускает перезапись;
  • Flash-память — наиболее распространённый носитель в современных устройствах: микросхемы NOR- и NAND-Flash;
  • ПЗУ с микрокодом — в процессорах и контроллерах.

В микроконтроллерах прошивка часто размещается во встроенной Flash-памяти, а переменные данные хранятся в оперативной памяти (RAM) только на время работы.

Функции прошивки

Прошивка выполняет ряд ключевых задач:

  1. Инициализация аппаратуры — проверка и настройка компонентов при подаче питания (POST — Power-On Self-Test).
  2. Управление периферией — драйверы для работы с дисплеями, накопителями, сетевыми интерфейсами.
  3. Загрузка операционной системы — в компьютерах прошивка в виде BIOS или UEFI ищет загрузочный носитель и передаёт управление загрузчику.
  4. Обеспечение безопасности — проверка цифровой подписи загружаемого кода, шифрование данных.
  5. Регулирование параметров работы — тактовые частоты, напряжения, управление питанием.

Основные виды прошивок

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.
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru