Henri Garih · 1 min read
Firmware bugs that aren't firmware bugs
Most 'firmware bugs' I find in my clients' projects aren't firmware bugs at all.
They're integration assumptions that were never validated.
The pattern repeats on every embedded project I touch. The hardware team designs a PCB with certain assumptions about timings, protocols, boot sequences. The software team develops firmware with different assumptions. Nobody checks that the two sets of assumptions are compatible.
When it breaks during integration testing, everyone shouts 'firmware bug!' But the firmware is doing exactly what it was told to do. It's the interface specification that never existed.
The fix is simple but rarely applied: an Interface Control Document (ICD) written BEFORE development, reviewed by both teams, and unit-tested on both sides. It takes 2 days. It saves 20.
On my last 3 embedded engagements, this process reduced 'firmware bugs' by 70%. Not because there were fewer bugs, but because we stopped calling 'bug' what was actually a communication failure.
