Firmware

Az elektronikai rendszerekben és a számítástechnika területén firmware (ejtsd: förmver) alatt azokat a rögzített, többnyire kis méretű programokat és/vagy adatstruktúrákat értjük, melyek különböző elektronikai eszközök vezérlését végzik el.

Firmware-t tartalmazó végfelhasználói eszközök például a távirányító, a számológép, számítógép-alkatrészek mint a merevlemez, billentyűzet, a monitor, a memóriakártya. Tudományos műszerek, ipari robotok is tartalmaznak firmware-t, ahogy a bonyolultabb fogyasztási cikkek is, mint a mobiltelefonok, digitális fényképezőgépek, szintetizátorok stb. alap- és komplikáltabb funkcióit is a firmware működteti.

Nincs éles határ a firmware és a szoftver között, lévén mindkettő elég tág fogalom. Mindenesetre a firmware kifejezést eredetileg a hardverkomponens cseréje nélkül megváltoztatható, magasabb szintű szoftverrel szembeállítva definiálták. A firmware feladata jellemzően az olyan, igen alacsony szintű műveletek elvégzése, melyek nélkül az eszköz teljesen működésképtelen lenne. A firmware relatív fogalom is, mivel a legtöbb beágyazott eszköz több szintű firmware-t tartalmaz: például a számítógép BIOS-a esetében az egyes alrendszerek, mint a CPU-k, flash memóriák, kommunikációs vezérlők, kijelzők stb. mind saját, általában fix programkóddal és/vagy mikrokóddal rendelkeznek, amiket a magasabb szintű firmware „a hardver részének” tekint.

Az alacsonyabb szintű firmware-eket általában egy programozható logikai áramkör (PLA) vagy egy ROM (esetleg OTP vagy PROM) tartalmazza, míg a magasabb szintű, a szoftver határán mozgó firmware-eket többnyire flashmemóriára rögzítik, hogy szükség esetén frissíteni lehessen azokat. A frissítésre hibajavítás vagy funkcióbővítés miatt lehet szükség, általában a gyártó által szállított bináris lemezképfájl a gyártó utasításai szerint az eszközre töltésével; ez időnként a végfelhasználó által is elvégezhető.

Tehát, míg a magas szintű firmware-t (vagy szoftvert) az eszköz beállításaihoz hasonlóan kezelik, az alacsony szintű firmware-t ehelyett a hardver részének tekintik. A régebbi firmware-eket gyakran fix, félvezető diódák alkotta diódamátrix valósította meg. Ennek modern megfelelője a térvezérlésű tranzisztorból álló mátrix, ahol a ROM-ban vagy PLA-ban egy-egy komponens megléte vagy hiánya jelképezi a 0-kat és 1-eseket.

A kifejezés eredete
A kifejezést Ascher Opler használta először 1967-ben, a Datamation folyóiratba írt cikkében. Eredetileg olyan írható vezérlőtárat (control store-t, egy apró, speciális gyors memóriatípust) jelentett, ami a számítógép utasításkészletét meghatározó és megvalósító mikrokódot tartalmazta, és aminek kicserélésével a CPU utasításait módosítani lehet. Az eredeti jelentés szerinti firmware megkülönböztethető a hardvertől (a CPU maga) és a szoftvertől (normál, a CPU-n futó utasítások). Nem a processzor gépi kódú utasításaiból állt, hanem annál alacsonyabb szintű, a gépi kódot megvalósító mikrokódból. A hardver („kemény áru”) és a szoftver („puha áru”) közötti határmezsgyén létezett, innen a firmware („szilárd áru”) elnevezés.

Később a firmware jelentéstartománya kiszélesedett, ide értettek mindenféle mikrokódot, tekintet nélkül arra, hogy írható vagy csak olvasható vezérlőtár tartalmazza.

Még később, a köznyelvi használatban a firmware alatt már bármilyen ROM-ban tárolt szoftvert értettek, legyen az akár a gépi kódú BIOS, a rendszertöltő vagy valamilyen különleges alkalmazás.

Az 1990-es évek közepéig a firmware frissítése általában az azt tároló eszköz, többnyire egy foglalatba helyezett ROM modul cseréjével járt; a 2000-es években ezzel a módszerrel szinte teljesen felhagytak, ahogy elterjedtek a kényelmes, magukat tisztán elektronikusan felülírni képes firmware-ek.

A szó magyar nyelvű helyesírása
A magyar helyesírás szabályai szerint a jövevényszavakat (pl. szoftver, hardver) kiejtés szerint kell leírni. Ha az angol eredetű szó már meghonosodott volna, kiejtés szerint „förmver”-ként kellene leírni, addig azonban az angolos alak írandó.

Firmware (modern értelemben) 
Mostanra (2011) a firmware kifejezés használata úgy módosult, hogy néha már a NAND vagy NOR flash memóriákon tárolt (pl. mobiltelefonoknál) alkalmazásszintű programokat is beleértik. Egy alapvetőbb definíció azonban még mindig az lenne, hogy „hardvereszközön tárolt állandó vagy nagyjából állandó adat”. Ez magában foglalhatna többszintű firmware-t: a processzor megvalósításában részt vevő mikrokódok és más kódok ROM-ját vagy PLA-ját, valamint a processzoron futó, ROM-ban vagy flashmemóriában tárolt alacsony szintű gépi kódot egyaránt. Az alkalmazásspecifikus integrált áramkörök (ASIC-ek) mikrokódja és egyéb adatai is jól megfelelnek ennek a meghatározásnak, nemkülönben a programozható logikai eszközök (PLD-k), melyeknek a beállításait tárolhatja belső biztosíték, ROM vagy flashmemória.

