"The cheapest, fastest, and most reliable components are those that aren’t there." --Gordon Bell

In this issue:

  • Download Barr Group's UPDATED Embedded C Coding Standard
  • Create Jump Tables via Function Pointer Arrays in C/C++
  • Further Develop Your Embedded Programming Skills this Fall
  • Master Embedded Linux Customization and Driver Development
  • 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 © 2018. You may forward whole issues to colleagues that design embedded systems.  No other uses are permitted.

Download Barr Group's UPDATED Embedded C Coding Standard

BARR-C:2018First published about ten years ago, the rules in my book Embedded C Coding Standard are followed by embedded software developers who want to reduce time spent during the debugging stage of their projects as well as improve the maintainability and portability of their source code.  In this updated edition (a.k.a, BARR-C:2018), we've eliminated our few prior conflicts with the MISRA C subset of C for use in safety-critical systems so that both of these popular bug-killing standards can be used in combination.

Followers of earlier versions of the BARR-C coding standard will find that little has changed about the rules themselves. However, many rule clarifications have been added along with new code examples that make the rules easier to understand and apply on your projects. 

Download now... (the PDF is free)

Create Jump Tables via Function Pointer Arrays in C/C++

Examination of assembly language code that has been crafted by an expert will usually reveal extensive use of function "branch tables."  Branch tables (a.k.a., jump tables) are selected there because they offer a unique blend of compactness and execution speed, particularly on microprocessors that support indexed addressing.

In typical C/C++ code, however, the jump table (i.e., array of pointers to functions) is a much less widely used construct.  But aren't branch tables just as compact and efficient in C and C++?  This article makes the case for the wider use of jump tables in C/C++.

Read on...

Further Develop Your Embedded Programming Skills this Fall

There are a number of opportunities to learn firmware development best practices this Fall:

Alternatively, consider bringing an instructor to your office for an on-site training for your whole team.  Teams of five or more usually find this is more cost effective than attending public courses.

Register today... (beware: current early pricing ends soon) 

Master Embedded Linux Customization and Driver Development

Linux Kit

The new Embedded Linux Training in a Box kit is a self-paced programming course that helps you develop and strengthen your embedded Linux programming skills. Based on the 3-day Embedded Linux Customization and Driver Development course, this easy-to-follow self-study kit includes hands-on exercises on real hardware that will help you develop your Linux programming skills in the comfort of your own home or office.

Buy now...

Industry News That's Not Boring

Didn't know how to wire an LED to an MCU so you can "blow" it out just like a candle?  Now you do: https://hackaday.com/2018/08/21/an-led-you-can-blow-out-with-no-added-se...

Remember the Furby (interactive toy, circa 1998)?  The source code is now online: http://www.seanriddle.com/furbysource.pdf

The most popular programming languages of our time: https://t.co/tx84LpRQxE -- IEEE

There are limitations to applying machine learning to industrial controls: https://t.co/3cWzUUpamP

An interesting look at the quirks of various C compilers: https://mort.coffee/home/c-compiler-quirks/

Plus... some very practical advice for quickly moving legacy C code to a C++ compiler: https://www.iar.com/support/resources/articles/instant-c-for-c-programmers/

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).