Firmware

Abstraction with debugging visibility

1 April 2026 · Lance Harvie

Abstraction with debugging visibility

Every abstraction you add is another place bugs can hide.

I'm not against abstraction. I'm against unexamined abstraction.

When you wrap hardware access behind three layers of driver → HAL → OS abstraction:

  • You can no longer see the register write
  • You lose visibility into timing dependencies
  • The errata workaround you added gets buried
  • Debugging becomes archaeology instead of root cause analysis

Smart abstraction: hides implementation detail, preserves visibility.

Dumb abstraction: hides everything, including the bug.

The best firmware engineers I know can drop down to the bare metal in minutes when something breaks. They don't trust the abstraction layer, they've been burned too many times.

If you can't explain what's happening at the register level, you don't understand your own code.

Where has abstraction burned you in production?

#EmbeddedSystems #Firmware #EmbeddedC #HardwareProgramming #Engineering #TechTruth #EmbeddedEngineering #LowLevelProgramming

← Back to engineering notebookView original discussion on LinkedIn ↗