Személyi számítógépek

Bizonyos tekintetben egy számítógép működésében a különböző firmware-komponensek ugyanolyan fontos szerepet töltenek be, mint az operációs rendszer. A modern operációs rendszerektől eltérően azonban a firmware-ek ritkán rendelkeznek jól fejlett automatikus frissítési metódussal, ha az eszköz leszállítását követően derül fény egy hibára, az gyakran csak a végfelhasználó közreműködésével orvosolható.

Jelenleg a személyi számítógép perifériái, mint a videókártyák, hangkártyák vagy modemek firmware-jét gyakran az eszközmeghajtó program tölti be dinamikus módon, így az operációs rendszer frissítési mechanizmusain keresztül transzparens módon frissülhetnek. A BIOS-t egy gyakorlott felhasználó viszonylag egyszerűen „manuálisan” frissítheti egy segédprogram segítségével. Ezzel szemben a tároló eszközök (merevlemezek, DVD-meghajtók, pendrájvok) firmware-je nagyon ritkán kerül frissítésre, még akkor is, ha nem ROM-ban, hanem flashmemóriában tárolódik a firmware; nem is létezik szabványos mechanizmus ezek firmware-verziójának detektálására vagy frissítésére. A gyakorlatban ezekkel az eszközökkel amúgy is jóval ritkábban merülnek fel működésbeli problémák a frissíthető firmware-ű eszközökhöz képest. Mivel a tárolóeszközök egyes generációi között leginkább csak kis, lépcsőzetes változtatások vannak, a kód nagy része jól bevált és tesztelt.

Számítógép-perifériák
A legtöbb periféria maga is speciális célú számítógépnek tekinthető. A külső eszközök (nyomtatók, lapolvasók, videókamerák, pendrájvok stb.) firmware-je önállóan, az eszközön tárolódik, a modern videókártyák és más bővítőkártyák firmware-ének egyes részeit a nagyobb rugalmasság érdeklében a számítógép tölti be rendszerindításkor. Az ilyen eszközök ezért működésképtelenek lehetnek addig, amíg a gazdagép nem „eteti meg” őket a kért firmware-rel a hozzájuk írt eszközmeghajtó (pontosabban: egy eszközmeghajtó-csomag rendszerindító alrendszerének) segítségével. A modern eszközök beállításai, legyenek külsők vagy belsők gyakran közvetlen grafikus felhasználói felületen is hozzáférhetők, ami normál API-hívásokkal vezérli az eszközt, az eszközmeghajtóknál szokásos alacsony szintű rendszerhívások, hookok és egyéb megoldások mellett.

Fogyasztási cikkek
Mára gyakorlatilag az összes digitális zenelejátszó támogatja a firmware-frissítéseket. Ezek tartalmazhatnak például új lejátszható fájlformátumokat; az iriver így tette bele az eszközbe a Vorbis támogatását. De változtathatnak a GUI-n vagy növelhetik az akkumulátor élettartamát akár. A legtöbb mobiltelefon rendelkezik az automatikus firmware-frissítés (Firmware Over-the-Air) lehetőségével.

Személygépkocsik
1996-tól kezdve a legtöbb automobil tartalmaz valamiféle fedélzeti számítógépet és különböző, mechanikai problémákat érzékelő szenzorokat. Mára (2010) a modern gépjárművekben számítógéppel irányított ABS rendszerek és számítógép által működtetett automata sebességváltókat találhatunk. A vezető a műszerfalon látja a mért értékeket, pl. valós idejű fogyasztási adatokat vagy a keréknyomás értékét. A helyi gépjármű-kereskedők általában képesek a firmware frissítésére.

Példák 
Példák firmware-re:

 Fogyasztói cikkek:
 mosógépek időzítő és vezérlőrendszerei
 a modern televíziók hang- és képvezérlése, a csatornák kezelése
 Számítógépekben
 az IBM PC-kompatibilis személyi számítógépek BIOS-a,
 a platformkód Itanium rendszereken, Intel-alapú Mac OS X-gépeken és számos Intel alaplapon EFI-kompatibilis firmware
 Open Firmware, a Sun Microsystems, az Apple és a Genesi számítógépekben
 ARCS, a Silicon Graphics gépekben
 az Amiga számítógépek bekapcsoláskori tesztjét (POST) végző Kickstart program (hardverinicializálás, Plug and Play autokonfiguráció stb.), maga az AmigaOS rendszermagja.
 RTAS (Run-Time Abstraction Services), az IBM számítógépeiben
 a Common Firmware Environment (CFE)

Modding
Gyakran illetéktelenül módosított firmware-rel érnek el olyan funkciókat, amelyeket a gyártó nem engedélyezett, példa erre a DVD-lejátszók régiókód-ellenőrzésének kikapcsolása. Okostelefonok esetében is elterjedt jelenség a modding, azaz a gyári firmware egyedi feljavítása, változtatása.

Jegyzetek

Fordítás

Kapcsolódó szócikkek 
 Flashmemória

Szoftverek
Beágyazott rendszerek