Presently they met Firmware, who was dressed in tattered rags and hobbled along propped on a thorny stick. Firmware said to them: “The Tao lies beyond yin and yang. It is silent and still as a pool of water.
It does not seek fame, therefore nobody knows its presence. It does not seek fortune, for it is complete within itself. It exists beyond space and time.”
Hardware and Software, ashamed, returned to their homes.
— The Tao of Programming, Geoffrey James, 1987
Or, in other words, any code which hooks directly to the hardware on one side and exposes abstractions (like an instruction set) that software can code against on the other.
I always assumed "firm" stuck, as in "You'll have a helluva time changing it, because it's the code that has to deal with all the complex electrical engineering stuff."
(E.g. processor errata, patched board mistakes via fuse or EEPROM, side effects of power supply undervolting or clock skew, or pre-initialized system murkiness)
* hard -> firm -> soft -> wet ware
https://en.wikipedia.org/wiki/Wetware_(brain)
Although this one is usually just referred to as the "user" ;)
But only because you pointed it out in your comment, thanks.
It's the newest thing, and it's going thermonuclear!
But then please introduce also the relevant variants of realtime (in analogy of hard, firm and soft realtime): vapor realtime and plasma realtime.
Cheers :)
https://github.com/hughsie/fwupd
It's integrated into recent distros, seamlessly shipping firmwares for supported vendors (Dell came first, HP arrived soon after, and I think I read Lenovo was being worked on) like this MS project does, or Apple has been doing for years.
Firmware does change and often has security vulnerabilities, so you do need to be keeping it up to date the way you keep your OS up to date. Among other things, it includes processor microcode / errata fixes like some of the Spectre, Meltdown, etc. mitigations. It would be nice if we lived in a world where this doesn't need to change, but it does, and thankfully it is firmware and not hardware.