13.1.3. Angel system resource requirements

Where possible, Angel resource usage can be statically configured at compile and link time. For example, the memory map, exception handlers, and interrupt priorities are all fixed at compile and link time. Refer to Configuring Angel for more information.

The following sections describe the system and memory resources required by Angel.

System resources

Angel requires the following configurable and non-configurable resources:

Configurable resources

Angel requires the following for semihosting purposes:

  • one ARM SWI

  • one Thumb SWI.

Non-configurable resources

For breakpoints, Angel requires:

  • two ARM Undefined instructions

  • one Thumb Undefined instruction.

ROM and RAM requirements

Angel requires ROM or Flash memory to store the debug monitor code, and RAM to store data. The amount of ROM, Flash, and RAM required varies depending on your configuration.

Additional RAM is required to download a new version of Angel:

  • if you download a new version of Angel to Flash memory you will require enough RAM to store the flash download program

  • if you download a new version of Angel using the loadagent debugger command, you will require RAM to store the downloaded copy of Angel.


The loadagent command cannot write to Flash. If you use loadagent, Angel must be compiled to run from RAM.

Exception vectors

Angel requires some control over the ARM exception vectors. Exception vectors are initialized by Angel, and are not written to after initialization. This supports systems with ROM at address 0, where the vectors cannot be overwritten.

Angel installs itself by initializing the vector table so that it takes control of the target when an exception occurs. For example, debug communications from the host cause an interrupt that halts the application and calls the appropriate code within Angel.


Angel requires use of at least one interrupt to support communication between the host and target systems. You can set up Angel to use:

  • IRQ

  • FIQ

  • both IRQ and FIQ.

It is recommended that you use FIQ for your own interrupt requirements because Angel has no fast interrupt requirements. Refer to devconf.h for more information.


Angel requires control over its own Supervisor stack. If you want to make Angel calls from your application you must set up your own stacks. Refer to Developing an application under full Angel for more information.

Angel also requires that the current stack pointer points to a few words of usable full descending stack whenever an exception is possible, because the Angel exception return code uses the application stack to return.

Copyright © 1997, 1998 ARM Limited. All rights reserved.ARM DUI 0040D