[freertos - Open Discussion and Support] Stack Overflow / Underflow with serial com

26 views
Skip to first unread message

SourceForge.net

unread,
Nov 19, 2011, 11:18:09 AM11/19/11
to SourceForge.net

Read and respond to this message at:
https://sourceforge.net/projects/freertos/forums/forum/382005/topic/4828172
By: sigmaa

Hi,

I use FreeRTOS 7.0.2 on the PIC18F4685.

I create a simple task that get data from the serial port. If I send data slowly
on the port of the PIC, it work well, but if I send a big amount of data, I
have stackoverflow/underflow.

If I put usStackDepth of 200, the problem disapear, but why ?

This is the code of my task :

[quote]static portTASK_FUNCTION( vComRxTask, pvParameters )
{
signed char cByteRxed;

/* Just to stop compiler warnings. */
( void ) pvParameters;

for( ;; )
{
/* Block on the queue that contains received bytes until a byte is
available. */
if( xSerialGetChar( xPort, &cByteRxed, comRX_BLOCK_TIME ) )
{
if( cByteRxed == '1' )
{
vParTestSetLED( 2, pdTRUE );
}
else
{
vParTestSetLED( 2, pdFALSE );
}
}
}
}[/quote]

Thanks


_____________________________________________________________________________________
You are receiving this email because you elected to monitor this topic or entire forum.
To stop monitoring this topic visit:
https://sourceforge.net/projects/freertos/forums/forum/382005/topic/4828172/unmonitor
To stop monitoring this forum visit:
https://sourceforge.net/projects/freertos/forums/forum/382005/unmonitor

SourceForge.net

unread,
Nov 21, 2011, 9:08:39 AM11/21/11
to SourceForge.net
By: richardbarry

[quote]If I put usStackDepth of 200, the problem disapear, but why ?[/quote]

Well you haven't said what you changed it from, but I would guess because when
you have it lower than that you are overflowing the stack?

Regards.

SourceForge.net

unread,
Nov 24, 2011, 3:51:39 AM11/24/11
to SourceForge.net
By: sigmaa

Sorry I change it at the creation of the task :

[quote]xTaskCreate( vComRxTask, ( signed char * ) "COMRx", 200, NULL, uxPriority,
( xTaskHandle * ) NULL );[/quote]



[quote]Well you haven't said what you changed it from, but I would guess because
when you have it lower than that you are overflowing the stack?[/quote]

Yes but why is there an overflow. There is a buffer for the input data of the
serial link. If too much data is incoming, I would understand that the OS don't
take all the data, but why an overflow appear ?

With 200, it work, but what is the genrel way to estimate the value of this
stack ?

Thanks.

Reply all
Reply to author
Forward
0 new messages