I find firmware hard to comprehend, to categorise into a nice convenient hardware or software box. It breaks my model of what they should be, too limited by the hardware that its run upon to be considered truely software, too reconfigurable to be hardware due to its ability to realign and readjust underlying physicality, to repurpose hardware allowing the device to do things that in a sensibly ordered world it would surely not be allowed to do.
Another area where the hardware / software divide occurs in my mental catagorisation is when considering the mind. I have a lovely internal model of how it should work, with software of thoughts being run on a custom-designed neural network. Because the software of thought is put individually developed for each person through training to different inputs, and adapted to the vagueries of the differing hardware that it runs on, each version is different, specialised in different areas to meet different needs.
While a beautiful model, its ideality suffers the minor flaw of not working - and after thought, I have come to conclude that the part which is missing is the firmware. The part of the brain that is not thought nor thinking machine, but somewhere in-between attempting to get the stuff to work. Take for example, when part of the underlying brain-hardware doesn't work; the firmware of the brain takes another (potentially underutilised) bit of the brain-hardware and uses that to bolster parts which need additional servicing to work around the failure.
One of the areas which is the most interesting in this respect are bits of the brain which are hardwired to aid the boot-strapping process by which infants put together the software of the brains. Autism, for example, in which parts of the brain which usually facilitate interpersonal communication do not work in the way that they do for the majority of people. Unlike many bit-of-brain failures which can be swept under the carpet by the firmware of the brain, the firmware correction routines cannot function in the way that they have been designed to do, reliant as they are on this part of the brain for the interpretation.
As a result working round the challenges of autism is not the triviality that it would be if the problem was purely software, or the impossibility that it would be if the problem was purely hardware. It is a firmware issue, one which, due to the necessity of continued working of the brain and lack of a sensible upload utility can only be worked on, if at all, by incremental changes in the brain's makeup. Adapting bits of the brain to do tasks that it could not do before, which allow in turn other bits of the brain to be repurposed. A solution which, furthermore, must be done on a one-off basis due to the way in which the software off the the brain is unique to each individual and contains a disappointing lack of a map of any sort of description.
The same could be said about most mental disorders, for that matter. Firmware problems, the lot of them. It's a shame that firmware is quite so hard to understand.
 Musings which are not fully formed and thus probably not correct - but which I'm inflicting on the world incomplete anyway. Feel free to attempt to realign my thoughts.
 Evolved. Definitely not designed. That's one reason this model doesn't work.
 I don't actually know enough about autism to say this with any authority. I'm probably wrong. See .