Ask any good mechanic, and they will tell you that a well stocked toolbox is essential. The same holds true when doing embedded system design.

There are three categories of tools on needs to be familiar with in order to succeed in this challenging world: Knowledge, Software tools and Hardware tools. Anyone who has programmed is familiar with the first two categories. However, rare is the individual who requires a hardware tool when programming an enterprise class, web enabled, business intelligence gathering Oracle masterpiece.

Knowledge

These should be amongst your most precious tools. You might have the best stocked software & hardware toolbox, if you don’t have the knowledge to apply those tools, you are doomed! Note that I didn’t say your most expensive tools; in general, those would be in the hardware toolbox. In fact, knowledge is the cheapest tool to acquire! Case in point: The incredible amount I charge for these words of wisdom. You want to learn to program in language XYZ…visit amazon.com, download an open source compiler and you’re there! The problem with knowledge, is that while it is relatively cheap to acquire, it can be difficult to find!

Here are some of the basic tools which fall under the knowledge category:

  • Programming Language
  • Basic understanding of electronics and the ability to read a schematic
  • General Data Structure & Algorithms (Linked Lists, hash Tables, Binary Trees)
  • Specialized Algorithms (Goertzel, Hartley Transform, Kalman Filters)

One of the fist place to start looking at is the Embedded Systems Design web site. It is a treasure trove of information on all things embedded. If you can get on the magazine’s subscription list, it is well worth it.
Software Tools

These tools allow you to translate your knowledge into something that will be useful.

  • Compiler & Linker
  • Algorithm Development tools (MathLab, Mathematica, etc…)
  • Debugger

One of the phenomenon you will sometimes see is that since each processor familly is so different, you end up with a collection of compilers. Each of them with their quirks.

Hardware Tools

This is where the embedded engineer blazes a different path from his desktop/web brethren. These are tools that while not always essential, will make your life a whole lot easier and more productive. If you always have to bug a hardware engineer to analyze something, that won’t make you win any popularity contests…

  • Oscilloscope - THE essential tool.
  • Digital Multi-Meter - for quick and dirty checks
  • Logic Analyzer - very handy to see what is really happening
  • Programming & Debugging Cable - How else do you transfer your program?
  • Emulators - If you want to know exactly what is going on inside

This list is by no means exhaustive, but it should give you an idea of what you need to get going with embedded systems.