What is it?
An embedded system is a device combining hardware and software which performs a dedicated function or functions. Found in consumer electronics, process control systems, aircraft, in-car systems and many other applications, they need to be extremely reliable, but because of their small size and limited resources, present challenges for designers and developers. Microsoft calls them "non-personal computer devices". Usually they cannot be modified by users, but often have interfaces to external devices such as sensors.
Where did they originate?
Although they evolved from familiar microprocessor technology, the development of embedded systems has followed a different path, because of constraints on their price and use of resources. Many are used in mass-produced products where a difference of pennies in unit production costs can affect commercial success. Designers work within limits that PC developers have not experienced since the late 1970s. One of the most successful ranges is the Zilog Z80, an eight-bit microprocessor.
What are they for?
Embedded systems have kept pace with developments in other fields of computing. We now have the "embedded internet" - last year, Zilog released the eZ80, which incorporates a TCP/IP stack.
What makes them special?
The unstoppable rise of computer electronics, automation and control systems means a vast market for scarce and hard-to-acquire embedded systems skills. Yet in many ways, embedded systems are something of a cottage industry, with thousands of specialist development companies, and opportunities for talented individuals.
How difficult is it to master?
According to veteran embedded systems guru Jack Ganssle, C or C++ are base-level skills for any firmware (program code held on memory chips without electrical power) developer, but are merely a subset of the required expertise.
He said, "First is the ability to work with limited resources. When the system is performance-bound, embedded engineers redesign code, tune routines and even, at times, change the hardware design. So the accomplished firmware developer is a master of cramming more into less: more features into less memory, more performance into fewer CPU cycles. Assembly language always lurks. We firmware folk are responsible for even the most basic of all functions."
It is also helpful to be able to use hardware description languages such as VHDL and Verilog.
What systems does it run on?
Some use dedicated operating systems, others versions of Unix or Windows. Microsoft provides Windows XP Embedded, Windows CE .net and Windows CE for Automotive, which may offer a way in, since developers can use familiar tools such as Visual Studio.net. Also check out Embedded Linux and Java.
Where is it used?
The alarm clock that woke you, the microwave, toaster and coffee-maker you used for breakfast may all contain one. If you drove to work, you probably relied for security, safety and comfort on several dozen.
Not many people know that
Eighty per cent of embedded systems are delivered late, according to Jack Ganssle.
What is coming up?
Embedded Internet systems for consumer electronics, enabling you to control domestic devices remotely.
Embedded systems design can be as close to electronic engineering as software development gets, so an academic rather than commercial course may be the best foundation. C programmers can take five-day crash courses in embedded C.
Rates of pay
Experienced embedded software engineers can expect £35,000 to £40,000.
This was first published in October 2003