Some general technical questions about firmware

I have some questions about the technically site of firmwares:

  1. How are firmwares created by the manufacturers? Does every manufacturer has its own tool or are they created with a hex editor directly to binary code? Or is it like “code snippets” that are copied and pasted to create the best firmware (if so, what language [I would guess Assembler])?

  2. Are there some electronic components in the drives that are NOT controlled by the firmware? Because it seems to me that the manufacturers can solve every problem (except hardware crashes) by creating a new firmware version (f.e. support new media, remove compatibilities with chipsets/motherboards, support new read/write strategies, …).

  3. According to Question 1, is it possible to create own costumized firmwares? If so, what is needed to do so? Special tools or compilers? What specific knowldge about the hardware device is required?
    If it’s not possible to create own firmware the question is: Is it possible to change existing firmwares (I mean not only RPC Code, but new features and supported media)?

Thanks in advance. :slight_smile: