Firmware kontra programvara: likheter och skillnader

By rik

Termerna inbyggd programvara och mjukvara används frekvent i samband med moderna datorsystem och inbyggda lösningar.

Vår värld genomgår en digital transformation, där majoriteten av arbetsuppgifter utförs med hjälp av datorer. I diskussioner om datorer är ’mjukvara’ och ’hårdvara’ de mest grundläggande begreppen.

Moderna tekniska enheter är resultatet av komplexa tillverkningsprocesser. Förutom olika typer av mjukvara och hårdvara, finns det också den inbyggda programvaran, eller firmware.

Inom elektronikindustrin är både firmware och mjukvara viktiga. Det kan dock vara svårt att särskilja dem, eftersom deras syften ibland kan överlappa.

Ett exempel är när en Android-operativsystemuppdatering installeras manuellt, då kan termen ’firmware’ användas. Det betyder att när operativsystemet uppdateras på en Android-telefon, är programvaran specifikt anpassad för telefonens hårdvara, vilket är just firmware.

Om det här låter förvirrande, låt mig förklara ämnet grundligt.

I den här artikeln kommer jag att reda ut skillnaderna, likheterna och användningsområdena för både mjukvara och firmware.

Låt oss börja!

Vad är firmware?

Inom datorvetenskapen refererar firmware till en specifik typ av datorprogramvara. Denna ger grundläggande kontroll över hårdvaran i en enhet. Firmware innehåller de mest grundläggande funktionerna för enheten och tillhandahåller ett gränssnitt för högre nivåer av mjukvara, såsom operativsystem.

För enheter med mindre komplex funktionalitet, fungerar firmware som hela operativsystemet, och hanterar styrning, övervakning och databearbetning. Den är lagrad i icke-flyktiga minnesenheter, såsom EPROM, EEPROM, flashminne och ROM.

Uttrycket ”firmware” skapades 1967 av den amerikanska forskaren Ascher Opler. Han använde termen för att beskriva ett mikroprogram som finns mellan mjukvara och hårdvara.

För att uppdatera firmware, behövde man tidigare fysiskt byta ut ROM-kretsen eller omprogrammera EPROM. Vissa typer av fasta minnesenheter är omöjliga att ändra efter att de installerats permanent.

Idag är vanliga orsaker till firmwareuppdateringar att åtgärda fel, lägga till nya funktioner och förbättra enheten. Man kan förenklat säga att firmware är ”hårdvarans mjukvara”. Trots att mjukvara är ett annat begrepp, så är de relaterade, men inte utbytbara.

Tillverkare släpper ofta regelbundna uppdateringar för att hålla hårdvaran aktuell och kompatibel med ny teknik. Även tillverkare av nätverksroutrar publicerar firmwareuppdateringar för att optimera nätverkets prestanda. Samma sak gäller för smartphone- och kameratillverkare. Du kan enkelt ladda ner dessa uppdateringar från tillverkarens webbplats.

All firmware kan delas in i tre huvudkategorier, beroende på hur nära den är integrerad med hårdvaran. Dessa är:

  • Lågnivåfirmware: Denna typ av firmware anses vara en del av själva hårdvaran. Den lagras på skrivskyddade och icke-flyktiga kretsar som ROM, vilket gör det omöjligt att skriva över eller ändra den. Enheter med lågnivåfirmware i sina system har minne som endast kan programmeras en gång.
  • Högnivåfirmware: Denna typ av firmware tillåter uppdateringar, men är något mer komplicerad än lågnivåfirmware. Den lagras i flashminneskretsar.
  • Subsystemfirmware: Denna firmware är en del av ett inbyggt system. Ett exempel är serverns strömförsörjningssystem. Strömförsörjningen är en del av serverns hårdvara som fungerar delvis oberoende av själva servern.

Exempel: BIOS eller Unified Extensible Firmware Interface (UEFI), USB-enheter, sensorer, små datorer, smartkort, etc.

Hur fungerar firmwareuppdateringar?

Firmwareuppdateringar erbjuds ofta för att skydda mot hacking, förbättra säkerheten, rätta till fel, införa nya funktioner och hantera ny media. De består av kod som talar om för hårdvaran att ändra sitt beteende.

Vissa enheter med internetanslutning letar regelbundet efter ny firmware och laddar ner och installerar den automatiskt. Andra enheter kräver att användaren besöker en webbplats för att manuellt ladda ner och installera uppdateringarna. Hur ofta uppdateringarna släpps beror på hur enheten används. Firmware i smarta enheter behöver inte alltid uppdateras så ofta.

Smartphones uppgraderar ofta firmware tillsammans med programuppdateringar. Detta säkerställer att telefonen fortsätter att fungera optimalt och användaren behöver inte manuellt uppdatera firmwareversionerna. Många elektroniska enheter kräver också att de förblir påslagna under tiden firmware uppdateras.

Vad är mjukvara?

