Wed Jul 29 17:18:18 CEST 2009

electronics is the world of leaky abstractions

How much we'd like the world to be perfect, when it gets physical
there is no way around hitting the wall from time to time.

A lot of embedded programming is essentially about resource management
and getting the order of things right.  Due to cost issues
contemporary hardware often isn't smart enough to not step on its own
toes.  In many cases it is the driver code that is responsable for
most arbitration.  (Simply put: most driver code makes sure you don't
turn on this thing before you turn off that other thing.)

Considering the way the human brain deals with such a mess of details,
there seems to be little that can be done other than `test driven

TODO: expand this idea a bit more..  Basicly: I'm convinced any kind
of code can be made pretty in some sense by using the right
abstraction.  Driver code is usually highly stateful and ugly: most
useful information is hidden behind the order of operations.  Can this
be done better, i.e. expressed in terms of the actual dependencies
i.e. a state-flow graph cfr. a data flow graph?  Maybe I'm just
looking for CSP?

Concretely: can the PIC USB driver be used as a test case for this?