3
votes

I am programming a bare-metal application on a Cortex-A9 and I am frequently getting Data Abort Exceptions. When I look for the reason for this exception in the Data Fault Status Register (DFSR) of CP15, the value of the Fault Status bits (FS) is b10110. I looked at the specification and b10110 means "Asynchronous external abort". What does this mean? I can't find any useful information about this kind of abort.

For example I also get Alignment faults sometimes, but I know what this means and so I can track down those kinds of faults comparatively easy. But I don't know how to handle asynchronous external aborts, since I don't know what they mean or why they occur. Thanks for your help.

1
do you have sctlr.a set? I wonder if that can give you sync aborts. - auselen

1 Answers

1
votes

Wild guess... You have unaligned writes, they get buffered and core moves on to subsequential instructions, writes start to happen and fails. Core has no idea where they are originated from, fails with an async data abort.

Reading Chapter 11.1 Types of Exceptions, Aborts from Cortex-A Series Programmers Guide might give you some ideas.