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-R7 ABT-Exception on Programstart

Hello,

I have a question about a strange behaviour which I have on a Cortex-R7 Core. I start a peace of firmware in an SRAM via a debugger. Before my Testcode starts, the core has the following state:

-> Core CPSR=0x000000d3: E=0 | A=0 | I=1 | F=1 | T=0 | MODE=SVC

After loading my firmware to the sram an start it and stop it again after some time the cpu has the following state

-> CPSR=0x000001d7: E=0 | A=1 | I=1 | F=1 | T=0 | MODE=ABT

The Testcode itself is an endless loop with some nop's in ARM32 Mode.

 

I also examining  the IFSR register and see the following values:

->IFSR=0x0000000D

In the ARM v7 reference manual the description of the register tells me that FS(3:0) == 0b01101 means MMU fault. But I have disabled the MMU through the SCTLR (mcr 15, 0, r0, cr1, cr0, {0}) write.

So I'm a bit puzzled why I get a MMU fault.

 

 

 

Parents
  • The Cortex-R7 has a MPU, not a MMU. Make sure that you read the description of IFSR in the PMSA chapter of the ARM ARM, and not the one in the VMSA chapter.

    For cores with a MPU, when it's disabled you get a default region set (chapter B5.1.5 of the ARMv7-A/R Architecture Reference Manual). As what you're seeing a permission I suspect you've loaded the code to an address which isn't executable in the default region set.

    What address is the code trying to run from?
Reply
  • The Cortex-R7 has a MPU, not a MMU. Make sure that you read the description of IFSR in the PMSA chapter of the ARM ARM, and not the one in the VMSA chapter.

    For cores with a MPU, when it's disabled you get a default region set (chapter B5.1.5 of the ARMv7-A/R Architecture Reference Manual). As what you're seeing a permission I suspect you've loaded the code to an address which isn't executable in the default region set.

    What address is the code trying to run from?
Children