Firmware -komponenter varierar beroende på enheten den körs på, men inkluderar i allmänhet:
1. Bootloader: Detta är det första kodstycket som körs när enheten driver på. Dess primära ansvar inkluderar:
* Initialisering av hårdvara: Ställa in CPU, minne och kringutrustning.
* Laddar huvudfirmware: Lokalisera och ladda operativsystemet eller applikationskoden från lagring (flashminne, ROM, etc.).
* Utför självtest: Kontrollera efter hårdvarufel.
* Hanteringsuppdateringar: Tillhandahålla mekanismer för att uppdatera huvudfirmware.
2. Operativsystem (OS) eller realtidsoperativsystem (RTO): Många implementeringar av firmware inkluderar ett lätt OS eller RTOS för att hantera resurser och uppgifter. Detta är vanligare i komplexa enheter. Enklare enheter kan hoppa över denna komponent helt. OS/RTOS -handtagen:
* Uppgiftsplanering: Hantera exekveringen av olika mjukvarumoduler.
* Minneshantering: Tilldela och frigöra minne för uppgifter.
* Inter-Process Communication (IPC): Tillåter olika mjukvarumoduler att kommunicera.
* Avbrottshantering: Svara på hårdvaruavbrott.
* enhetsdrivare: Gränssnitt med hårdvarukomponenterna.
3. Applikationskod: Detta är enhetens kärnfunktionalitet. Den utför de specifika uppgifterna som enheten är designad för. Exempel inkluderar:
* Kontrollalgoritmer: I inbäddade system, styrande motorer, sensorer eller andra ställdon.
* Användargränssnitt (UI) Rutiner: Hantera användarinmatning och visa utgång på en skärm eller annat gränssnitt.
* Nätverksprotokoll: Kommunicera med andra enheter via ett nätverk.
* Databehandling och lagring: Insamling, bearbetning och lagring av data.
4. Enhetsdrivare: Dessa är mjukvarumoduler som fungerar som gränssnitt mellan firmware och hårdvarukomponenterna på enheten. De tillhandahåller funktioner för att komma åt och styra specifik hårdvara, till exempel:
* Minnekontroller: Åtkomst till olika typer av minne.
* perifera drivrutiner: Kontrollerande kringutrustning som sensorer, skärmar och kommunikationsgränssnitt (UART, SPI, I2C, USB, etc.).
* Network Interface Controllers (NICS): Aktivera kommunikation över nätverk.
5. Bibliotek och verktyg: Dessa är förskrivna kodmoduler som ger vanliga funktioner, till exempel:
* matematiska funktioner: Utföra beräkningar.
* strängmanipulation: Arbetar med textsträngar.
* datastrukturer: Organisera och hantera data.
I huvudsak är firmware ett skiktat system. Bootloader initialiserar hårdvaran och laddar OS/RTO:er (om det finns), som sedan hanterar exekveringen av applikationskoden och interagerar med hårdvaran genom enhetsdrivrutiner. Bibliotek och verktyg ger supportfunktioner till alla lager. De specifika komponenterna och deras komplexitet beror starkt på målenhetens funktionalitet och kapacitet.