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-R52+ asynchronous abort

Hi

I find whenever R52+ writes to a non-existing address, register address or memory address, it generates an asynchronous abort. It's not related to the MPU attributes.

Could you tell me why asynchronous abort generates for write, especially for MPU attribute is Device-nGnRnE ?

From my understanding, nE means the write transaction should wait for the completion ack.

BR, Grace

Parents
  • I'm not an expert specifically on the Cortex-R52, but I cab give you an architectural answer.

    The nE attribute says that, if supported by the memory system, a write is not considered complete until it has reached the end point (e.g. a peripheral).  

    However, a write does NOT need to have completed for a STR instruction be retired.  To ensure the write completed, software needs to issue a DSB or DFB (R profile only) barrier.

    Or in summary: The DSB/DFB is how you "complete" the write, the nE attribute controls what "complete" means.

    More generally - I'd advise always setting up the MMU/MPU so that the processor cannot access non-existent locations. :-) 

Reply
  • I'm not an expert specifically on the Cortex-R52, but I cab give you an architectural answer.

    The nE attribute says that, if supported by the memory system, a write is not considered complete until it has reached the end point (e.g. a peripheral).  

    However, a write does NOT need to have completed for a STR instruction be retired.  To ensure the write completed, software needs to issue a DSB or DFB (R profile only) barrier.

    Or in summary: The DSB/DFB is how you "complete" the write, the nE attribute controls what "complete" means.

    More generally - I'd advise always setting up the MMU/MPU so that the processor cannot access non-existent locations. :-) 

Children