Firmware
Firmware eli laiteohjelmisto on tietotekniseen laitteeseen kiinteästi asennettu ohjelmisto tai sen osa, joka huolehtii laitteen perustoiminnoista. Kyseessä on siis tavallaan laitteiston ja ohjelmiston yhdistelmä. Suomenkieliseksi termiksi on ehdotettu myös "laitelmistoa", mutta se ei ole vakiintunut käyttöön. Sen sijaan joskus käytetään epätäsmällistä suomennosta "varusohjelma", jonka alakäsitteistöön kuuluvat sekä alkulatausohjelma (esimerkiksi bios) että käyttöjärjestelmä (tietokoneen käyttöjärjestelmä ei kuitenkaan ole firmwarea, sillä se on suhteellisen helposti päivitettävissä ja vaihdettavissa).
Alun perin "firmware" tarkoitti lähinnä suorittimen mikro-ohjelmaa. Tällainen ohjelma ei ollut muutettavissa ainakaan tavanomaisin keinoin, mistä johtuu sanan alkuosa "firm" ’kiinteä’. Vähitellen "firmware" on alkanut tarkoittaa ohjelmistoa, joka on asennettu pysyvästi laitteen omaan muistiin erotukseksi kiintolevyyn tai muuhun massamuistiin tallennetuista ohjelmista. Periaatteessa kyse on sellaisesta ohjelmasta, joka toimii laitteiston ("hardware") ja ohjelmiston ("software") välissä.
Firmware-ohjelmalle on tyypillistä, että se on valmiiksi keskusmuistia vastaavassa muistissa ja toimii suoraan ilman alustusta, toisin kuin massamuistiin tallennettu ohjelma, joka pitää ennen suorittamista siirtää keskusmuistiin ja jolle on varattava ja alustettava muistitila. Käytännössä jokaisessa tietokoneessa on ainakin jonkin verran firmwarea, joka käynnistysvaiheessa hakee massamuistista varsinaisen suoritettavan ohjelmiston tai käyttöjärjestelmän käynnistyskoodin. Firmware voi huolehtia myös laitteiston testauksesta ja tarjota palveluja sovellusohjelmille.
Joissain tapauksissa laitteen koko ohjelmisto on luokiteltavissa firmwareksi. Tällöin on tavallisesti kyse sulautetusta järjestelmästä. Firmware huolehtii esimerkiksi digisovittimen tai matkapuhelimen perustoiminnoista.
Ohjelmistopäivityksillä korjataan toiminnoissa ilmenneitä virheitä, mutta päivitys voi myös lisätä uusia ominaisuuksia. Joidenkin laitteiden, kuten autojen ajotietokoneiden, firmware voidaan päivittää vain erikoishuollossa.
Alun perin firmware ei ollut ohjelmallisesti muutettavissa, aina ei edes laitteistotasolla muuten kuin vaihtamalla koko laitteisto toiseksi. Tyypillisesti päivitys tehtiin siten, että ohjelman sisältävät haihtumattomat muistipiirit (PROM tai EPROM) vaihdettiin toisiin. Tämä edellytti laitteen avaamista ja pahimmillaan vanhan piirin juotoksien avaamista ja uuden juottamista sen tilalle. Yleensä tällaiset muistit tosin varustettiin sellaisella kannalla, että vaihtaminen onnistui ruuvitaltalla, mutta joka tapauksessa vaihtaminen oli kallista, joten muutoksia tehtiin vain hyvin painavista syistä.
Kun sähköisesti uudelleenohjelmoitavat haihtumattomat muistit tulivat sekä teknisesti että taloudellisesti kilpailukykyisiksi, niitä alettiin käyttää firmwaren tallentamiseen. Tämä mahdollisti firmwaren muuttamisen jälkeenpäin ohjelmallisesti. Päivitettävä firmware kuuluu useimmiten johonkin sulautettuun järjestelmään, mutta päivitystarve voi koskea myös tietokoneita, joiden käynnistyksestä ja perustoiminnoista vastaava bios tai oheislaitteiden firmware voidaan joskus joutua päivittämään. Parhaassa tapauksessa laite voi huolehtia päivityksestä täysin omatoimisesti, kuten osa digisovittimista tekee, jos päivitystiedot välittyvät televisiosignaalin mukana. Yleensä päivittäminen vaatii kuitenkin käyttäjältä toimenpiteitä ja perehtymistä.
Firmwaren päivitys voi olla herkkä sähkökatkoille tai muille häiriöille. Häiriöherkkyys riippuu sekä laitteistosta että päivittävästä ohjelmasta, mutta pahimmillaan laitteen päivitys voi jäädä puolitiehen, niin että vanha ohjelma on poistunut mutta uusi ei ole vielä tallentunut tilalle. Tällöin laitteessa ei ole enää sellaista ohjelmaa, jolla tilanteen voisi korjata. Erikoishuollossa voidaan sekaisin mennyt muisti ohjelmoida ulkoisella laitteella ja näin saada laite vielä toimivaksi.