embedded


When we were last heard from, we felt stupor (or at least a lack of excitement) towards the embedded world. Speedplane provided some good examples of exciting products but his rebuke does not addresses the core issue I was trying to articulate. I talked about buzz, but maybe it would be more appropriate to talk about active communities.
Is there an embedded community, an embedded presence on the internet? I recently found the Agile Embedded yahoo group, which has some interesting discussions. However, I was hard pressed to find other relevant mailing lists.
I’m trying to provide content, but I must admit that sometimes I lack inspiration. I don’t know what to write about.
What are the readers of this blog interested in? Should I talk about:

  • Software Tools
  • Hardware Tools
  • Beginner overview: How to use an Oscilloscope, a voltmeter, etc…
  • Basic system debugging
  • Various Protocols: I2C, One-Wire, serial, etc…
  • Anecdotes from my time in the trenches
  • Review of various software tools similar to my Dynamic C rant
  • other things

Maybe I should go in an entirely different direction… One of the consequence of being an instructor is that I interact with a large number of embedded engineers. Is there interest in hearing from those students, maybe in the form of a podcast? Are you interested in hearing what other engineers are doing, some of their struggles and successes?

Recently, I wanted to purchase a new alarm. We have a perfectly functional alarm clock. One of the original Sony Dream Machine. A white cube with a fairly simple interface:
On the front:
– LED display for the time
– A slider bar to display the radio frequency
On the top:
– A slider switch to select the alarm type (off, radio, buzzer, radio & buzzer)
– A large Snooze button
– A small sleep button – turns on the radio for 1 hour
– a small alarm reset button to turn off the alarm
On the side:
– A knob to control the radio volume
– another knob to select the radio frequency
On the back:
– A slider switch for time adjustment (either alarm or clock)
– 2 push button switches: one for hour, one for minute

There are 9 controls on this thing, but notice how all the functions are segregated to a specific area: Information on the front, alarm on top, radio on the side and time adjustments on the back. Even with this simple design, I would sometime turn on the radio (press the sleep button), and somehow have a difficult time turning it off. Pressing the alarm reset button would not work – even though it works if the alarm function turns on the radio. I would have to slide the alarm switch to turn the blasted thing off. Maybe there is another way, but I couldn’t figure it out.

We (meaning I) needed a new alarm clock for a specific function: supporting 2 different alarm times. While at it, it would be nice if the alarm clock could also play a CD. Imagine my pleasure when I found the new Sony Dream Machine (ICF-CD843V). Ok, it is about 3 times the size of the original Dream Machine and kind of looks like Magneto’s Helmet, but hey! It plays CDs and has 3 alarm times!

It soon became apparent that all was not well in paradise. Let’s look at the interface:
On Front:
LED display, but with a much denser information content

On Top (8 buttons):
– 5 buttons for preset radio stations
– 1 large snooze button
– 1 sleep button
– 1 brightness control button
On Front (13 buttons):
– 1 Nap button (turn on radio after x minutes)
– 1 CD play mode button
– 1 clock button
– 1 daylight savings time button
– 1 CD play/pause button
– 1 Radio band button
– 1 Off button
– 2 Tuner/Time adjustment buttons (up/down)
– 3 Alarm set button (Radio, CD, Buzzer)
– 1 Alarm Mode button
On Side:
– Radio Volume Control knob

The upshot? While I can set the alarm wake up time (I entirely credit my engineering degree for this!), my wife won’t touch the infernal thing. If I want to silence the alarm, I repeatedly push the alarm mode button (buzzer -> buzzer + CD -> buzzer + radio -> buzzer + CD + radio -> merciful silence). I could of course press the Off button, but I would have to find it while still half asleep (and it’s on the smallish side). The alarm mode button is easier to find and has a distinctive shape.

As embedded designers, we don’t often give thought to our system’s human interface, the so called human-machine interface. The result of this state of affair is usually an overly complex box, full of buttons whose functions are rather nebulous. Your users might grumble, be intimidated, or simply not buy your gizmo. Love it or hate it, the iPod interface is simply brilliant.

Have you ever run into an overly complicated piece of consumer equipment?

If you’re like me, you’ll be thinking “What has he been smoking?!”

You can blame Timo for launching me down this path. He pointed to Atomic Object‘s blog entries dealing with Embedded development.
The latest entry: a presentation at RubyConf 2007, on how they used Ruby with their embedded project, a PIC based system no less.

Ruby you say!?!

I did not say in their embedded platform.

They use it to drive their unit testing… Unit Testing?! In embedded?
Yes, Ruby driving unit testing for an embedded PIC project.

It almost makes me want to move to Western Michigan…almost.

Seriously, go take a look. This gives you a glimpse of what is possible with embedded systems. Let’s all leave the printf era behind… Go learn about unit testing, agile development, refactoring. Please.

Since the web is crying out for yet another news aggregation blog, I feel compelled to fill the void. Actually, in keeping with the original intent of this blog (oh, where have we gone wrong? The siren songs of .NET and software design at large have struck) we will limit the content of these posts to things closely related to embedded systems. Expect a large dose of hardware related news and some embedded stuff.

Due to manpower issue and lack of readily re-syndicated sources (meaning, I’ll be reading dead trees), I expect this to be a weekly issue.

Rick Merritt has a nice piece in EE Times about the looming shortage of programmers. This is a big concern to address the next computing challenge: parallelism in the multi-core era.

Rick also has a side article about TechFest 07.  Microsoft Research’s Showcase of project.  Displays made of MEMS instead of LCDs is what got my attention.

Jeff Bier points out that if you’re going to market a new embedded processor,  provide good tools and reference designs.  Amen to that!

electronic engineering has been around for a long time…close to a century.  The early engineers drew much of their practices from the more established engineering disciplines…civil engineers (bridges, buildings, etc…) chief amongst them.

The conventional way to do things was to create your blueprint and have your builders build what you specified.  Sure, sometimes adaptations need to be made, the blueprints revised, etc… But generally speaking, the blueprint was a pretty reliable document to describe the end design.

Most hardware designs still follow that model: come up with the high level design and specifications then implement it.  Note that hardware includes both board level designs and also FPGA/ASICS, etc…

Software design essentially followed the same model.  Everyone is familiar with the waterfall model, even though the way it is commonly used is NOT what the original author had in mind. In the recent past, inroads have been made to change this.  The 90s brought us iterative design, and the new century ushered in Agile.  Both of these having a primary goal of speeding up the feedback loop to insure that we are solving the correct problem.  Often, at the inception of a project, we don’t actually know what the end product should be like.  We have an idea, but the actual concrete implementation, with all it’s corner cases and exceptions is far from the idea.

It turns out that the same problem is present in Hardware design.  EE Times has an article by Rishiyur S. Nikhil pointing to an EDA trend towards design-by-refinement.  Sounds like incremental design to me…

How sweet the sound…Hardware engineers finally taking a page from the software guys playbook…

Next Page »