Recent Posts
sort by category
The demise of the ESD Magazine marks the end of an era. In his recent post "Trends in Embedded Software Design", the magazine insider Michael Barr commemorates this occasion by looking back at the early days and offering a look ahead at the new emerging trends. As we all enjoy predictions, I'd also like to add a couple of my own thoughts about the current status and the future developments in embedded systems programming.
It's never been better to be an embedded software engineer!
&n...
In many ways, the story of my career as an embedded software developer is intertwined with the history of the magazine Embedded Systems Design. When it was launched in 1988, under the original title Embedded Systems Programming (ESP), I was finishing high school. Like the vast majority of people at that time, I had never heard the term "embedded system" or thought much about the computers hidden away inside other kinds of products. Six years later I was a degreed electrical engineer who, like...
With UML, just as with anything else in the embedded space, the ultimate criterion for success is the return on investment (ROI). Sure there are many factors at play, such as "coolness factor", yearning for a "silver bullet" and truly "automatic programming" all fueled by the aggressive marketing rhetoric of tool vendors. But ultimately, to be successful, the benefits of a method must outweigh the learning curve, the cost of tools, the added maintenance costs, the hidden costs of "fighting the...
Earlier this year the National Highway Traffic Safety Administration wrote the latest chapter in our government's continuing preoccupation with universal safety. NHTSA has released for public comment "Visual-Manual NHTSA Driver Distraction Guidelines for In-Vehicle Electronic Devices", Docket No. NHTSA-2010-0053… and this comment period expires soon (04/24/2012).
The social phenomenon of government mandated universal safety has been with us for several decades but it took a turn for the w...
With all due apologies to Meatloaf for the title, I thought I'd pass along something that I've found useful over the years. Being a consultant, I regularly find myself in discussions with clients concerning new product development. Without fail, the following three topics are always high on the agenda:
Features, reliability, bug rates etc. I tend to lump all these into the 'good' requirement.
Timescales. When can you start, and more importantly, when can you deliver? I call this the 'fast'...
In this era of 140 characters or less, it has been well and concisely stated that, "RELIABILITY concerns ACCIDENTAL errors causing failures, whereas SECURITY concerns INTENTIONAL errors causing failures." In this column I expand on this statement, especially as regards the design of embedded systems and their place in our network-connected and safety-concious modern world.
As the designers of embedded systems, the first thing we must accomplish on any project is to make the hardware and soft...
Much ink has been spilled on the Next Big Thing in software development. One of these things has always been "automatic code generation" from high-level models (e.g., from state machines).
But even though many tools on the market today support code generation, their widespread acceptance has grown rather slowly. Of course, many factors contribute to this, but one of the main reasons is that the generated code has simply too many shortcomings, which too often require manual "massaging" of the ...
As an embedded systems consultant, I spend a substantial part of my work time working on your typical embedded systems projects. However I also spend a significant amount of time working as an expert witness in legal proceedings. While the expert witness work is quite varied, one of the things I have noticed in the last few months is an increase in the number of cases related to source code theft. Typically these cases involve the plaintiff claiming that the defendant has stolen their source cod...
Have you visited the new online Embedded Software Store (embeddedsoftwarestore.com) operated by Avnet and ARM? Did you buy anything there? What do you think?
Well, I visited the website, but frankly, I wouldn't be comfortable buying software there.
For example, suppose you are interested in operating systems. That's easy enough, because on the home page Embeddedsoftwarestore.com lists "New Products" in this category. Yesterday they listed uC/OS-II and CMS-RX RTOS. I clicked on uC/OS-II, wh...
One of the more depressing things about the C language is how often the results of various operations are undefined. A prime example of this is the abs() function that I'm fairly sure is liberally dispersed throughout your code (it is through mine). The undefined operation of the abs() function comes about if you have the temerity to use a compiler that represents negative numbers using 2's complement notation. In this case, the most negative representable number is always numerically larger tha...
Does it ever make sense to declare a variable in C or C++ as both volatile (i.e., "ever-changing") and const ("read-only")? If so, why? And how should you combine volatile and const properly?
One of the most consistently popular articles on the Netrino website is about C's volatile keyword. The volatile keyword, like const, is a type qualifier. These keywords can be used by themselves or together in variable declarations.
I've written about volatile and const individually before. If yo...
Below are the top 10 most read blog posts from the Embedded Gurus in 2011.
#1: Efficient C Tip #13: Use the Modulus (%) Operator with Caution
#2: A Tutorial on Lookup Tables in C
#3: Unintended Acceleration and Other Embedded Software Bugs
#4: Don't Follow These 5 Dangerous Coding Standard Rules
#5: Protothreads versus State Machines
#6: What Belongs in a C .h Header File?
#7: Computing Your Stack Size
#8: Do Inline Function Bodies Belong in C Header Files?
#9: The N_E...
As 2011 draws to a close I have reason to be thinking about things automotive. As part of my musings, I was reminded of the famous mantra espoused by the late Colin Chapman of Lotus Cars - 'Simplify, then add lightness'. I have always liked this aphorism for its idea of 'adding lightness' rather than 'subtracting weight'.
So what's this got to do with embedded systems you ask? Well, when it comes to embedded systems programming, I think Chapman's concept is spot on. While most people would pr...
For obvious reasons, I usually write about things that are widely applicable. Today I'm going to deviate from this slightly and talk about the real time clock registers / RAM that are available on some (many?) ARM processors as well as I suspect a number of other architectures. An excerpt from the NXP data sheet is shown in the figure below.
[caption id="attachment_672" align="aligncenter" width="704" caption="NXP LPC17xx RTC registers"][/caption]
Of most interest is the column labeled 'Re...
Recent (and much needed) basement cleaning uncovered a treasure trove of childhood chemistry set experimenter books.
Back in the day, there was no Internet. The only hope for young chemists looking for new experiments was to troll bookstores and newsstands. Fortunately, chemistry sets were relatively popular when I was a kid and a number of authors produced books for this audience.
[caption id="attachment_119" align="alignleft" width="398" caption=""The Golden Book of Chemistry Ex...
I've had a couple of teachers in my family for several years. Recently I became aware (well, I started paying attention to) the rather stringent requirements for teachers' continuing education. The specifics of the requirements vary depending on the system in which the teacher works, but the intent of the rules is universal. That is, you can't teach youngsters – disabled, gifted, or normal, unless:
You periodically demonstrate you haven't forgotten all you were taught.
You are regu...
Sadly, Mr. Jobs is with us no more. Not too long ago I did a commentary on the state of Microsoft after the departure of Bill Gates so it seems only fair that I do one on Apple after Steve Jobs… Except we don't know yet. We don’t know what the future holds for Apple. So instead I'll present some challenges Apple will face as they move forward without the guidance of Steve Jobs.
But first a brief history –
I was fortunate to see Bill Gates in person twice. Once he bought me a ...
I recently inherited a project that uses a Microchip PIC18 processor. Without going into too much detail, suffice it to say that I ended up using Microchip's MPLAB IDE Version 8.73 together with Microchip's C compiler. It had been a number of years since I last used MPLAB, in part because my experience back then was so painful. I was heartened to see that the version number had jumped from 6.X to 8.X and so I was fully expecting to find an IDE that was at the very least, decent. Boy was I disapp...
Software has become ubiquitous, embedded as it is into the fabric of our lives in literally billions of new (non-computer) products per year, from microwave ovens to electronic throttle controls. When products controlled by software are the subject of litigation, whether for infringement of intellectual property rights or product liability, it is imperative to analyze the embedded software (a.k.a., firmware) properly and thoroughly. This article enumerates five best practices for embedded soft...
Recently, I've been involved in a fascinating bug hunt related to a very peculiar behavior of the ARM Cortex-M3 core. Given the incredible popularity of this core, I thought that digging a little deeper into the mysteries of ARM Cortex could be interesting and informative.
First, I need to provide some background. So, the bug was related to the very unique ARM Cortex-M exception type called PendSV. This is an exception triggered by software, but unlike any regular software interrupt, PendSV i...