> they can be hand-crafted for particular piece of hardware (so there's no source code)
The property of being handcrafted for a particular piece of hardware does not imply that there is no source code.
The property of being handcrafted for a particular piece of hardware does not imply that there is no source code.
Also, they can be very different in their nature. Firmwares can contains fairly complex operating systems that run on some microcontroller inside your hard drive, they can be hand-crafted for particular piece of hardware (so there's no source code) or they may only consist of some data structures needed to properly initialize the registers or other stuff like that.