This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS570LS1224: Abort caused by a background fault

Part Number: TMS570LS1224

Context
When called, the vPortPreemptiveTick function will raise an exception and jump in dabort.

The abort register tells me the abort is triggered inside the portSAVE_CONTEXT macro

dabort will not find any error and will call custom_dabort function, which is empty in my case.

I was expecting to find MPU fault info in the CP15 register, but I got this instead:


To my understanding, this implies that write access caused a "background fault" at 0x07FFFDAC.

When looking at 0x07FFFDAC:

Looking at the memory map, this is a reserved address.

This memory should be empty and is weirdly close to my STACK memory section (0x08000000).

Questions
What is a background fault?
Why is this fault calling custom_dabort ?
Why 0x07FFFDAC ? 

Any tips for solving this issue would be appreciated.
To be honest, I'm kinda lost. :/


Regards,

Gabriel

  • Hello Gabriel,

    When the MPU is enabled, an access to an undefined area of memory normally generates a background fault.

    The _dabort() is an example to handle the abort generated mainly by the selftest (RAM ECC errors, and Flash ECC error), all other error will cause the code jump _custom_dabort().

    Please trace the code execution path to find which instruction defines this address.

  • Hello Gabriel,

    A MPU background fault might indicate a stack overflow. Can you try a bigger stack size?