Angel is a program that enables you to develop and debug applications running on ARM-based hardware. Angel can debug applications running in either ARM state or Thumb state.
You can use Angel to:
evaluate existing application software on real hardware, as opposed to hardware emulation
develop new software applications on development hardware
bring into operation new hardware that includes an ARM processor
port operating systems to ARM-based hardware.
These activities require you to have some understanding of how Angel components work together. The more technically challenging ones, such as porting operating systems, require you to modify Angel itself.
A typical Angel system has two main components that communicate through a physical link, such as a serial cable:
The debugger runs on the host computer. It gives instructions to Angel and displays the results obtained from it. All ARM debuggers support Angel, and you can use any other debugging tool that supports the communications protocol used by Angel.
The Angel debug monitor runs alongside the application being debugged on the target platform. There are two configurations of Angel:
a full version for use on development hardware
a minimal version that you can use on production hardware.
See Figure 13.1 for an overview of a typical Angel system. The debugger on the host machine sends requests to Angel on the target system. Angel interprets those requests and performs an operation such as inserting an undefined instruction where a breakpoint is required, or reading a portion of memory and sending back a response to the host.
Angel uses a debugging protocol called the Angel
Debug Protocol (ADP) to communicate between the host
system and the target system. ADP supports multiple channels and
provides an error-correcting communications protocol. Refer to the Angel Debug Protocol specification in Arm250\PDF\specs
for
more information on ADP.
Angel is supplied as:
a stand-alone form that is built into the Flash and/or ROM of ARM evaluation and development boards and other, third party boards
prebuilt images that you can program into ROM or download to Flash
a minimal library that you can link with your application.
In addition, full Angel source is provided so that you can port Angel to your own ARM-based hardware.
ANSI C and C++ libraries that support Angel are supplied with the ARM Software Development Toolkit. Refer to Chapter 4 The C and C++ Libraries in the ARM Software Development Toolkit Reference Guide for more information.