Working with Embedded Systems

More and more devices run on embedded systems, a combo of hardware and software designed for a specific purpose.

Microprocessors are everywhere. Digital cameras have them. So do ATM machines, microwaves -- even door locks. If you start to look around you, youre bound to realize youre surrounded by devices with computing power inside.

But whats the nature of the digital gadgetry inside these devices? Rather than the multipurpose computing muscle of the desktop PC, these devices often run on "embedded systems" -- a combo of hardware and software designed for a specific purpose. Unlike personal computers, which are designed to handle everything from Microsoft Word to "Myst II," embedded systems are typically designed to perform discrete and limited functions, like telling a cars anti-lock brake system when to activate.

A Growth Area?

With digital devices proliferating, industries from health care to manufacturing are seeking programmers with know-how in embedded systems programming. "Its absolutely a growth area," says Michael Barr, author of "Programming Embedded Systems in C and C++" and editor in chief of the Embedded Systems Programming magazine. "There are a lot of opportunities for people to write software for these systems."

According to Barr, two factors contribute to the demand for embedded systems programmers:

  • Cheap processors now make it practical to integrate computing power into a whole range of products, not just those traditionally viewed as digital. The idea is simple: You dont need much computing power if the task is simple. "A perfect example is a hotel door lock," says Barr.
  • Concurrently, embedded systems have become much more complex, in part because more powerful processors are now inexpensive enough to include in cars, cameras, kid toys and other products. These embedded devices, with more processing power and memory, typically perform a complex set of functions, or even several functions.

Is Embedded-System Programming for You?

Developers of embedded systems have to deal with constraints unknown to other coders. Thats part of the challenge, but its not for everyone. To a certain extent, the challenge for developers is to reorient their thinking for the world of embedded systems. "What they need to do is jump through a set of hoops mentally to think of computers and computer programming in a different way," says Barr.

"Writing software for embedded systems is considerably harder than writing software for a PC," contends Nigel Jones, a software consultant specializing in embedded systems. "With a PC, if your code screws up, you can just reboot the computer. You cant do that with embedded systems."

Developers working with PCs have the luxury of lots of computing power and memory. Not so with embedded systems. "If youre the sort of person that likes solving software jigsaw puzzles, then embedded is the place," says Jones. "If you just get pleasure from churning out code, dont go into it."

What Sort of Background Do You Need?

Embedded systems programmers have traditionally come from either electrical engineering or computer-science backgrounds. According to Barr, 70 to 75 percent of his magazine readers have backgrounds in electrical engineering. That said, it is increasingly common for developers to come from a computer science background, especially if they have knowledge of assembly language.

"Certainly someone is going to need to know C," says David Simon, a software consultant and author of "An Embedded Software Primer." "Thats a huge percentage of the embedded work thats being done right now."

As Barr puts it, C is the "lingua franca" of embedded systems programming. In a survey, Embedded Systems Programming found 90 percent of subscribers used C in their work, 45 percent used C++ and 10 percent used Java (some programmers work with multiple languages). The bottom line: C is essential, and knowledge of assembly language is often required as well.

Barr sees school or on-the-job projects as the best ways to break into embedded systems work. Books like Barrs or Simons can help, of course, and so can frequenting newsgroups on the topic, such as comp.arch.embedded and comp.realtime. At, the Beginners Corner provides a useful way to test the waters. Barrs glossary for embedded systems will also help.

By adapting to this different style of programming, you can become embedded in a burgeoning field.

IT professionals: Get more résumé help, salary data and industry info from Monster Technology.