Other Parts Discussed in Thread: CC3100
Hello,
I am using a TMS570LS0432 microcontroller and sometimes get an "_dabort" error when reading from my memory. In debugging mode, I set a breakpoint in file 'sys_intvecs.asm' where the '_dabort' operation is (see picture).
The first two '_dabort' calls are when the function checkRAMECC(void) in 'system_selftest.c' is excecuted in these two lines:
/* Read the corrupted data to generate double bit error */ ramread = tcramA2bit; ramread = tcramB2bit;
Here a 'ramErrorFound' is called, but then 'ramErrorReal' is not called, so I assume there is no RAM error. The CPU is restored then and the program goes on (For me this behaviour does not cause any problems, as long as the program continues after the '_dabort' call.
After startup, my program works fine for a few seconds, but then '_dabort' is called again. This time 'noRAMerror' is called and the CPU is restored where it was aborted. The problem is, that the '_dabort' is called again, when the CPU tries to execute the command line again, so it ends up in an infinite loop. The '_dabort' call is caused by this function:
uint32 spiTransmitData8Bit(/* ... */ uint32 length, uint8 * srcbuff) {
uint16 Tx_Data;
// ...
while(length != 0U) {
// ...
Tx_Data = *srcbuff; <-------- _dabort is called when trying to read scrbuff
// Send TX_Data ...
srcbuff++;
length--;
}
// ...
}
The strange thing is, that this function is executed successfully a lot of times before the '_dabort' error occurrs.
The last thing I found out is that the pointer 'scrbuff' points to 0x08008000 and the debugger says "Error: memory map prevented reading" (see picture).
Now I want to know:
- What does this error message mean?
- How can I prevent the '_dabort' call?
- Might I be running out of memory?
I already read on these threads:
https://e2e.ti.com/support/microcontrollers/hercules/f/312/t/301090?TMS570-abort-on-startup
https://e2e.ti.com/support/microcontrollers/hercules/f/312/p/301325/1050075
But I could not figure out a solution myself. So I hope someone can help me solving this problem.
Thank you for any answers
Best regards,
Michel