Programmers’ Wishlists for Hardware Engineers

Programmers’ Wishlists for Hardware Engineers

May 30, 2009

While traipsing through the internet, I came across an article at Windows Hardware Developer Central titled, If every hardware engineer just understood that… In it, four Windows programmers discuss various ways hardware engineers could make software development and debugging easier. Here are the highlights:

Steve Dispensa:

  • Windows is not a real-time operating system so hardware should not impose tight timeouts.
  • Provide detailed documentation about the hardware programming interface and semantics.

Bill McKenzie:

  • Hardware devices that implement a standard should follow the required aspects of that standard exactly.
  • On the other hand, hardware engineers should not feel obliged to implement all the optional aspects of the standard.

Tim Roberts:

  • Use read/write registers instead of write-only registers.
  • Registers that clear themselves when written to can be useful, but hinder debugging. Use them sparingly.

Stephan Wolf:

  • Do not mix interrupt bits with other types of bits in the same register.
  • Do not have interrupt registers clear themselves after a read.

Those of you familiar with my newsletters and classes will recognize many of the concepts in the article. They reinforce the idea that proper hardware design can pave the way for easier and smoother firmware integration.

There is one new best practice from this article that I have added to my collection. To avoid race conditions and delays that could occur if interrupt registers were in a register bank that could be switched out, Stephan Wolf advises the following:

  • Best Practice: Place interrupt module registers in an address space that is always visible.

Until the next register…

Share:

Comments