Firmware

Firmware (tai laiteohjelmisto[1]) on tietoteknisen laitteen toimintaa ohjaava ohjelmisto tai sen osa, joka huolehtii laitteen perustoiminnoista. Firmware on joukko käskyjä laitteen omalla käskykannalla ja kertoo miten laite kommunikoi muiden komponenttien kanssa.[2] Firmware voi olla ROM-muistissa tai päivitettävässä flash-muistissa.[2] Firmware ei ole sama kuin käyttöjärjestelmän laiteajuri.

Kyseessä on siis tavallaan laitteiston ja ohjelmiston yhdistelmä.[3] Suomenkieliseksi termiksi on ehdotettu myös laitelmistoa,[4] 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ä[5] (tietokoneen käyttöjärjestelmä ei ole firmwarea, sillä se on suhteellisen helposti päivitettävissä ja vaihdettavissa toisin kuin sulautetun järjestelmän).

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ä.

Toiminta

Firmware voi olla valmiiksi suoritettavissa ROM-muistissa ja laite voi suorittaa sitä suoraan. Tämä eroaa massamuistiin tallennetusta ohjelmasta, 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 alustaa laitteiston siten, että käynnistyslataaja voi aloittaa käyttöjärjestelmän lataamiseen. Firmware voi huolehtia myös laitteiston testauksesta ja tarjota palveluja sovellusohjelmille. Firmware huolehtii esimerkiksi digisovittimen tai matkapuhelimen perustoiminnoista.

Eräissä tietokoneiden oheislaitteissa (kuten näytönohjaimissa) voi olla myös niiden omaa firmwarea.[6] Myös tietokoneen muu laitteisto voi tarvita erillistä firmwarea eikä käyttöjärjestelmän laiteajuri yksistään ole riittävä.[7][8][9][10]

Sulautetussa järjestelmässä laitteen koko ohjelmisto voidaan luokitella firmwareksi mukaan lukien sen käyttöjärjestelmä.[11] Joissakin kevyissä sulautetuissa järjestelmissä ei ole käyttöjärjestelmää, vaan laite suorittaa firmwarea suoraan.[11] Perinteisesti firmware on kehitetty vain tiettyä tarkoitusta varten, jolloin uudelleenkäyttäminen tai siirtäminen on vaikeaa tai mahdotonta.[12] Syynä tähän ovat olleet rajoitukset käytettävissä oleville resursseille, mutta moderneissa mikrokontrollereissa on enemmän muistia ja hinta on edullisempi.[12]

Firmwaren ja sulautettujen järjestelmien ohjelmointiin käytetään yleisesti C-kieltä, joka lähellä laitteistoa, mutta ei ole niin laitekohtaista kuin assembly.[13]

Päivitys

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.

Katso myös

Lähteet

  1. https://termipankki.fi/tepa/fi/haku/laiteohjelmisto
  2. a b Firmware techterms.com. Viitattu 27.2.2020. (englanniksi)
  3. Mikä on laiteohjelmisto? 15.5.2013. Apple. Viitattu 22.3.2014.
  4. ”Laitelmisto”, ATK-sanakirja, s. 72. (Seitsemäs uusittu painos) Tietotekniikan liitto, 1994. ISBN 951-762-214-7
  5. ”Varusohjelma”, ”varusohjelmisto”, MOT: Tietotekniikan liiton ATK-sanakirja. (Viitattu 21.3.2014.)
  6. Michael Larabel: NVIDIA Publishes Signed Ampere Firmware To Finally Allow Accelerated Open-Source Support phoronix.com. 11.4.2022. Viitattu 12.12.2022. (englanniksi)
  7. 6.4. Loading Missing Firmware debian.org. Viitattu 7.6.2023. (englanniksi)
  8. Chris Hoffman: How Intel and PC makers prevent you from modifying your laptop’s firmware pcworld.com. 13.2.2015. Viitattu 7.6.2023. (englanniksi)
  9. Michael Larabel: Raspberry Pi GPU Driver Turns Out To Be Crap phoronix.com. 24.10.2012. Viitattu 7.6.2023. (englanniksi)
  10. Ian Evenden: Debian Votes To Add Non-Free Firmware to Official Install Media tomshardware.com. 6.10.2022. Viitattu 7.6.2023. (englanniksi)
  11. a b Stringham, Gary: Hardware/Firmware Interface Design, s. 6. Newnes, 2010. ISBN 978-1-85617-605-7 (englanniksi)
  12. a b Beningo, Jacob: Reusable Firmware Development: A Practical Approach to APIs, HALs and Drivers, s. 2. Apress, 2017. ISBN 978-1-4842-3297-2 (englanniksi)
  13. Introduction to Embedded Firmware Development predictabledesigns.com. 22.12.2021. Viitattu 12.12.2022. (englanniksi)

Aiheesta muualla