
Examine the Landscape 43
The first thing to notice is that there are two basic types: memories and peripher-
als. Obviously, memories are for data and code storage and retrieval. But you
might be wondering what the peripherals are. These are specialized hardware
devices that either coordinate interaction with the outside world (I/O) or perform
a specific hardware function. For example, two of the most common peripherals in
embedded systems are serial ports and timers. The former is an I/O device, and
the latter is basically just a counter.
Members of Intel’s 80x86 and some other processor families have two distinct
address spaces through which they can communicate with these memories and
peripherals. The first address space is called the memory space and is intended
mainly for memory devices; the second is reserved exclusively for peripherals and
is called the I/O space. However, peripherals can also be located within the mem-
ory space, at the discretion of the hardware designer. When that happens, we say
that those peripherals are memory-mapped.
From the processor’s point of view, memory-mapped peripherals look and act
very much like memory devices. However, the function of a peripheral is obvi-
ously quite different from that of a memory. Instead of simply storing the data that
is provided to it, a peripheral might instead interpret it as a command or as data to
be processed in some way. If