Over the course of these newsletters, I’ve been reeling off one best practice after another. Now, I realize that a particular best practice may not apply to a given embedded development project or organization. However, each of these best practices is rooted in one or more fundamental principles of embedded design that apply to every embedded systems development effort. Whereas the best practices provide a menu of development techniques from which you can choose those that apply, the principles provide a conceptual framework for developing and adapting best practices to suit your specific situation. For the next seven newsletters, starting with this one, I will present these seven principles of hardware/firmware interface design.
Designing and producing an embedded product is a team effort. Hardware engineers cannot produce the product without the firmware team; likewise, firmware engineers cannot produce the product without the hardware team. Even though the two groups know that the other exists, they sometimes don’t communicate with each other very well. Yet it is very important that the interface where the hardware and firmware meet—the registers and interrupts—be designed carefully and with input from both sides.
Collaborating implies proactive participation on both sides. In order to collaborate, both the hardware and firmware teams should get together to discuss a design or solve a problem. Collaboration needs to start from the very early stages of conceptual hardware design all the way to the late stages of final firmware development. Each side has a different perspective, that is, a view from their own environment, domain, or angle.
Collaboration helps engineers increase their knowledge of the system as a whole, allowing them to make better decisions and provide the necessary features in the design. The quality of the product will be higher because both sides are working from the same agenda and specification.
Collaboration needs to happen, whether it is achieved by walking over to the desk on the same floor, or by using email, phone, and video conferencing, or by occasional trips to another site in the same country or halfway around the world.
This principle, collaboration, is the foundation to all of the other principles of hardware/firmware interface design. As we shall see, all of the other principles require some amount of collaboration between the hardware and firmware teams to be successful.
Until my next principled newsletter…