06-12-2012, 12:43 PM
ARM System Developer’s Guide Designing and Optimizing System Software
ARM System Developer--s Guide.pdf (Size: 3.27 MB / Downloads: 64)
ARM Embedded
Systems
The ARM processor core is a key component of many successful 32-bit embedded systems.
You probably own one yourself and may not even realize it! ARM cores are widely used in
mobile phones, handheld organizers, and a multitude of other everyday portable consumer
devices.
ARM’s designers have come a long way from the first ARM1 prototype in 1985. Over
one billion ARM processors had been shipped worldwide by the end of 2001. The ARM
company bases their success on a simple and powerful original design, which continues
to improve today through constant technical innovation. In fact, the ARM core is not
a single core, but a whole family of designs sharing similar design principles and a common
instruction set.
For example, one of ARM’s most successful cores is the ARM7TDMI. It provides up to
120 Dhrystone MIPS1 and is known for its high code density and low power consumption,
making it ideal for mobile embedded devices.
In this first chapter we discuss how the RISC (reduced instruction set computer) design
philosophy was adapted byARMto create a flexible embedded processor. Wethen introduce
an example embedded device and discuss the typical hardware and software technologies
that surround an ARM processor.
The RISC design philosophy
The ARM core uses a RISC architecture. RISC is a design philosophy aimed at delivering
simple but powerful instructions that execute within a single cycle at a high clock speed.
The RISC philosophy concentrates on reducing the complexity of instructions performed
by the hardware because it is easier to provide greater flexibility and intelligence in software
rather than hardware. As a result, a RISC design places greater demands on the compiler.
In contrast, the traditional complex instruction set computer (CISC) relies more on the
hardware for instruction functionality, and consequently the CISC instructions are more
complicated. Figure 1.1 illustrates these major differences.
The ARM Design Philosophy
There are a number of physical features that have driven the ARM processor design. First,
portable embedded systems require some form of battery power. The ARM processor has
been specifically designed to be small to reduce power consumption and extend battery
operation—essential for applications such as mobile phones and personal digital assistants
(PDAs).
High code density is another major requirement since embedded systems have limited
memory due to cost and/or physical size restrictions. High code density is useful for
applications that have limited on-board memory, such as mobile phones and mass storage
devices.
In addition, embedded systems are price sensitive and use slow and low-cost memory
devices. For high-volume applications like digital cameras, every cent has to be accounted
for in the design. The ability to use low-cost memory devices produces substantial savings.
Another important requirement is to reduce the area of the die taken up by the embedded
processor. For a single-chip solution, the smaller the area used by the embedded processor,
the more available space for specialized peripherals. This in turn reduces the cost of the
design and manufacturing since fewer discrete chips are required for the end product.
ARMhas incorporated hardware debug technology within the processor so that software
engineers can view what is happening while the processor is executing code. With greater
visibility, software engineers can resolve issues faster, which has a direct effect on the time
to market and reduces overall development costs.
AMBA Bus Protocol
The Advanced Microcontroller Bus Architecture (AMBA) was introduced in 1996 and has
been widely adopted as the on-chip bus architecture used for ARM processors. The first
AMBA buses introduced were the ARM System Bus (ASB) and the ARM Peripheral Bus
(APB). Later ARM introduced another bus design, called the ARM High Performance Bus
(AHB). Using AMBA, peripheral designers can reuse the same design on multiple projects.
Because there are a large number of peripherals developed with an AMBA interface, hardware
designers have a wide choice of tested and proven peripherals for use in a device.
A peripheral can simply be bolted onto the on-chip bus without having to redesign an interface
for each different processor architecture. This plug-and-play interface for hardware
developers improves availability and time to market.
Peripherals
Embedded systems that interact with the outside world need some form of peripheral
device. A peripheral device performs input and output functions for the chip by connecting
to other devices or sensors that are off-chip. Each peripheral device usually performs a single
function and may reside on-chip. Peripherals range from a simple serial communication
device to a more complex 802.11 wireless device.
All ARM peripherals are memory mapped—the programming interface is a set of
memory-addressed registers. The address of these registers is an offset from a specific
peripheral base address.
Controllers are specialized peripherals that implement higher levels of functionality
within an embedded system. Two important types of controllers are memory controllers
and interrupt controllers.
Memory Controllers
Memory controllers connect different types of memory to the processor bus. On power-up
a memory controller is configured in hardware to allow certain memory devices to be active.
These memory devices allow the initialization code to be executed. Some memory devices
must be set up by software; for example, when using DRAM, you first have to set up the
memory timings and refresh rate before it can be accessed.