data abort on AT91SAM7X256

joanah wrote on Friday, June 11, 2010:


I am new to FreeRTOS and I try to get my program run, but sometimes my debugger halts at line 161 in boot.s which says:

__dabt: b     .                         /* data abort	

What does that mean? What could be the problem?

richard_damon wrote on Friday, June 11, 2010:

While I am not familiar with this processor, normally a data abort comes from accessing memory in a way you shouldn’t. Some possible causes that are FreeRTOS related would be accessing a handle that hasn’t been initialized, or whose initialization failed (and is thus null).

pbeamtn wrote on Thursday, June 17, 2010:

Been dealing with data aborts myself.  It really does not have anything necessarily to do with FreeRTOS.  Ideally, you would create a handler for this exception, which makes it easier to detect where the trouble is.  What it means is that you have attempted to access memory that is invalid.  Things like reading from a location where there is no memory, or trying to read data that is not aligned.  For example, to read a 32 bit value, you have to be reading from an address on a 4 byte boundary.

Make sure you are not using a mutex or queue that has not been initialized.  I think that may also cause this problem.

I usually set a break point and start hunting for the routine that causes this.  It can be not much fun, but when you find it, look at your pointers or any other memory accesses to make sure the addresses are real memory, and then make sure that the alignment of what you are accessing is correct.

aviasaf wrote on Saturday, June 19, 2010:

i am familiar with this kind of problems, please check R14 register , in some cases its points the program address that point to the data abort. 

please read at the ATMEL programming manual