"I prefer questions that cannot be answered over answers that cannot be questioned." --Richard Feynman

In this issue:

  • The Coming Software Apocalypse
  • Tech Talk: Pros and Cons of Embedded C++
  • Better Trained Teams Develop Firmware Faster
  • How to Combine 'volatile' with 'struct'
  • Industry News That's Not Boring

Firmware Update is a free, occasional newsletter by embedded systems expert Michael Barr. Firmware Update is a trademark and this issue is Copyright ©2017 by the author. You may forward whole issues to other embedded systems designers.  All other rights are reserved.

The Coming Software Apocalypse

It’s been said that software is “eating the world.” More and more, critical systems are coming to depend on code. This was perhaps never clearer than in the summer of 2015, when on a single day, United Airlines grounded its fleet because of a problem with its departure-management system; trading was suspended on the New York Stock Exchange after an upgrade; the front page of The Wall Street Journal’s website crashed; and Seattle’s 911 system went down.

The current issue of The Atlantic magazine discusses some of the challenges faced by designers of mission-critical systems as well as emerging alternative design approaches: 


Tech Talk: Pros and Cons of Embedded C++

The top pros and cons of writing embedded software in C++ in under 6 minutes, with Dan Smith and Andrew Girson (click on the image--or here--to play the video):

Tech Talk Video


Better Trained Teams Develop Firmware Faster 

It's well known that the single best way to complete firmware development projects on schedule is to minimize time spent in the debug phase.  Barr Group specializes in training engineers to perform at their best, writing code with few fewer bugs than the average.  Upcoming public training sessions include:

If you have a team of five or more engineers consider bringing a top-notch Barr Group trainers to your location to teach any of the topics from the complete Course Catalog.

How to Combine 'volatile' with 'struct'

C’s volatile keyword is a qualifier that can be used to declare a variable in such a way that the compiler will never optimize away any of the reads and writes. Though there are several important types of variables to declare volatile, this obscure keyword is especially valuable when you are interacting with hardware peripheral registers and such via memory-mapped I/O

To do this it is important to know how to combine volatile with struct properly, which is explained in my blog at:


Industry News That's Not Boring

A brain-machine interface is no longer science fiction: https://www.wired.com/story/brain-machine-interface-isnt-sci-fi-anymore/

Now you can cut the power consumption and footprint of general-purpose microcontrollers by stripping instructions and peripherals your application doesn't require: https://spectrum.ieee.org/semiconductors/design/bespoke-processors-a-new...

Has the "Internet of Things" (IoT) already jumped the shark? Look no further than this App-controlled salt shaker/bluetooth speaker/so much more...: https://www.indiegogo.com/projects/smalt-the-world-s-first-interactive-c...

ARM's TrustZone security feature is reportedly broken on most devices, due to improper management of power consumption: https://blog.acolyer.org/2017/09/21/clkscrew-exposing-the-perils-of-secu...

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. Also be sure to connect with me on Twitter (@embeddedbarr) and LinkedIn (https://linkedin.com/in/embeddedbarr).