~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Firmware Update
- October 28, 2013
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
in this issue
-- Binary Executable Analysis Techniques for Embedded Systems
-- Top 10 Bug-Killing Coding Standard Rules
-- Reader Q&A - Inter-Module Communication
-- Last Chance to Register for Embedded Security Boot Camp
-- Industry News That's Not Boring

Firmware Update is a free newsletter by embedded guru Michael Barr. This issue is Copyright 2013 by Barr Group, but may be reprinted for non-commercial purposes. Please forward it to colleagues who may benefit from the information.


Binary Executable Analysis Techniques for Embedded Systems
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Where do you begin if you think a competitor has infringed your patented and/or copyrighted source code or misappropriated your software trade secrets? Might extracting a binary executable from the Flash/ROM memory at the heart of the competitor's product be a worthwhile investment? What, if anything, can be learned from a binary alone?

Unfortunately, the better known techniques of binary analysis for Windows or Linux programs, such as viruses, are of little to no use when the binary executables are from embedded systems. The complication is that most embedded systems do not use dynamically linked libraries, are each built around microcontrollers from different processor families, interface to custom electronics, and don't reliably contain any operating system at all.

Learn what can be done...


Top 10 Bug-Killing Coding Standard Rules
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Coding Standard One of the biggest benefits of a coding standard has been too long overlooked: a well written coding standard can help keep bugs out. A key strategy for making firmware-powered systems safer as well as keeping the cost of firmware development down is to write code in which the compiler, linker, and/or a static-analysis tool help keep bugs out automatically-before the code is allowed to execute.

It's far cheaper and easier to prevent a bug from creeping into code than it is to find and kill it after it has entered. So follow along to learn ten specific examples of coding rules you can follow when programming in C or C++ to reduce or eliminate certain types of firmware bugs altogether.

Learn how to keep bugs out of embedded software...


Reader Q&A - Inter-Module Communication
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I recently received this question from George H.:

"Section 4.2.c of the Embedded C Coding Standard states the rule "no variable be defined (via extern) in a header file". How, then, do you pass variable info to another module?"

Rule 4.2.c.i relates to software architecture more than coding style. It is specifically aimed at increasing modularity and cohesion by eliminating global variables as a means of inter-module communication.

There are two architectural alternatives to those globals:

1. Communication via APIs. This is what Object-Oriented Programming is all about. You either operate on data implicitly (i.e., C++'s this) or implicitly by passing the caller's data structure as a parameter.

2. Message Passing. This is the (proper) RTOS style of communication, in which tasks send messages to each other and thereby influence each other's internal state machines. Note this is a very scalable form of modular architecture, in which the recipient of a message need not be even on the same CPU or even on the same PCB.

Submit a question...


Last Chance to Register for Embedded Security Boot Camp
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Embedded Software Boot Camp Though you've already missed a few recent Barr Group training opportunities, it's not quite too late to register for next week's Embedded Security Boot Camp, near Baltimore-Washington International airport in Maryland.

This week-long training is an immersion into the unique challenges of designing and/or retrofitting security into embedded devices. This comprehensive training is a combination of three of our most popular security short courses and includes hands-on exercises on an ARM board you keep.

Register today...


Industry News That's Not Boring
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'If it's your decision, it's design; if not, it's a requirement.' -- Alastair Cockburn

The Raspberry Pi Foundation aims to make a Pi for the Internet of Things http://flip.it/W3kjP

Intellectual property protections for embedded software: A primer. http://ow.ly/pQnL5

Real-time scheduling: Linux v RTOS http://www.embedded.com/design/operating-systems/4371651/1/Comparing-the-real-time-scheduling-policies-of-the-Linux-kernel-and-an-RTOS-

The price of solar sells has dropped 99% in the past 25 years: http://thinkprogress.org/climate/2013/10/06/2717791/cost-pv-cells-solar-power-grid-parity/

How 3-D printing of robots could change space exploration. http://gigaom.com/2013/10/04/how-3d-printing-robots-will-influence-the-future-of-space-exploration/

"Just because you don't agree with something, doesn't mean that what you don't agree with is wrong." -- Neil deGrasse Tyson

TrendNET's Net-connected home security video cameras hacked; FTC fines Company for inadequate #embedsys security! http://www.ftc.gov/opa/2013/09/trendnet.shtm (They should've registered their engineers for Embedded Security Boot Camp!)

NASA loses "Deep Impact" comet seeker, apparently due to a latent software bug. http://news.nationalgeographic.com/news/2013/09/130920-deep-impact-ends-comet-mission-nasa-jpl/

The object-oriented version of spaghetti code is 'lasagna code'. Too many layers!

Doctors disabled wireless in Dick Cheney's pacemaker to thwart hacking. #embedsys #security http://www.dfinews.com/blogs/2013/10/doctors-disabled-wireless-dick-cheneys-pacemaker-thwart-hacking

Read more cool news like this...


Quick Links
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • Embedded C Coding Standard
  • Embedded Systems Training in a Box
  • Free How-To Embedded Systems Articles
  • Blogs by Embedded Gurus


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