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
Reliability theory (related to proven in use)
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