The three laws of safe embedded systems
This short article is part of an ongoing series in which I aim to explore some techniques that may be useful for developers and organisations that are beginning their first safety-related embedded project.
Summary
This short article outlines three overarching 'laws' for designing safer embedded systems, offering practical rules of thumb and patterns useful to teams starting safety-related projects. It emphasizes pragmatic techniques for fault detection, fail-safe behavior and organizing firmware and verification work to reduce risk in embedded products.
Key Takeaways
- Adopt a fail-safe mindset: design systems to detect faults and move predictably to a safe state rather than continuing uncertain operation.
- Implement simple diagnostics and redundancy: use watchdogs, sanity checks and basic redundant checks to detect and contain failures early.
- Apply defense-in-depth: combine hardware containment (MPU/isolated domains), runtime checks and disciplined error handling to limit fault propagation.
- Follow a safety lifecycle: perform hazard analysis (FMEA/FTA), maintain requirements traceability and plan targeted testing to demonstrate diagnostic coverage.
- Favor simplicity and determinism: reduce complexity (avoid unnecessary dynamic features), use clear state machines and deterministic scheduling in safety-critical code.
Who Should Read This
Embedded firmware engineers, technical leads or engineering managers with some production experience who are starting their first safety-related project and need practical, immediately applicable guidance.
TimelessIntermediate
Related Documents
- Consistent Overhead Byte Stuffing TimelessIntermediate
- PID Without a PhD TimelessIntermediate
- Introduction to Embedded Systems - A Cyber-Physical Systems Approach Still RelevantIntermediate
- Can an RTOS be really real-time? TimelessAdvanced
- Memory Mapped I/O in C TimelessIntermediate








