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 https://hackaday.com/
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: https://hackaday.com/2019/06/20/electric-cars-sound-off-starting-july-1st/#more-363483

The Therac-25: https://hackaday.com/2015/10/26/killed-by-a-machine-the-therac-25/

Wear out of non-volatile memory: https://hackaday.com/2019/10/17/worn-out-emmc-chips-are-crippling-older-teslas/

Malcolm Galdwell’s Revisionist History Podcast analysing the Toyota undemanded acceleration reports: http://revisionisthistory.com/episodes/08-blame-game

Interesting article about hacking electric power steering sensors (dated but interesting): https://www.thetruthaboutcars.com/2010/02/whos-afraid-of-electric-power-steering/

General reading on electronics (analog and digital)

The Art of Electronics (Horowitz & Hill): https://www.amazon.com/dp/0521809266/ref=cm_sw_em_r_mt_dp_U_9m3nDb63G3B0F

How to read/interpret electronic schematics: https://bit.ly/2Y8BwXy
Not so much how to read a schematic as what the different symbols are – nevertheless useful

Autonomy

Interesting news article: https://www.bbc.com/news/business-44159581

Microprocessors / Microcontrollers

How the Apollo Guidance Computer works https://youtu.be/xx7Lfh5SKUQ
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 https://eater.net/8bit
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 https://archive.org/details/Programming_the_6502_OCR
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 https://learn.adafruit.com/
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
https://hackaday.com/2019/09/10/why-ada-is-the-language-you-want-to-be-programming-your-systems-with/

Software Engineering Principles

Software development process overview https://en.wikipedia.org/wiki/Software_development_process

Agile software development https://en.wikipedia.org/wiki/Agile_software_development#The_Agile_Manifesto

Fagan Inspection (remember inspection as a more formal peer review) https://en.wikipedia.org/wiki/Fagan_inspection

Benefits of inspections in early identification and resolution of defects
https://www.methodsandtools.com/archive/archive.php?id=29

Static analysis https://en.wikipedia.org/wiki/Static_program_analysis

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

Static analysis common tools

A good primer on static analysis: https://hackaday.com/2018/12/12/warnings-on-steroids-static-code-analysis-tools/

CheckMarx (mostly used around cyber) https://www.checkmarx.com/

Coverity static analysis: https://scan.coverity.com/

Test cases

Interesting paper on the generation of test cases https://core.ac.uk/download/pdf/132461138.pdf

Interesting paper on functional dependencies and test cases (prioritizing the broad-covering test cases): http://www.es.mdh.se/pdf_publications/5143.pdf

Explanation of software error guessing https://www.softwaretestinghelp.com/error-guessing-technique/

Equivalence class vs. boundary value testing on stack overflow: https://stackoverflow.com/questions/1909280/equivalence-class-testing-vs-boundary-value-testing

Measuring test coverage (code coverage)

Principles of code coverage (statement, branch, MC/DC…): https://www.bullseye.com/coverage.html

Lauterbach trace logging debugger tools: https://www.lauterbach.com/frames.html?home.html

Testwell CTC++ coverage by instrumentation: http://www.testwell.fi/ctcdesc.html

Other software checkers

Valgrind dynamic analysis (open source tool, good for detecting memory leaks etc): https://valgrind.org/

Polyspace code prover (control and data flow prover): https://www.mathworks.com/products/polyspace-code-prover.html

Weibull reliability basics and the chi-squared distribution https://www.weibull.com/hotwire/issue116/relbasics116.htm

The Arrhenius equation and how reliability of electronic parts is influenced by temperature https://en.wikipedia.org/wiki/Arrhenius_equation

Semiconductors

Single event upsets: https://en.wikipedia.org/wiki/Single_event_upset

Radiolab bit flip podcast: https://www.wnycstudios.org/story/bit-flip

Failure rate/failure mode data sources

Failure mode distributions: https://www.quanterion.com/product/tools/failure-mode-mechanism-distributions-fmd-2016/

Cyber Securty

Useful presentation from Riscure on defensive programming to deal with fault injection attacks  https://www.youtube.com/watch?time_continue=899&v=4UxX1vX6zM8&feature=emb_logo

Top 10 security vulnerabilities for web-based systems
https://sucuri.net/guides/owasp-top-10-security-vulnerabilities-2020/ 

Buffer overflow attacks and prevention
https://www.imperva.com/learn/application-security/buffer-overflow/

Vehicle communications buses

Some vehicle CAN databases published by the VBox team https://www.vboxmotorsport.co.uk/index.php/en/customer-area/vehicle-can-database