I have written firmware for many micro-controllers, like 8051, AVR, and ARM. So I have a clear idea what a firmware is.
Recently when I was updating my Linux distro, I noticed that there are many firmware related packages being updated, e.g. iwl3160-firmware, and iwl1000-firmware. They have files with .fw extension.
If a firmware is a piece of code, that is burnt into the non-volatile memory of an embedded controller, then what are these .fw files doing?
Is it that they are actually burnt into the respective devices' non-volatile memory at the time of a system update, or they are dynamically loaded into the device's volatile program memory every time the device is switched on? Or are they just vendor specific proprietary codes which are used by the kernel to access the device?
An answer with a specific example, say iwl3160-firmware, would be appreciated.
"Firmware" has become broader and evolved from code that is written to the NVM of a chip to more of a term referring to programmed middleware.
I haven't inspected these files myself but I can't imagine they are actually being burned in. I imagine they are just drivers that will take the high level input from the application level and convert it to operations for the low level hardware. Thats what firmware is now.