Some low-cost peripherals no longer contain non-volatile memory for firmware, and instead rely on the host system to transfer the device control program from a disk file or CD.
Changing the firmware of a device may rarely or never be done during its lifetime; some firmware memory devices are permanently installed and cannot be changed after manufacture.
Common reasons for updating firmware include fixing bugs or adding features to the device.
As originally used, firmware contrasted with hardware (the CPU itself) and software (normal instructions executing on a CPU).
It was not composed of CPU machine instructions, but of lower-level microcode involved in the implementation of machine instructions.
It existed on the boundary between hardware and software; thus the name "firmware".