Embedded systems design offers intellectual rewards

Hot skills: Challenging careers for C and C++ programmers

What is it?

An embedded system is a special-purpose computer system designed to perform a dedicated function. Embedded systems perform a small number of predefined tasks, and as such engineers are able to optimise their design, resulting in lower costs.

In February, microprocessor manufacturer Zilog, one of the leaders in the manufacture of processors for embedded systems, announced a new version of its 8-bit Z80 chip. Older readers may recall the Z80 as the processor that drove their first home and hobbyist systems, such as the Sinclair Spectrum, Tandy TRS-80 and early Nintendo Gameboy.

The eZ80F91 is a very different beast, designed for internet networking and communications applications, and featuring "increased registers for better I/O performance, a modified power controller for lower power consumption, and updated flash memory functionality to reduce code size and speed time to market".

It is not just the names of the processors that recall the days when constrained processor power and memory required greater discipline. Competitive edge in this globalised mass-market can come down to a mere penny in production costs, or shaving off a few CPU cycles.

Creating the software for embedded systems has been described as "the art of doing more with less". It is an unforgiving market, where the daily crashes we are used to on PCs will not be tolerated - patients in intensive care units don't have the option of wandering off for a coffee while nurses reboot the systems that are keeping them alive. Equally, manufacturers of socks that play Jingle Bells cannot afford a week's slippage in delivery for their once-a-year market.

Where did it originate?

Military, aerospace, medical and traffic control applications have used embedded systems since the 1940s, but the mass market took off in the 1980s when new production techniques reduced the unit cost of chips to less than a dollar.

What makes it special?

Embedded systems programming combines the intellectual challenge of problem solving within extreme constraints with some of the highest financial rewards available to C and C++ developers.

How difficult is it to master?

The best route into embedded systems is through C or C++. Embedded C is an ISO-specified set of extensions to the C language, which attempts to address the common features of different processors to improve performance, and also to enable applications to be portable.

C developers will have to learn the embedded extensions, and C++ specialists will have to unlearn many of the approaches they are used to. There are a growing number of integrated development environment tools to make life easier, including Embedded Visual C++ and the output of the Eclipse Embedded Rich Client Platform Subproject.

Where is it used?

Applications include mobile phones, aircraft and in-car control systems, medical equipment, household electronics and computer peripherals. The two top prize winners in Zilog's 2006 16-bit embedded design competition were an automated window-blind controller and an internet-ready refrigerator.

What systems does it run on?

Versions of familiar and not-so-familiar operating systems including Embedded Linux, OpenBSD, SymbianOS, Windows CE and Windows XP Embedded.

Rates of pay

Salaries for embedded C and C++ developers start at £30,000, rising to £45,000-plus with two or more years' experience.


Most firms that offer C training also have embedded C courses. There are many books, such as Programming Embedded Systems in C and C++ by Michael Barr and Anthony Massa.Microsoft developers should start at

Microsoft's embedded systems page >>

Computer Weekly/SSL salary survey >>

Hotskills >>

Read more on Data centre hardware