Functional Safety Resources

PCB background

Functional Safety:
The overall safety that depends on a system or equipment operating correctly in response to its inputs.

This page contains a selection of cross-references that might be useful to people learning or developing safety-related systems (it probably goes without saying but I don’t warrant the accuracy of everything referred to here or necessarily agree, but nevertheless these add an interesting perspective)

Electronics/Vehicles in general 

My favourite blog
Not all articles are electronics but mostly EE related.  Some fascinating topics and I highly recommend their podcast which is a roundup of the best articles of the week.
e.g. AVAS legislation:

The Therac-25:

Wear out of non-volatile memory:

Malcolm Galdwell’s Revisionist History Podcast analysing the Toyota undemanded acceleration reports:

Interesting article about hacking electric power steering sensors (dated but interesting):

General reading on electronics (analog and digital)

The Art of Electronics (Horowitz & Hill):

How to read/interpret electronic schematics:
Not so much how to read a schematic as what the different symbols are – nevertheless useful


Interesting news article:

Microprocessors / Microcontrollers

How the Apollo Guidance Computer works
This rather fast-paced talk has lots of insight on the inner workings of a microprocessor including microcode, registers, memory access, and machine code.  Surprisingly much of this is still relevant today (although not the one’s compliment arithmetic).

Ben Eater’s series on building an 8-bit computer
Actually this is building a microprocessor from scratch using 74LS series logic IC’s.  This is a fascinating insight into again the inner workings of a microprocessor, but in this case actually building one step by step using logic gates and latches.
(I also recommend some of Ben’s other videos on how to make gates from transistors, how latches work etc.)

Programming the 6502
Classic book on assembly language programming, and how the internals of a microprocessor work – including the fetch-execute cycle, two’s compliment arithmetic and much more.

Embedded Software

Adafruit Learning System
Various educational projects related to embedded development, both ‘bare metal’ C programming (often Arduino / ESP8266 or derivative based), or Linux programming in higher level languages (often Raspberry Pi or other single board computer based). 

The ADA programming language

Software Engineering Principles

Software development process overview

Agile software development

Fagan Inspection (remember inspection as a more formal peer review)

Benefits of inspections in early identification and resolution of defects

Static analysis

How software fails: live-lock, dead-lock and resource starvation

Static analysis common tools

A good primer on static analysis:

CheckMarx (mostly used around cyber)

Coverity static analysis:

Test cases

Interesting paper on the generation of test cases

Interesting paper on functional dependencies and test cases (prioritizing the broad-covering test cases):

Explanation of software error guessing

Equivalence class vs. boundary value testing on stack overflow:

Measuring test coverage (code coverage)

Principles of code coverage (statement, branch, MC/DC…):

Lauterbach trace logging debugger tools:

Testwell CTC++ coverage by instrumentation:

Other software checkers

Valgrind dynamic analysis (open source tool, good for detecting memory leaks etc):

Polyspace code prover (control and data flow prover):

Weibull reliability basics and the chi-squared distribution

The Arrhenius equation and how reliability of electronic parts is influenced by temperature


Single event upsets:

Radiolab bit flip podcast:

Failure rate/failure mode data sources

Failure mode distributions:

Cyber Securty

Useful presentation from Riscure on defensive programming to deal with fault injection attacks

Top 10 security vulnerabilities for web-based systems 

Buffer overflow attacks and prevention

Vehicle communications buses

Some vehicle CAN databases published by the VBox team