Embedded Systems Programming Course



Embedded systems have proliferated so much that embedded microprocessors now account for about 94% of the world's microprocessor market. PC's account for about 6% of that market.

Embedded microprocessors appear in everything around us, including televisions, remote controls, DVDs, VCRs, microwaves, refrigerators, cars and washing machines. Of course, computer equipment such as printers, PDAs, routers, firewalls and modems also include embedded microprocessors.

Developing software for embedded processors is normally vastly different than developing standard computer software. An embedded system generally has severe restrictions on the amount of RAM available, CPU processing power and normally has very restricted input/output capabilities. The requirements for developing embedded system software are similar to the methods used in the past for assembly language programming, where small size and speed are generally preferred over ease-of-use and features. Basically the goal is to make the software that is reliable and usable above all else, without worrying much about advanced features.


Many different companies manufacture microprocessors for the embedded systems market. The major manufacturers are Intel, Motorola, Zilog, AMD, Cyrix, Texas Instruments, National Semiconductor, Rockwell, and others. Each microprocessor is generally designed either as a general-purpose processor, such as the Pentium series, or as a special purpose microprocessor, such as the DSP family from Texas Instruments.

Generally, all microprocessors, whether general or special purpose, do share some common attributes. All microprocessors have internal memory locations known as registers. Registers are used to perform mathematical operations, comparison and act as temporary, reusable memory. Most processors have a limited number of registers. Registers are also limited in the number of bits of information they can store. Each bit is a binary one (1) or zero (0). The number of bits that can be held in each register defines the word size of the processor. Typically modern microprocessors hold 4, 8, 16, 32 or 64 bits in each register and are therefore known as n-bit processors.

Other common attributes of microprocessors include the ability to access memory, communicate with external devices through input/output ports and detect when an external device needs attention via interrupt request lines. These external devices generally have to be read by the processor using special instructions and the memory content is transferred into one or more the internal registers. Once the values are in the registers, they can be compared, calculated or written out to other external devices.

Recommended Reading

Here are a couple of books I've found useful when learning about embedded systems programming. A more complete list can be found at the end of this document.

Introduction Sections:

Programming Embedded Systems:

Programming the Rabbit 2000:

Alternatives to Dynamic C:

Windows Embedded Tools:

PalmOS Programming Tools:

NOTE: Not yet completed.

Linux as an Embedded Operating System:

Other Embedded/Real-Time Operating Systems:

Where to go from here: