There are lots of informative texts on good hardware designs which are of
course well worth reading. But sometimes it is even more educating to
look at examples of especially bad hardware design.
The following examples from actual real-life systems
generally fall into two categories. Either they limit the functionality of
the complete system because of (non-obvious) limitations - usually performance
limitations, or they are so ingenious that they push software costs to an
extrordinary amount where standard solutions would have been available at
a fraction.
Inherently low-performance hardware blocks
- The "SPI Controller" in the MPC5200. This "controller" has a FIFO
of size 1 and thus produces not only a few interrupts on larger data transfers.
It is thus not a very good idea to attach for example a display controller or
a WLAN module to this interface.