Thursday, March 23, 2006

It's likely you are an embedded programmer

Many of you write code on a desktop computer that is supposed to run on a desktop computer. It may be in LabVIEW, in C, C++, VB, Java, or some other language. That makes you a desktop programmer, right? Well, not so fast. The term "Embedded" is so nebulous that sometimes the definition is "anything that's not a desktop". Wikipedia has a decent definition for embedded. It says

An embedded system is a computer-controlled system. The core of any embedded system is a microprocessor, programmed to perform a few tasks (often just one task). This is to be compared to other computer systems with general purpose hardware and externally loaded software.

The key to being an embedded system is not the hardware it runs on, it's all in the software. Embedded systems have a particular task and they perform that task and nothing else. A Dell PC might be capable of being a desktop computer, but if you put software on it that turns it into something that does a particular task and only that task, it has then become an embedded system.

NI makes products that get used in a lot of embeded systems. Our customers take our products and turn them into, say, a Formula One brake test system, or a centrifuge control system. The brake test system uses an industrial PC with a Pentium 4 processor, but the application on that PC is designed to performa a particular function. It has a display that shows what the system is doing, and the operator only interacts with that system. The operator would never stick a "Quake" CD into the drive and start playing a game.

But embedded systems programming is hard, right? Yes and no. It's all about scale. If your embedded application can run on a desktop PC, then embedded programming is rather easy. Get yourself some good tools (which could even be free), take advantage of all of the thousands of programmer-years that go into Windows or Linux, and you're set. There are different form-factors for PCs, such as rugged chassis like PXI, that allow use in much more harsh environments than you would ever put something you bought from CompUSA.

The trick of embedded programming comes when you can't use PC hardware anymore. That laptop of yours doesn't fit in the pocket very well and weights a ton. The key-fob for unlocking you car has only 4 specially marked buttons rather than 101. But it's all a matter of scale. The more you optimize your hardware to match your application, the more pain you go through. But it doesn't change the type of application you are creating. You're still an "embedded programmer".

Technorati Tags
, ,


At 5:18 PM, Blogger b01011010 said...

Using NI's embedded system design tools does not make one an embedded systems engineer. Being able to design a computer controlled system from scratch does. For a fraction of the cost of NI's tools, I can build a better, tighter and simpler system that fits a customer's needs entirely, can run on a battery for 10 years and will never need a software patch.

At 7:26 AM, Blogger Joel said...

Certainly being able to design a computer controlled system from scratch would qualify you to be an embedded system programmer. The system you describe may be required for certain embedded applications. But are you saying that creating software for an ATM is not embedded programming just because it uses Windows? If so, then I respectfully disagree.


Post a Comment

<< Home

FREE hit counter and Internet traffic statistics from