Firmware is software that is embedded into hardware devices. It is the "brain" that tells the hardware exactly how to behave at a very low level. Unlike normal applications (like WhatsApp or Chrome), firmware runs directly on the device (often without an operating system) and is stored in non-volatile memory (it stays even when power is off).

Simple Definition

Firmware = Permanent (or semi-permanent) software written into hardware.

Where do you find firmware?

Types of Firmware (classified in different ways)

1. By Level / Layer

Type Description Examples
Low-level firmware Runs directly on the microcontroller, no OS Microcontroller code (Arduino, STM32, ESP32)
High-level firmware Runs on top of an OS (usually Linux or RTOS) Router firmware (OpenWrt), Android phone system
System firmware Controls core system boot and hardware initialization BIOS, UEFI, Coreboot

2. By Changeability / Update Method

Type Can user update? Examples
Updatable Yes (via USB, web interface, OTA) Router firmware, phone firmware, BIOS updates
Non-updatable No (burned once at factory) Cheap IoT devices, some appliances
Field-upgradable Yes, even in the field (over the air) Tesla cars, smartphones, smart bulbs

3. By Storage Type

Type Storage Medium Notes
Mask ROM Hard-coded at factory (cannot change) Very old devices
OTP (One-Time Programmable) Can be written once Some cheap MCUs
Flash-based Most common today – rewritable Almost all modern devices (routers, phones, SSDs)
EEPROM Small, slow, expensive Used for small config data