В областта на компютрите фърмуерът е компютърна програма, която е "вградена" в хардуерно устройство и е съществена част от него. Понякога се нарича вграден софтуер. Пример за това е микроконтролер - част от микропроцесор, която указва на микропроцесора какви действия да предприеме. Той може да бъде и по-голяма програма, съхранена във флаш паметта, или качена на съществуващ хардуер от потребителя.
Както подсказва името му, фърмуерът е нещо средно между хардуера и софтуера, като свързва двата свята. Той може да означава различни неща за различните хора, особено когато самостоятелните електронни устройства стават все по-подобни на компютри. Подобно на софтуера, той представлява компютърна програма, която се изпълнява от микропроцесор. Но той също така е свързан с част от хардуера и няма значение без него.
Какво е фърмуерът в практиката
Фърмуерът е набор от инструкции и данни, които контролират поведението на хардуерното устройство. Той може да управлява ниско ниво операции (запалване/изключване на периферия, четене/запис към сензори или памет) или по-високо ниво функции (мрежова свързаност, файлови системи, потребителски интерфейс). В практиката фърмуерът често е написан специално за конкретна хардуерна платформа и е оптимизиран за малки ресурси: ограничена памет и процесорна мощ.
Къде и как се съхранява фърмуерът
Фърмуерът обикновено се съхранява в постоянна памет на устройството, например:
- ROM (Read-Only Memory) — неизменяема или трудна за изменяне памет;
- EEPROM или Flash памет — позволяващa актуализации;
- вградена памет в микроконтролери или специални чипове (например контролери на дискове, мрежови процесори и т.н.).
Някои устройства имат малък бутлоудър (bootloader), който стартира първи и зарежда основния фърмуер; това улеснява възстановяване при неуспешна актуализация.
Основни функции на фърмуера
- Инициализация на хардуера при стартиране (настройва часовници, портове, памет и др.).
- Управление на периферни устройства и комуникационни интерфейси.
- Осигуряване на абстракция между хардуер и високониво софтуер/операционни системи.
- Безопасност и контрол на достъпа (например криптографски операции, проверка на подпис при зареждане).
- Обработка на входно-изходни събития и реално-временни задачи вградени системи.
Актуализации, сигурност и рискове
Актуализирането на фърмуера (firmware update) е начин да се поправят грешки, да се добавят функции или да се затворят уязвимости. Актуализациите могат да се правят чрез USB, специализиран софтуер на компютър, локална мрежа или по въздуха (OTA — over-the-air).
Важно е да се знае, че неподходяща или прекъсната актуализация може да "брикне" (да направи устройството неизползваемо). За това производителите внедряват механизми като:
- двойни области за фърмуер (A/B) за безопасно превключване и rollback;
- проверка на цифров подпис (signed firmware) и Secure Boot за предотвратяване на злонамерен код;
- възможности за възстановяване чрез бутлоудър или специални интерфейси.
Примери и приложения
Фърмуерът присъства в много устройства:
- компютърни BIOS/UEFI — осигуряват стартиране и първоначална конфигурация на хардуера;
- рутери и мрежово оборудване — обработват пакети, маршрутизация и сигурност;
- твърди дискове и SSD — управляват четене/запис и вътрешни алгоритми;
- принтери, камери, телевизори, смарт устройства и битова техника — всички имат фърмуер за контрол на функциите;
- автомобилни ECU (Electronic Control Units) — контролират двигателя, спирачките, инфотейнмънта и др.
Разлика между фърмуер, драйвери и приложения
Често се бърка ролята на фърмуера и друг софтуер:
- Фърмуер — изпълнява се на същото устройство/чип и е тясно свързан с хардуера; обикновено е постоянен и е наличен дори без операционна система.
- Драйвери — софтуерни компоненти в операционната система, които комуникират с фърмуера/хардуера и предоставят интерфейс към приложенията.
- Приложения — високониво софтуер, който използва услуги, предоставени от операционната система и драйверите.
Добри практики
- Ползвайте официални актуализации от производителя и следвайте инструкциите при ъпдейт.
- Проверявайте подписите и източника на фърмуера, особено при мрежово устройство или IoT.
- Пазете резервни копия и, ако е възможно, активирайте механизми за възстановяване.
- При разработка на вграден софтуер използвайте сигурни методи за актуализация и versioning.
В обобщение, фърмуерът е критичната връзка между хардуера и софтуера: той контролира как устройствата функционират, може да бъде актуализиран за подобрения и поправки, но изисква внимание относно безопасността и процедурите за ъпдейт, за да се избегнат рискове за надеждността на устройствата.