Search code examples
armabortmmu

external abort in arm processor


What is a typical external abort on an arm processor?

How does it differ from a normal data abort and prefetch abort?

How does it inform an application about external abort?


Solution

  • usually ARM processor comes with co processor one of its co processor is cp15 which acts as a MMU.

    If there is any such virtual address for which MMU is not able to find any page or it encounter with translation fault called data or prefetch abort depends upon the respective path (I Cache or D Cache).

    http://infocenter.arm.com/help/index.jsptopic=/com.arm.doc.ddi0438d/BABFFDFD.html

    Suppose you encounter with such a virtual address that has a valid physical address in mapping but the physical address itself is not valid (or the address belongs to the secure world i.e. trust zone) , system bus will generate a abort in this case , because it will not be able to decode the physical address.

    In a simple word all aborts which will not detect by MMU called as external abort , and application will be notified with SIGBUS signal


    What is a typical external abort on an arm processor?

    A typical external abort is something hardware related. It is not typically possible for a user process to cause this. Typical causes are not enabling clocks to an SOC module and/or initializing dependant SOC blocks (bus configuration, pin multiplexing, etc.). It will also happen with TrustZone when accessing protected memory (Ie, secure memory from the normal world).

    How does it differ from a normal data abort and prefetch abort?

    A normal data abort and prefetch are using memory not mapped by an MMU. An external abort is mapped, but when the CPU runs the bus cycle, the peripheral at the physical address does not respond (or sends an error back to the CPU).

    How does it inform an application about external abort?

    As an external abort means some external to the CPU (aka hardware), it is not normally the case that an application will get an external abort. An application should not deal with hardware directly.