Firmware, někdy také mikroprogramové vybavení, je v informatice označení pro software, který slouží pro řízení nějakého vestavěného systému (embedded system). Firmware řídí například semafory, kalkulačky, počítačové díly (pevný disk, Wi-Fi čip, vypalovačka…), mobilní telefon, digitální fotoaparát, syntezátor atd.
Termín firmware byl původně vytvořen za účelem kontrastu k vysokoúrovňovému softwaru, který může být vyměněn bez nahrazení hardwarového komponentu. Firmware je typicky spjat se základními nízkoúrovňovými operacemi, bez kterých by zařízení nebylo funkční. Firmware je také relativní pojem, protože většina vestavěných zařízení obsahuje firmware na více než jedné úrovni. Například operační systém pro mobilní telefon je označován jako firmware (např. Android, Windows Phone, iOS), ale samotný mobilní telefon obsahuje firmware pro komunikační čip mobilní telefonní sítě (tzv. radio),[1] firmware pro řízení bezdrátového Wi-Fi čipu, GPS čipu a podobně.
Pojem firmware zavedl Ascher Opler v roce 1967 v článku Datamation.[2] Původně to znamenalo mikrokód umístěný ve speciální rychlé paměti, který realizoval instrukční sadu použitého procesoru. V původním významu tedy firmware sloužil k odlišení hardware (mikroprocesor), software (běžné programy v počítači) a firmware (kód řídící samotný mikroprocesor). Firmware nevyužíval klasické strojové instrukce, ale speciální mikroinstrukce použitelné jen na provádění firmware. Pojem firmware měl naznačit, že se vyskytuje na pomezí mezi hardware a software.
Později bylo označení „firmware“ rozšířeno na vše, co se ukládalo do paměti ROM, například kód BIOSu, bootstrap loadery nebo jiné specializované aplikace.
Až do poloviny 90. let byla aktualizace firmwaru realizována nahrazením paměťového média obsahujícího firmware (např. výměna ROM paměti). Později začala být využívána flash paměť, takže aktualizace byla realizována spuštěním speciálního programu, který novější verzi firmware zapsal do nevolatilní paměti (paměti, která svůj obsah zachová i po odpojení napájení).
Firmware je v současných elektronických zařízeních běžně používán. Nesprávně provedená aktualizace firmware může vést k tzv. „bricku“ (zařízení je nadále nepoužitelné).
V osobních počítačích je firmware často používán. Základním firmwarem v počítači je BIOS, který dnes zajišťuje zejména start počítače. BIOS je možné aktualizovat speciálním programem. Aktualizace umožňuje (kromě oprav chyb) například použití novějšího modelu procesoru.
Firmware je používán v počítačových perifériích, jako je například optická mechanika nebo pevný disk. Například změnou firmware v optické mechanice se může uživatel počítače pokusit obejít regionální ochranu na CD/DVD.
V roce 2010 většina přenosných hudebních přehrávačů podporuje upgrade firmwaru. Některé firmy používají aktualizace firmwaru pro vložení nových přehrávatelných souborových formátů (enkódování); tento způsob použila například jihokorejská společnost iriver pro soubory spadající pod Vorbis. Další funkce které se mohou změnit spolu s aktualizacemi firmwaru jsou GUI či dokonce životnost baterie. Většina mobilních telefonů má Firmware Over The Air upgradovací schopnost pro stejné důvody. Některé mohou být dokonce upgradovány pro zvýšení recepce či kvality zvuku, což jen podtrhuje fakt, že firmware je používán v souboru produktů na více než jen jednom levelu (v tomto případě mikrokontroler podobný CPU vs. digitální procesor).
Od roku 1996 používá většina automobilů speciální počítač (tzv. řídící jednotka) a různé senzory nejen pro řízení chodu motoru, ale i pro detekování závad (například pokles tlaku v pneumatice, chyba airbagu a podobně). V roce 2010 jsou používány řídící jednotky i pro doplňující systémy, jako je ABS, palubní deska, vyhřívání sedadel atd. Aktualizaci firmware provádějí certifikované servisy speciálními přístroji, které se připojují na servisní konektory.
Ústav elektrotechniky a elektroniky (IEEE), Standardní slovník pojmů softwarového inženýrství, Std 610.12-1990, definuje firmware takto:
Flashování je proces přepsání současného firmwaru nebo dat na jiná data či firmware skrz EEPROM modul umístěný v elektornickém zařízení.[3] Tato operace může být provedena za účelem vylepšení (upgradu) zařízení[4] nebo pro změnu poskytovatele služeb souvisejících se službami a funkcí zařízení, jako je změna od jednoho mobilního operátora k jinému nebo instalace nového operačního systému. Pokud je firmware upgradovatelný, je tento úkon často proveditelný přes flashovací program výrobce, kde je často povoleno ozálohovat starý firmware před samotnou instalací, a tak v případě, že se proces nahrávání nezdaří může být původní firmware obnoven zpět. Z bezpečnostních důvodů a z vůle výrobců však stále častěji není možné provést ponížení firmwaru (tzv. downgrade) za účelem využití bezpečnostních chyb pro ovládnutí softwaru (např. přepnutí do privilegovaného režimu).
Někdy třetí strany vytvoří neoficiální novou nebo upravenou ("postprodukční") verzi firmwaru za účelem poskytnutí nových funkcí nebo pro zpřístupnění výrobcem skrytých funkcionalit produktu. Příklady zahrnují:
Většina upravených firmwarů je šířena zdarma a je zároveň open source softwarem.
Tyto úpravy většinou využívají pro spuštění a instalaci možností upgradu firmwaru na zařízeních samotných. Některé se však musí uchýlit k exploitům, aby se spustily, protože výrobci se snaží uzamknout hardware před spuštěním nepodepsaného kódu.