The hardware/firmware interface is where the hardware engineering and firmware engineering disciplines meet. Sometimes the meeting does not happen very smoothly. Their respective design environments are different in the way they code the design, test it, and produce their product. Often the hardware is almost done before firmware efforts ramp up. Plus, the hardware and firmware teams may be in different location, countries, and/or companies, making it challenging to get the hardware and firmware working well together for the embedded systems product.
This paper presents an analysis of many large and small hardware/firmware interface problems that revealed some common threads. It uncovered seven principles of hardware/firmware interface design, which, if followed, will either eliminate or mitigate many of the problems faced by hardware and firmware engineers.