Design Article
Examining your most important tools
Jack Ganssle
7/8/2009 12:00 AM EDT
What is your favorite tool? I'm particularly fond of my wood lathe, but for this publication let's narrow the question to tools used by embedded systems developers.
I vote for the oscilloscope. It's the universal electronic engineering tool, beloved by hardware and software people. It's also the most underused tool in the firmware realm.
A recent Embedded Market Study conducted by TechInsights, this magazine's publisher, showed that just 37% of us rated the scope as their "favorite/most important hardware/software tool." Number one, at 55% is the compiler and assembler.1
"Favorite" and "most important" probably don't go well together. The compiler is certainly one of the most important tools we use since it's impossible to build any bit of firmware without it. But it's hardly my favorite. In fact, the ideal compiler should be so nonintrusive and do its quite boring work so well that we should barely notice it's there. It's like a bilge pump that silently and constantly does a hugely important job but is unnoticed and under-appreciated.
Why did the scope fair so poorly? According to Electronics.ca, the global market for scopes will be about $1.25 billion in 2010.2 That's pretty small compared with many categories of electronics products (microprocessors, for instance) but huge for the embedded systems tools market.
![]() Click on image to enlarge. |





LarryL
7/9/2009 11:47 AM EDT
Hi Jack,
You mentioned VaST and Virtutech as helping to create simulations of the systems, and also mention that they cost real money. Open Virtual Platforms (www.OVPworld.org) has models freely available, and the simulator itself only costs a few thousand dollars, instead of having a 6-figure price tag. A good, solid simulation environment like this can help make test a whole lot easier.
Sign in to Reply
Dmd
7/9/2009 11:56 AM EDT
Jack, I don't remember taking this survey but I would definitely vote for the oscilloscope, especially since you showed us all how to monitor a multitasking application by using a resistor ladder to encode the run time of several tasks onto a single analog wire for real time scope display. That is a fabulous technique and as far as I know, can't be easily duplicated by any other tools.
However, in this age we tend to "design at a distance" and the thought of actually touching wires is considered "old school," about as much fun as cleaning a toilet.
Sign in to Reply
krwada
7/9/2009 1:06 PM EDT
You mean other than:
1. Developer's brain
2. Notepaper and pencil
...
I suppose the following are pretty high:
1. Desktop PC
2. Cross compiler and debugger
3. Oscilloscope
... indeed, I suppose I am old school.
Sign in to Reply
ChrisGammell
7/10/2009 8:59 AM EDT
I would agree about the scope in terms of all around development. On the purely hardware side of things, I'd like to also have a DMM available but again the scope takes care of that in a pinch. On the software side, I'd say a simple diff tool, but mostly because it wasn't listed and has helped me in development.
Sign in to Reply
dexkid
7/12/2009 8:25 AM EDT
Jack / Dmd,
Can you please share the link to the article which describes "how to monitor a multitasking application by using a resistor ladder to encode the run time of several tasks onto a single analog wire for real time scope display"?
It would be great to have all such tips n tricks in a single place.
Sign in to Reply
JackGanssle
7/13/2009 7:40 AM EDT
See: http://www.embedded.com/187203692?_requestid=155655
Sign in to Reply
mcarmijo
7/13/2009 12:45 PM EDT
Similarly, can a link (or full title, author, isbn, etc) be provided for the book referred to by JeffL?
Sign in to Reply
buggs.android
6/1/2010 3:37 AM EDT
I have played with browser plguin development for opera on davinci,webkit on android eclair,donout, limo. I just wanted to comment about gdb for debugging shared libraries on embedded linux.Looks like the only way is to use printfs and some time gdb itself crash raising SIGSEGV.According to me current embedded linux industry require a good debugger for step-by-step debugging, which can detect memory leaks in a better way in shared libraries.Browser dubugging is a challenge for current browser development guys.Because browser is a heaviest application which runs on e-linux platforms.
Sign in to Reply