Error!: Abort Mode

nobody wrote on Thursday, December 23, 2004:

When i send 57 char to COM0 the system go to ABORT mode and loop at 0x00003050.

The keil IDE system give me the Abort Mode with:

Abort ->
R13(SP) = 0x400036ec
R14(LR) = 0x00001484
SPSR     = 0x000000ff

Why the system go into Abort Mode ?

I’m using FreeRTOS 2.5.3 ARM7Keil Thumb Port.

:frowning:

Luca B.

nobody wrote on Thursday, December 23, 2004:

I think is a stack problem…

I try to add more stack to User Mode…

from 200 to 500

but happen the same thing…

:frowning:

rtel wrote on Thursday, December 23, 2004:

The serial port ISR will operate using the IRQ stack rather than the user stack - but the number of characters sent will not make it use more stack.

Which function are use using to send the characters?  vSerialPutString() or cSerialPutChar().

Try the demo application unmodified other than a line to send a long string to the COM port.  Does the same thing happen?

nobody wrote on Thursday, December 23, 2004:

Why the system go into Abort Mode ?

I use the cSerialPutChar and cSerialGetchar…

mmm… the GCC port doesn’t have this problem…

nobody wrote on Thursday, December 23, 2004:

The problem happens when I receive more string from PC…

nobody wrote on Thursday, December 23, 2004:

BUT…

if i send data to the ARM7 from PC and

the ARM7 put it into buffer…

and don’t use it with the call cSerialGetChar…

What happens ???

I think that the system go into Abort Mode…

Luca B.

rtel wrote on Thursday, December 23, 2004:

Can you explain more about what you are doing?

Are you using the standard demo?
What do you do to cause the error?

I am running the standard demo.  I can send a text file to the Keil demo board that is severl KBytes long and the program carries on executing with no errors.

nobody wrote on Thursday, December 23, 2004:

My system send and receive large data no problem. 

The demo board has reset and ISP on COM0 - make sure you dont use this by mistake.

Use a cable with just pin 2 pin 3 and pin 5 connected to make sure.

rtel wrote on Thursday, December 23, 2004:

Here is what I have found / done.

I can send many MBytes of data to the ARM chip all in one go at 115200 with no source code optimisation.  When I do this it is possible for the queue of characters to be Txed to fill up and stop.  I think this is because TRHE interrupts are being missed (see fix below).  However the kernel continues without error or abort.

If I stop the task from emptying the queue then the behaviour is exactly the same and there are no problems.

The serial ISR as downloaded contains a while loop.  If you comment out the line:

// while( lDidSomething )

then the THRE missing problem goes away.  With this line commented out I have sent 10 Megs of data at 115200 baud and experienced no problems at all.

All I can suggest is that you send me your entire project file for the Keil board.  I will try it here and let you know what I find.

Let me know what you want to do.

Regards.