Mjukvara är data, program eller instruktioner som används för att utföra datoroperationer och lösa specifika uppgifter. Det är motsatsen till hårdvara, som beskriver de fysiska delarna av ett datorsystem. Mjukvara är icke-fysisk.

Mjukvara är en samling av skript, program och applikationer som körs på en enhet. Därför är mjukvara en variabel del av datorn. De huvudsakliga kategorierna av mjukvara är:

  • Applikationsmjukvara: Denna typ av mjukvara är utvecklad för att möta specifika datorbehov och utföra användbara uppgifter.
  • Systemmjukvara: Systemmjukvara är utformad för att styra enhetens hårdvara. Den tillhandahåller också en plattform för applikationsmjukvara att köras på.
  • Programmeringsmjukvara: Denna programvara tillhandahåller verktyg som en mjukvaruutvecklare behöver. Den kan också kallas mellanprogramvara, som fungerar mellan system- och applikationsmjukvara. Dessutom finns det drivrutinsprogram som styr dina datorenheter och kringutrustning.

I början av 1980-talet såldes mjukvara på disketter. Senare övergick man till CD- och DVD-skivor. Nu laddas det mesta av programvaran ner direkt via internet. Du kan enkelt hitta olika typer av programvara från leverantörernas webbplatser.

Låt oss se några av typerna av mjukvarudesign:

  • Arkitektonisk design: Denna typ av mjukvarudesign utgör grunden för programvaran, och specificerar systemets struktur, huvudkomponenter och deras relationer med varandra genom att använda arkitektoniska designverktyg.
  • Högnivådesign: Det andra lagret av mjukvarudesign fokuserar på implementeringen av systemet och dess komponenter som moduler i en mjukvarustapel. Det beskriver också relationerna mellan de olika modulerna och funktionerna i systemet, samt dataflödet.
  • Detaljerad design: Det tredje lagret i mjukvarudesignprocessen fokuserar på implementeringsdetaljerna för den specificerade mjukvaruarkitekturen.

Kvaliteten på mjukvara kan mätas genom flera aspekter, bland annat tillgänglighet, kompatibilitet, funktionalitet, prestanda, portabilitet, installerbarhet, lokalisering, effektivitet, underhållbarhet, säkerhet, användbarhet, testbarhet och tillförlitlighet.

Hur fungerar mjukvara?

All mjukvara ger datorn data och instruktioner för att fungera och möta användarens behov. Som beskrivits ovan kan applikations- och systemmjukvara fungera på olika sätt.

Applikationsmjukvara

Applikationsmjukvara omfattar många program som utför specifika uppgifter för användaren, såsom att navigera på webbplatser eller skriva rapporter. Den utför också uppgifter för andra applikationer. Även om applikationsmjukvara är en typ av mjukvara, kan den inte köras av sig själv. Den behöver ett datoroperativsystem och annan systemmjukvara för att fungera.

Applikationsmjukvara är program som installeras på användarens dator och använder datorns minne för att utföra vissa uppgifter. Dessa tar upp utrymme på hårddisken och behöver inte en internetanslutning för att utföra sina uppgifter.

Webbaserade applikationer, å andra sidan, behöver en internetanslutning för att fungera. De är inte beroende av systemmjukvara eller hårdvara för att fungera. Enheter med webbläsare låter användaren starta webbapplikationer snabbt.

Systemmjukvara

Systemmjukvaran fungerar som ett mellanting mellan applikationsmjukvara och datorns hårdvara. Den körs i bakgrunden och hanterar de viktigaste funktionerna i datorn. Systemmjukvara samordnar systemet och hårdvaran så att du kan köra högre nivåer av mjukvara för att utföra specifika uppgifter.

Systemmjukvaran startar när datorn startas upp och fortsätter att köras så länge som datorsystemet är påslaget. Den är skriven i lågnivåmaskinkod eller assemblerspråk. Därför körs den självständigt och gör det möjligt för datorsystemet att fungera effektivt.

Firmware vs Software: Likheter

Termerna firmware och mjukvara används ofta synonymt när det gäller inbyggda system. Inom denna industri delar de vissa likheter. På andra sätt kan firmware ses som en typ av lågnivåmjukvara.

Du kan till och med se jobbannonser som nämner ”Embedded Software Engineer” eller ”Embedded Firmware Engineer” med samma arbetsbeskrivning. Detta beror på att applikationssidan av systemet utvecklas tillsammans med systemsidan.

Till exempel, när du arbetar med en enkel ”barebone”-design (utan ett operativsystem), kommer du att ha några mikrokontrollerleverantörspecifika filer (CPU-stödjande drivrutiner och headers) och några tredjepartsdrivrutiner (för skärm och TCP/IP). Dessa filer hanterar hårdvarusidan av programvaran.

Med dessa drivrutiner och headers kan du skriva applikationsmjukvara; senare kombineras alla filer till en binär fil. Om du använder ett operativsystem som FreeRTOS eller VxWorks, kommer RTOS att hantera minneshantering och kontextväxling. Trots det behöver du skriva applikationsmjukvara med hjälp av mikrokontrollerdrivrutiner, tredjepartsdrivrutiner och RTOS-filer.

