"I was an ordinary person who studied hard. There's no miracle people!" -- Richard Feynman

In this issue:

  • Dead Code and the Law of Unintended Consequences
  • Register Now for Spring 2019 Firmware Training
  • ATTENTION! Embedded Systems Developers
  • Case Study: Lethal Software Defects in War Zones
  • Industry News That's Not Boring

Firmware Update is a free, monthly-ish newsletter by embedded systems expert Michael Barr. Firmware Update is a trademark and this issue is Copyright © 2019. You may forward whole issues to colleagues that design embedded systems.  No other uses are permitted.

Dead Code and the Law of Unintended Consequences

Source code that is never executed in the final product is sometimes called "dead code".  

Dead code comes in two forms. First, there is dead code that is commented out or removed via #ifdef’s. That dead code has no corresponding form in the binary. Another form of dead code is present in the binary but cannot be or is never invoked.  In either case, dead code is a vestige or unnecessary part of the product.

Dead code sounds innocuous, unless you consider that the presence of dead code can have unintended legal consequences.  Read on to find out why you should always eliminate dead code from production builds.

Register Now for Spring 2019 Firmware Trainings

Aimed at individual engineers and smaller teams, Barr Group's public training courses are held in a state-of-the-art training facility near Washington, DC.  The following courses will be offered in coming months:

Register now!

ATTENTION! Embedded Systems Developers

Hear ye, hear ye!  Are you a professional designer of embedded systems?  If so, our community needs your help with this important annual survey of industry practices and trends.

Your participation will require just a few minutes of your time.  As an incentive and thank you, we will give away a Saleae Logic 8 Logic Analyzer in a drawing you can opt-into if you choose.

Case Study: Lethal Software Defects in War Zones

During the 1991 Gulf War, twenty-eight American soldiers were killed and nearly 100 others were wounded when a nearby Patriot missile defense system failed to properly track a Scud missile launched by Iraq. The cause of the anti-missile system's failure was later determined to be a programming error in the computer embedded in the Patriot’s weapons control system.

This same bug was latent in all other Patriots deployed in the region. However, the existence of the bug was obscured by the oddity that a given weapons control computer had to run continuously for several days before the bug could trigger a large enough mathematical error to render the system ineffective.

Learn what went wrong, so you'll never create the same type of defect!

Industry News That's Not Boring

Once hailed as un-hackable, blockchains are now getting hacked: https://t.co/RHvd6WAvcp

New offensive USB cable allows remote attacks over WiFi: https://t.co/F6GJRw7CqT

Japanese government plans to hack into citizens' IoT devices: https://t.co/A6k1M2RELL

Samsung's new smart-fridge will ping your phone if you leave the door open: https://t.co/2aeitdLDe3 (Why doesn't it just close the f*ing door itself?)

U.S. spy agency NSA has developed a software reverse engineering tool named GHIDRA, which they will release next week at RSA Conference: https://t.co/9qaUPbmRre

What an Open MIPS architecture could mean for the microprocessor industry: https://t.co/MNyoIVpmgD

Quick Links to Useful Stuff

How to Contact the Author

I'm always interested in hearing from embedded systems designers and happy to take a few minutes to help you find the resources to get a design done right. Send me an email anytime. And be sure to also connect with me on Twitter (@embeddedbarr) and LinkedIn (https://linkedin.com/in/embeddedbarr).