This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Cortex A9 MMU

Hello,

I run a baremetal program  on one core of the Cortex A9. The First Stage Bootloader (FSBL, Pre-Loader) and the Second Stage Bootloader (SSBL) perform perfectly. When the baremetal application (axf-file) is started in the debugger it executes without a problem. However when the baremetal application (bin-file) is exectued directly on the machine, the baremetal application cannot be started and the follwing error is thrown:

data abort

MAYBE you should read doc/README.arm-unligned-accesses

However, when the MMU is deactivated, the application (bin-file and axf-file) execute perfectly.

This leads me to the follwing questions:

Why can the program be started in the Debugger, and at the same time cause a data abort, when the binary is executed on the machine?

Why could the MMU cause a data abort, when the bin-file is started on the machine?

I would be grateful for any hints and tips. Many thanks in advance.

Deas

Parents
  • For Cortex-A9, when MMU is disabled, the data accesses are treated as Strongly Ordered. When MMU is enabled, it will check the memory address permission.


    If SCTLR.U == 1, unaligned access support for loads and stores of 16-bit halfwords and 32-bit words. Unaligned access support only applies to Normal memory. Unaligned accesses to Strongly-ordered or Device memory are UNPREDICTABLE.

    SCTLR.A = 1 bit forces an abort on an unaligned access.

Reply
  • For Cortex-A9, when MMU is disabled, the data accesses are treated as Strongly Ordered. When MMU is enabled, it will check the memory address permission.


    If SCTLR.U == 1, unaligned access support for loads and stores of 16-bit halfwords and 32-bit words. Unaligned access support only applies to Normal memory. Unaligned accesses to Strongly-ordered or Device memory are UNPREDICTABLE.

    SCTLR.A = 1 bit forces an abort on an unaligned access.

Children