Firmware vs Software: Skillnader

Låt oss nu utforska några skillnader mellan firmware och mjukvara.

Firmware Mjukvara
Det är en typ av programvara som styr hårdvaran och regelbundet uppdateras. Det är en uppsättning instruktioner för ett datorsystem.
Firmware är programvara på låg nivå som finns mellan operativsystemet och hårdvaran. Mjukvara finns ovanpå operativsystemet och interagerar inte direkt med hårdvaran.
Det inkluderar lågnivåfirmware, högnivåfirmware och subsystemfirmware. Det inkluderar applikationer, system, programmeringsverktyg, mellanprogram och drivrutiner.
Dess storlek är liten. Dess storlek kan vara stor.
Den är i princip oföränderlig. Den kan anpassas eller modifieras beroende på användarens preferenser eller behov.
Den programmeras vanligtvis bara en gång. Du kan installera och avinstallera mjukvaran hur många gånger du vill.
Firmware lagras i hårdvarans flashminne. Den lagras på en sekundär lagringsenhet för datorsystemet.
Lågnivåprogrammeringsspråk används i utvecklingen. Både hög- och lågnivåprogrammeringsspråk används i utvecklingen.
Den körs direkt på minneskretsar som är icke-flyktiga sekundärminnen som EEPROMS och flash. Den kopieras från flyttbara medier (t.ex. DVD-skivor, USB-enheter) och installeras på lagringsenheter som SSD eller hårddiskar.
Exempel: UEFI- och BIOS-firmware som datormoderkortstillverkare tillhandahåller, och öppen källkodsrouterfirmware som OpenWrt och DD-WRT. Exempel: Operativsystem som Linux, Android, Windows, etc., och applikationer som webbläsare, appar, spel, MS Office, etc.

Firmware vs Software: Användningsfall

Användningsfall av firmware

Firmware finns i många olika typer av datorutrustning, inklusive komplexa enheter. Några verkliga exempel på hur firmware används är:

  • Personliga datorer: En dators firmware är inbäddad i en liten minneskrets. Datorkringutrustning som grafikkort och grafik innehåller också firmware.
  • Hushållsapparater: Tvättmaskiner och diskmaskiner använder firmware. Det låter maskinen kommunicera med en dator som konfigurerar inställningar och kontroller.
  • Lagringsenheter: Hårddiskar, bärbara lagringsenheter och USB-enheter innehåller firmware som gör att de kan fungera med ett datorsystem.
  • Smartkort: Smartkort innehåller också firmware som bäddar in instruktioner i kretsen för att erbjuda grundläggande funktioner, kryptering och autentisering.
  • Fordon: Fordon innehåller sensorer, små datorer och inbyggda system med firmware som hjälper dem att utföra sina uppgifter.
  • Mobila enheter: Bärbara datorer, surfplattor, smartphones och andra mobila enheter innehåller firmware som gör att hårdvaran kan köras med olika program.

Användningsfall av mjukvara

De flesta användare är bekanta med mjukvara. Allt som installeras eller laddas ner på en dator eller andra enheter är i form av mjukvara. Att använda mjukvara är en del av vardagen och har en bred användning över hela världen.

Några exempel på applikationsmjukvara är:

  • Ordbehandlingsprogram: MS Word, Anteckningar och Wordpad
  • Kalkylprogram: Microsoft Excel, Apple Numbers, etc.
  • Databasprogramvara: MS Access och Oracle, etc.
  • Simuleringsprogramvara: Vetenskapliga simulatorer och flygsimulatorer
  • Företagsprogramvara: Customer Relationship Management System (CRM)
  • Multimediaprogramvara: Mediaspelare och Real player
  • Utbildningsprogramvara: Encarta, Britannica Mathematical, Google Earth, NASA World Wind
  • Presentationsprogramvara: Keynotes och Microsoft Powerpoint
  • Informationshanteringsprogramvara: Resurshanteringsverktyg, dokumentationsverktyg, etc.
  • Applikationssviter: Microsoft Office, OpenOffice, etc.
  • Programvara för innehållsåtkomst: webbläsare, mediaspelare, med mera

Några exempel på systemmjukvara är:

  • Operativsystem som Windows, macOS och Linux
  • Drivrutiner för enheter
  • Firmware
  • BIOS och UEFI
  • Översättare av programmeringsspråk
  • Verktyg

Slutsats

Firmware används vanligtvis för att mikrokoda det inbyggda systemet i de flesta hårdvara, medan mjukvara refererar till program på högre nivå. Det är svårt att ändra firmware, medan programvara är mycket mer flexibel.

Firmware är i grunden systemmjukvara som styr en enhets hårdvara. Mjukvara är däremot en uppsättning instruktioner som låter din dator eller andra enheter utföra uppgifter. Jag hoppas att de viktigaste skillnaderna och likheterna mellan firmware och mjukvara nu är tydliga.

Du kan också vara intresserad av att lära dig mer om Internet of Things (IoT).