Design do's and don'ts

Before you commit to a design, take a look at the following tips — you may save yourself some grief. Although some of these points assume you're relying on our Custom Engineering services, the principles behind all of them are sound.

  • Do design in more speed/memory than you think you need.
  • Do try a proof of concept using off-the-shelf hardware, if possible.
  • Do have a serial port/debug output device on the board; have it reasonably close to the CPU in hardware terms (i.e., don't put it on the other side of a PCI bridge).
  • Do allow the ROM/flash devices holding the IPL code to be socketed.
  • Do consider staggering a device's ports by any power of 2, but don't mix up the address lines so that the I/O registers appear in a strange order.
  • Do try to use a timer chip that allows free-running operation, rather than one that requires poking after every interrupt.
  • Do put the timer on its own interrupt line so that the kernel doesn't have to check that the interrupt actually came from the timer.
  • Do follow the CPU's interface for reporting a bus error; don't report it as a hardware interrupt.
  • If you have optional pieces, make sure you have some positive method of determining what pieces are present (something other than poking at it and seeing if it responds).
  • Do run your design by us, ideally before you build it.
  • Do make a point of stating requirements you think are obvious.
  • Do remember to point out any pitfalls you know about.
  • Do send us as much documentation as you have available on chipsets, panels, etc.
  • Don't use write-only registers.
  • Don't nest interrupt controller chips too deeply—one big wide interrupt controller is better.
  • Don't use hardware that requires short delays between register accesses (e.g., Zilog SCC).
  • Don't put information from many different places into the same I/O register location if the OS/drivers also have to do RMW cycles to it.
  • Don't decide that no-BIOS is the way to go just because it sounds cool.
  • Don't use a $2.00 chip instead of a $3.00 chip and expect the performance of a $10.00 chip.
  • Don't build your first run of boards without leaving a way to debug the system.
  • Don't build your first run of boards with only 1 MB of RAM on board.
  • Don't send us anything without correct schematics that match what you send.
  • Don't program the flash and then solder it on, leaving us with no option to reprogram it.
  • Don't build just one prototype that must be shipped back and forth several times.