~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Firmware Update
- March 1, 2011
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
in this issue
-- Unintended Acceleration and Embedded Software Bugs
-- What is Arduino?
-- Efficient C Tip #13: Use the Modulus Operator with Caution
-- Industry News You Can Use

Firmware Update is a free newsletter by embedded software expert Michael Barr. It is Copyright 2011 by Netrino, LLC, but may be reprinted for non-commercial purposes. Please forward it to colleagues who may benefit from the information.


Unintended Acceleration and Embedded Software Bugs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Last month, NHTSA and the NASA Engineering and Safety Center (NESC) published reports of their joint investigation into the causes of unintended acceleration in Toyota vehicles. NASA's multi-disciplinary NESC technical team was asked, by Congress, to assist NHTSA by performing a review of Toyota's electronic throttle control and the associated embedded software. In what I consider to be a carefully worded concluding statement, NESC stated that it "found no electronic flaws in Toyota vehicles capable of producing the large throttle openings required to create dangerous high-speed unintended acceleration incidents."

The first thing you will notice if you join me in trying to judge the technical issues for yourself are the redactions: pages and pages of them. In parts and entirely for unexplained reasons, this report on automotive electronics reads like the public version of a CIA Training Manual. The redactions are at their worst in NASA's Appendix A, which describes the review of Toyota's embedded software in detail. Despite the redactions, we can still learn some interesting, as well as a few suggestive, facts about Toyota's embedded software. Here's what I've been able to learn so far.

Read on...


What is Arduino?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Believe it or not, artists, hobbyists, and other "makers" have discovered embedded computing. Increasingly, they're turning to an open source hardware platform called Arduino to put firmware inside their creations. Over 100,000 of these inexpensive embedded systems have apparently been sold for use in prototyping and in a range of low-volume "products." Should you care?

Get the scoop...


Efficient C Tip #13: Use the Modulus Operator with Caution
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If you are interested in writing efficient C, you need to be cautious about using the modulus operator. Why is this? Well a little thought shows that C = A % B is equivalent to C = A - B * (A / B). In other words the modulus operator is functionally equivalent to three operations. As a result it's hardly surprising that code that uses the modulus operator can take a long time to execute. In many cases it's possible to restructure the code such that the modulus operator is not needed.

Find out how...


Industry News You Can Use
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Nigel Jones is developing a hardware quiz for embedded software developers! Help him: http://bit.ly/fpNlK8

Firmware Engineers Need Good Hardware Documentation. How to convince your boss: http://bit.ly/hRxmTv

Public TDD for Embedded C course March 22-24 in Ohio by James Grenning. Register now: http://bit.ly/gyrQ5f Discount code TWTDD.

Firmware consulting as a leading economic indicator. Stay tuned for an up-tick in jobs: http://bit.ly/hKSAW1

The movie 'Inception' explained in C code. Nerd Alert: http://bit.ly/hpVXve

Rapid Prototyping with State Machines and Arduino. QP-Arduino announced: http://bit.ly/fxW2NM

A Car You Can Drive with Your Thoughts? Video: http://bit.ly/et8Qzs

10x Productivity Myths: Where's the 10x Difference in Compensation? Nice analysis by Steve McConnell http://is.gd/8R4SsZ

Follow me on twitter...


Quick Links
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • Embedded C Coding Standard
  • Embedded Software Boot Camp
  • Embedded Systems Glossary
  • Independent Source Code Audits


  • Contact Information
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    phone: 866.78.EMBED
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~