What kind of error could it be, if one register gets a address value causing a data abort. Because this value is in the undefinend area.
I wrote the code in c and I set a breakpoint befor the part, where the data abort occur. But when I step through this part of code I get the right value for this register and no data abort will occur.
So I think the code must be ok, but which side-effect could cause such a error?
Gerd
Hello Gerd Emar,
Please read knowledgebase article http://www.keil.com/support/docs/3080.htm . This article explains how to analyze a Data Abort Exception.
Best Regards, Martin Guenther
thanks for the hint, but "Show Source Code for the current address" is not available, when I click right in the assembly window.
the current address for the data abort is e.g. 0x2000DD29
in the assembly window:
0x2000DD29 00000000 ANDEQ R0, R0, R0
I think there's a data overflow, because my printf function shows strange values
int fputc(int ch, FILE *f) { return (COM1_Sendchar(ch)); }
In the stack window I can read that f should have the value / address 0x00000000 and ch is 0xFFFFFFFF
one question for my better understanding.
there's the stack top (at 0x00200588); I write a pattern from this address to lower addresses - to see if the stack size is enough. And the stack is really enough.
I check the values and I could see that above the stack top is a area with oxFF( in the internal RAM) following a part of 0x00 and then I could see a few values, stored at the end of the sram.
When I 'start this pattern from the last address of the sram to the stack top, then I'm not able to start my program, because I got immediately a dara abort. Moreover if I take a look into the call stack window then main is never called. Another function fputc for printf() is called...
ok now I see that I'm not able to write my pattern at the end of the internal ram - but where could I see which values are stored in this region? I can't see anything in the map file.