Fri Nov 25 12:50:03 EST 2016
So, what is the real problem?
Writing device drivers.
Talking to hardware, fixed things.
Basically, making new toys run old code.
Device drivers are boring because they do not look glamorous, but they
do pose a fundamental problem: nothing speaks the same language.
And concerning device drivers, some problems are:
- protocols that are very state-sensitive
- tied into global infrastructure which has constraints (clock config, io config, ...):
this makes disentanglement, abstraction hard
- non-orthogonal configuration: only specific combinations supported
- learning how to use hardware through datasheets is hard
- reliance on sequential configuration changes:
CPU writes to registers, with some constraints on order but some arbitrariness as well
- not everything is idempotent
Once you have a better way to writing device drivers, it should be
easier to change hardware also, e.g. find more optimal
Also, check out rump kernels.