- Firmware er den lavniveau-software, der er registreret på selve enheden, og som direkte styrer hardwaren.
- Drivere er operativsystemprogrammer, der fungerer som mellemled mellem operativsystemet og hver fysisk komponent.
- Firmware og drivere opdateres forskelligt, og en firmwarefejl er normalt mere kritisk end en driverfejl.
- Al firmware og drivere er software, men de opfylder specifikke roller i arkitekturen på enhver enhed.

I teknologiens verden hører vi hele tiden termer, men når vi stopper op og tænker over dem, forstår vi dem ikke fuldt ud. Firmware, drivere, controllere, software ... de lyder alle meget ens, og alligevel har hvert koncept en meget specifik funktion i en computer, en mobiltelefon eller endda en vaskemaskine.
Hvis du nogensinde har set en meddelelse om at opdatere din routers firmware eller skulle installere drivere til et nyt grafikkort, har du sikkert spekuleret på, hvad hver enkelt er, og hvorfor de er så vigtige. I de følgende linjer vil vi dykke ned i forskellene mellem firmware og drivere , hvordan de relaterer sig til anden software, og eksempler fra den virkelige verden, der tydeligt illustrerer hver enkelts rolle.
Hvad er firmware præcist?
Når vi taler om firmware, refererer vi til et meget grundlæggende, lille program, der findes i selve enheden og er ansvarlig for at bringe hardwaren til live. Det er ikke et program, du installerer, eller noget, du ser på dit skrivebord; det er den kode, der fortæller de elektroniske kredsløb, hvordan de skal starte, hvad de skal gøre, og hvordan de skal reagere på de kommandoer, de modtager.
Kort sagt er firmware den logik på laveste niveau, der styrer en elektronisk enhed . Den definerer de minimumsinstruktioner, som hardwaren skal bruge for at fungere korrekt: hvordan den tændes, hvordan dens interne komponenter initialiseres, hvordan den styrer strømforsyningen, og hvordan den kommunikerer med omverdenen. Uden dette program ville enheden ikke engang vide, hvor den skulle begynde.
Denne kode gemmes typisk i ikke-flygtige hukommelseschips (ROM, EEPROM, flash osv.) , der er integreret i enhedens printkort. Fra en USB-mus til et fjernsyn eller en moderne bil indeholder alle en eller anden form for firmware, der er gemt i en lille hukommelse adskilt fra hovedhukommelsen, hvor data eller applikationer gemmes.
Fra et teoretisk synspunkt betragtes firmware som både hardware og software . Det er hardware, fordi det er loddet på enhedens elektronik og tæt forbundet med den, men det er også software, fordi det i bund og grund er eksekverbar kode. Derfor siges det ofte at være et af de vigtigste forbindelsespunkter mellem den fysiske verden (hardware) og den logiske verden (software).
Udtrykket firmware optrådte første gang i 1967 i magasinet Datamation. Datalogen Ascher Opler opfandt ordet som "fast eller stationær software", der oprindeligt refererede til et lille område af specialiseret hukommelse, hvor et sæt grundlæggende computerinstruktioner blev defineret. Med tiden udvidede konceptet sig til at omfatte næsten enhver type mikrokode eller program indlejret i ROM eller lignende hukommelse.
Et klassisk eksempel på firmware på en pc er bundkortets BIOS eller UEFI . Det er det første, der kører, når du tænder computeren, og det er ansvarligt for at kontrollere, at hardwaren fungerer korrekt (RAM, harddiske, grafikkort osv.), initialisere den og forberede den til, at operativsystemet starter. Den lille blå eller grafiske grænseflade, der vises, før Windows eller Linux indlæses, er netop en del af firmwaren.
Ud over pc'er indeholder næsten alle moderne elektroniske enheder firmware . Vi finder det i fjernbetjeninger, fjernsyn, routere, vaskemaskiner, kameraer, multimediesystemer i bilen, MP3-afspillere... I alle disse tilfælde koordinerer firmwaren knapperne, sensorerne, motorerne eller kommunikationskredsløbene, så de reagerer korrekt på brugerens handlinger.
Hvor vi finder firmware dagligt
For at gøre det tydeligere, at firmware ikke er eksklusivt for avancerede computere, er det værd at gennemgå nogle almindelige enheder, hvor den findes . Faktisk har du sandsynligvis en lige foran dig uden at være klar over det, mens du læser dette.
Et af de tydeligste eksempler er fjernbetjeningen til et fjernsyn . Selvom den virker som en meget simpel enhed, indeholder den indeni en lille mikrocontroller med firmware, der fortolker knaptryk, genererer de korrekte infrarøde signaler og styrer aspekter som energibesparelse, når den ikke er i brug.
Computerudstyr, såsom tastaturer, mus, printere og trådløse hovedtelefoner, er også i bund og grund små, specialbyggede computere med deres egen firmware . Denne firmware gør det muligt for tastaturet at vide, hvilken tast der er blevet trykket på, og hvordan disse oplysninger sendes til pc'en, og printeren kan forstå udskriftskommandoer og styre dens interne motorer.
På en smartphone optræder firmware i flere lag. Først er der telefonens egen firmware (f.eks. bundkortets eller modemets firmware), som sikrer, at hardwaren og operativsystemet kan kommunikere problemfrit . Derefter har mange interne komponenter (som kameraet eller Wi-Fi-chippen) deres egen firmware, uafhængigt af den Android eller iOS, du ser på skærmen.
Routere er et andet eksempel, hvor firmware er kritisk. Den indlejrede software, de indeholder , styrer internetforbindelsen, Wi-Fi, netværksregler og sikkerhed . Hvis firmwaren fejler eller er dårligt designet, er det almindeligt, at netværket går ned, oplever stabilitetsproblemer eller endda gør enheden sårbar over for eksterne angreb.
I den mindre oplagte husholdningssfære inkluderer vaskemaskiner, opvaskemaskiner og ovne firmware, der oversætter brugerens programvalg til en række specifikke handlinger på motorer, ventiler, varmeelementer og temperatursensorer. Tilsvarende bruger moderne trafiklys og mange elektroniske skilte firmware til at koordinere timing, registrere køretøjer eller fodgængere og opretholde trafikflowet.
Firmwareopdateringer: hvorfor de er vigtige, og hvordan de administreres
Ligesom alt andet software kan firmware også indeholde fejl, sårbarheder eller begrænsninger , der bør rettes over tid. Derfor udgiver producenter lejlighedsvis nye firmwareversioner, der adresserer fejl, rettelser i sikkerhedshuller eller tilføjer mindre ekstra funktioner.
Opdatering af firmwaren er dog normalt ikke så automatisk eller praktisk som at opdatere et program . På mange enheder kræver processen, at man downloader en bestemt fil fra producentens hjemmeside, kopierer den til et USB-drev eller lignende og følger en bestemt procedure fra en skjult menu. I andre tilfælde, f.eks. med nogle routere eller tilsluttede enheder, giver enheden dig selv besked og guider dig gennem opdateringen.
I pc-miljøet kan værktøjer som AIDA64 eller hjælpeprogrammer fra bundkortproducenten hjælpe med at kontrollere tilgængelige BIOS- eller UEFI-versioner . Alligevel er det ikke ualmindeligt, at mange bruger den originale fabriksfirmware i årevis uden at opdatere den, fordi de tøver med at ændre noget så fundamentalt.
Det er vigtigt at være forsigtig, fordi en dårligt udført firmwareopdatering kan have alvorlige konsekvenser. Når processen afbrydes, eller en forkert fil indlæses, kan enheden blive ubrugelig og blive til det, der almindeligvis kaldes en "mursten ". Derfor anbefaler mange producenter ikke at opdatere, medmindre der er en klar grund, eller kun at bruge officielle værktøjer, der minimerer risikoen.
Den anden side af medaljen er, at det at holde firmwaren opdateret kan føre til betydelige forbedringer i ydeevne, kompatibilitet og sikkerhed . For eksempel kan en router få nye netværksfunktioner, en spillekonsol kan rette tilfældige nedbrud, eller en musikafspiller kan lære at genkende mere moderne lydformater.
Hvad er en driver eller controller?
Vi går videre til den anden store aktør, drivere er også softwareprogrammer, men de fungerer på et andet niveau end firmware . Deres formål er at fungere som en oversætter mellem operativsystemet og en specifik hardwareenhed, så systemet kan bruge den uden på forhånd at vide, hvordan den fungerer internt.
Vi kan tænke på en driver som det "fælles sprog" mellem Windows, Linux eller macOS og grafikkortet, printeren, netværkskortet eller enhver anden komponent . Operativsystemet foretager generiske anmodninger (for eksempel "udskriv dette dokument" eller "vis dette billede på skærmen"), og driveren er ansvarlig for at konvertere disse kommandoer til meget specifikke instruktioner, som hardwaren forstår.
I modsætning til firmware gemmes drivere ikke på hukommelseschips, der er integreret i enheden , men installeres i selve operativsystemet, typisk på harddisken eller det drev, hvor operativsystemet er placeret. Hvis du formaterer disken og geninstallerer Windows fra bunden, mister du alle installerede drivere , men hardwarefirmwaren forbliver intakt, fordi den findes et andet sted.
Det betyder, at stort set alle enheder, der er afhængige af et moderne operativsystem, har brug for en eller flere drivere for at fungere korrekt og udnytte deres muligheder fuldt ud . Uden den passende driver kan et kraftfuldt grafikkort være begrænset til en grundlæggende videotilstand, eller en multifunktionsprinter kan være begrænset til udskrivning uden mulighed for at scanne eller faxe.
Operativsystemer inkluderer typisk en række generiske drivere, der er designet til at yde grundlæggende understøttelse af en bred vifte af enheder. Disse drivere gør det muligt for en grundlæggende USB-mus eller et USB-tastatur at fungere øjeblikkeligt efter tilslutning. For at udnytte avancerede funktioner frigiver producenterne dog specifikke drivere, der er optimeret til deres hardware , og som skal installeres fra deres officielle websteder.
Vigtige forskelle mellem firmware og drivere
Selvom både firmware og drivere er software, der interagerer med hardware, udfylder de ikke den samme rolle eller indtager samme niveau i et systems arkitektur. Forståelse af disse forskelle hjælper dig med at vide præcis, hvad du laver, når du opdaterer noget.
For det første er firmware det laveste niveau af software, der kommunikerer direkte med elektronikken . Det kører på selve enheden og er tæt forbundet med dens kredsløb. I modsætning hertil fungerer drivere på et højere niveau, integreret i operativsystemet og kommunikerer med firmwaren eller andre mellemliggende lag for at styre hardwaren.
En anden vigtig forskel er, hvor hver enkelt er gemt. Firmware findes i sit eget hukommelsesmodul i enheden , adskilt fra computerens eller mobiltelefonens primære lagerdrev. Drivere gemmes derimod på den samme disk eller lagerenhed, hvor operativsystemet er installeret, og udgør en del af dets interne filer.
Dette gør opførslen efter formatering eller geninstallation meget anderledes. Hvis du sletter og geninstallerer systemet, mister du driverne, men ikke firmwaren . Hardwaren vil stadig have sit integrerede program, men systemet vil ikke længere vide, hvordan det skal kommunikere med den, før du geninstallerer de relevante drivere.
Måden de opdateres på varierer også betydeligt. Drivere opdateres normalt nemt og endda automatisk via operativsystemværktøjer eller hjælpeprogrammer fra producenten. Firmwareopdateringer er derimod ofte mere delikate og manuelle og kræver mere kontrollerede processer og i nogle tilfælde specifik teknisk viden.
Med hensyn til virkningen af en fejl, kan defekte drivere forårsage, at en enhed holder op med at fungere korrekt i operativsystemet (nedbrud, mærkelig opførsel, blå skærme), men enheden tænder normalt stadig og forbliver genkendelig. Hvis firmwaren er defekt, er det meget mere sandsynligt, at enheden slet ikke starter eller bliver helt ubrugelig.
Firmware, drivere og resten af softwaren
En almindelig kilde til forvirring er, at firmware, drivere og software generelt ofte slås sammen, når de i virkeligheden er undergrupper med forskellige funktioner . Alle drivere og al firmware er generelt set software, men ikke al software er firmware eller en driver.
Når vi taler om software, refererer vi normalt til programmer, som brugeren ser og bruger direkte , såsom et tekstbehandlingsprogram, en webbrowser, et billedredigeringsprogram eller endda selve operativsystemet. Disse er applikationer og systemer, der er designet til at udføre specifikke opgaver og tilbyde en brugervenlig grænseflade.
Operativsystemet (Windows, Linux, Android, iOS…) er også en type software, der er ansvarlig for at levere et arbejdsmiljø til andre programmer , administrere ressourcer, hukommelse, brugere, tilladelser osv. Inden for dette økosystem er drivere integreret som specielle komponenter, der udvider systemets evne til at kommunikere med nye typer hardware.
Firmware derimod fungerer under alt dette, på et niveau hvor der ikke er vinduer, ikoner eller visuelle elementer . Det implementerer blot enhedens interne logik og leverer meget grundlæggende grænseflader (som BIOS-skærmen) eller grænseflader, der endda er usynlige for brugeren. Trods denne frihed ville operativsystemet ikke have noget at arbejde med uden firmware.
Denne store softwarepakke indeholder også potentielt skadelige komponenter, såsom malware: virus, trojanske heste, orme og andre trusler, der udnytter sårbarheder i drivere, firmware eller applikationer . Faktisk er der i de senere år dukket malware op, der specialiserer sig i at angribe BIOS-firmware, routere og endda harddiske, netop fordi disse systemer tilbyder meget bedre isolering af angrebet og er vanskelige at opdage og fjerne.
Kan firmwaren hackes eller ændres?
Fordi firmware ofte er "skjult" i elektronikken, tror nogle mennesker, at den er urørlig. Realiteten er, at det i sidste ende stadig er kode og kan ændres, hvis du har den nødvendige viden, værktøjer og adgang. Processen er dog normalt meget mere kompleks end at installere eller afinstallere et almindeligt program.
Specialiserede fora er fulde af eksempler på brugerdefineret firmware til routere, spillekonsoller, kameraer og medieafspillere , der tilføjer avancerede funktioner, fjerner producentbegrænsninger eller puster nyt liv i enheder, der har manglet. I verdenen af forbundne biler og hjemmeautomation ser vi også interessante modifikationer for at låse op for skjulte funktioner.
Nu er det vigtige spørgsmål, om vi skal gøre det. I de fleste tilfælde er det ikke en god idé at pille ved firmwaren uden solid viden . Udover at det kan være ulovligt at omgå visse beskyttelser i mange lande, er de praktiske risici høje: at gøre enheden ubrugelig, åbne døre for angreb, ugyldiggøre garantien eller overtræde netværksbrugsregler, blandt andet.
Ondsindede firmwareangreb er især bekymrende, fordi de er rettet mod et meget lavt niveau i softwarestakken . Malware, der er indlejret i BIOS-firmwaren, kan for eksempel overleve fulde diskformateringer, geninstallationer af operativsystemet og andre almindelige oprydningsforanstaltninger, hvilket gør det meget vanskeligt at udrydde.
Af alle disse grunde er den sædvanlige og anbefalede praksis for langt de fleste brugere at holde sig til de officielle firmwareversioner fra producenterne og kun anvende klart dokumenterede opdateringer. Eksperimentelle ændringer bør overlades til eksperter, der ved præcis, hvad de laver.
Er det, jeg programmerer, firmware eller en driver? Et praktisk eksempel
For yderligere at tydeliggøre forskellen er det nyttigt at se på et meget specifikt tilfælde, der ofte giver anledning til tvivl: Forestil dig, at du har en steppermotorcontroller, såsom TMC5130 , og du vil skrive den kode i C, der styrer læsning og skrivning af dens registre, samt den SPI- eller UART-kommunikationsprotokol, den bruger.
Hvis den kode skal programmeres direkte ind i en mikrocontroller, der styrer motoren og er en del af programmet i selve enheden , så taler vi om firmware. Med andre ord er den endelige binære fil, der flashes på MCU'en, og som definerer, hvordan motoren bevæger sig, under hvilke forhold, med hvilke accelerationsramper osv., tydeligvis firmware.
Hvis det, du derimod udvikler, er et genbrugeligt bibliotek, der tillader enhver mikrocontroller at kommunikere med den pågældende TMC5130-controller på en standardiseret måde, kan det snarere betragtes som en driver i bred forstand: et mellemliggende lag, der abstraherer detaljerne i registrene og protokollen og dermed eksponerer en mere bekvem API for andre dele af systemet.
I operativsystemer som Linux eller Windows bruges udtrykket "driver" ret præcist til at henvise til de moduler, som systemet selv indlæser for at understøtte en enhed . I indlejrede systemer bliver grænsen dog sløret, og udtrykket "drivere" bruges ofte til at betegne disse abstraktionslag, selvom de ender med at blive integreret i enhedens firmware.
Det vigtige, ud over navnet, er at forstå, at firmware er det overordnede kodesæt, der styrer enheden , og at der i det kan være moduler eller logiske drivere, der implementerer kommunikation med specifikke komponenter. I en printermikrocontroller inkluderer den komplette firmware f.eks. motordriveren, printhoveddriveren, papirsensordriveren og så videre.
I sidste ende er både firmware og drivere en del af den samme kæde: Firmwaren styrer direkte hardwaren , og driverne (især i generelle operativsystemer) fungerer som fortolkere mellem den hardware og den software på højere niveau, som brugeren bruger dagligt.
Hele dette netværk af firmware, drivere og generel software fungerer i baggrunden, så når vi tænder en enhed, trykker på en knap eller åbner et program, reagerer alt øjeblikkeligt, uden at vi overhovedet tænker over det. At forstå, hvordan opgaver er fordelt, og hvordan de adskiller sig, hjælper os med at træffe bedre beslutninger, når vi opdaterer, diagnosticerer fejl eller overvejer, hvor meget det er værd at rode med indersiden af vores enheder.
Passioneret forfatter om bytes-verdenen og teknologien generelt. Jeg elsker at dele min viden gennem skrivning, og det er det, jeg vil gøre i denne blog, vise dig alle de mest interessante ting om gadgets, software, hardware, teknologiske trends og mere. Mit mål er at hjælpe dig med at navigere i den digitale verden på en enkel og underholdende måde.
