Keil™, An ARM® Company

Discussion Forum

data abort error

Next Thread | Thread List | Previous Thread Start a Thread | Settings

DetailsMessage
Read-Only
Author
Gerd Emar
Posted
11-Dec-2007 05:46
Toolset
ARM
New! data abort error

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

Read-Only
Author
Gerd Emar
Posted
11-Dec-2007 08:32
Toolset
ARM
New! RE: data abort error

now I installed a additional printf() function, and the error is gone but now I'm not able to start the main.c function at the beginning after the startup code. It always starts the senc_character function for the printf() function. My stack size is large enough.

Gerd

Read-Only
Author
VIKTOR GOTTSCHALD
Posted
11-Dec-2007 14:15
Toolset
ARM
New! RE: data abort error
Read-Only
Author
Martin Günther
Posted
11-Dec-2007 22:56
Toolset
ARM
New! RE: data abort error

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

Read-Only
Author
Gerd Emar
Posted
11-Dec-2007 23:22
Toolset
ARM
New! RE: data abort error

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


Gerd


Read-Only
Author
Gerd Emar
Posted
12-Dec-2007 00:51
Toolset
ARM
New! RE: data abort error

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

Gerd

Read-Only
Author
Gerd Emar
Posted
12-Dec-2007 03:42
Toolset
ARM
New! RE: data abort error

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.

Gerd

Read-Only
Author
Gerd Emar
Posted
12-Dec-2007 03:55
Toolset
ARM
New! RE: data abort error

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...

Gerd

Read-Only
Author
Gerd Emar
Posted
12-Dec-2007 04:29
Toolset
ARM
New! RE: data abort error

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.

Gerd

Next Thread | Thread List | Previous Thread Start a Thread | Settings