Фърмуерът (на английски: firmware, букв. „твърдо, яко изделие“) или базово програмно осигуряване е комбинация от постоянна памет, информацията, съхранена в нея, и програмен код.
В английския език се използват „firmware“ и „embedded software“. Терминът, използван за програмите, принадлежащи на устройства, които не са компютърни, и представляват вградена система, като се оказват част от друго, по-сложно устройство, чиято работа те управляват, вградени в самото устройство, е „embedded software“. Понятието „firmware“ е по-общо, то се отнася както за програми във вградени устройства, така и за програми в останалите устройства.[1]
Типични примери за устройства, съдържащи фърмуер, са вградени системи (като светофари, потребителски уреди и дигитални часовници), компютри, периферни устройства на компютри, мобилни телефони, дигитални камери, фискални устройства. Фърмуерът осигурява тяхното контролиране и функциониране.[2] Съдържа се в устройства като ROM, EPROM и флаш-паметта. Промяна на фърмуера на устройство по време на неговия живот може да бъде извършено много рядко или дори никога. Някои устройства с фърмуер памет са перманентно инсталирани и не могат да бъдат променяни след производство. Основните причини за обновяването на фърмуера са премахването на програмни грешки или добавяне на нови функции към устройството. Това може да доведе до смяна на интегралната схема на ROM или повторното програмиране на флаш паметта.[3] Фърмуерът на персонален компютър като ROM BIOS може да съдържа само основни, елементарни функции на устройството и може само да осигурява работата на софтуера от по високо ниво. Понякога фърмуерът може да бъде единствената програма, която да стартира устройството и осигурява функционирането му.
В някои отношения различните компоненти на фърмуера са точно толкова важни колкото и операционната система в работещия компютър. За разлика обаче от повечето модерни операционни системи, фърмуерът рядко притежава добре развит механизъм за автоматично обновяване, който да отстранява потенциални дефекти, получени при монтирането на устройството.
Средата за разработване на вграден фърмуер се различава значително от тестовата и производствената среда. Инженерите, разработващи фърмуер, могат да използват специализирани софтуерни стекове, различни архитектури на чиповете и дори операционни системи. Вградената система позволява значително да се улеснят схемите и по този начин да се намалят разходите по проекта и размерът на хардуера.
Накратко обаче, разработката на вграден фърмуер не се различава толкова много от процеса на разработване на „стандартен“ софтуер. Независимо от използвания модел на разработка/управление, той се състои от следните етапи: