This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[C6747] task blocked - need debug help

I am debugging a problem on a C6747 DSP where one of my 2 tasks is blocking.  I have used the kernel/object viewer to detect this, but the "blocked on" field is blank, so I'm not sure where to look next.  Here's a little background on the issue and how I've gotten here.

My application is set up such that I have my main task (TSK_echo) that does 2 things: mixes 10 possible audio inputs to 10 possible outputs & polls UART1 for data

I have a second, lower priority task (TSK_Uart) that processes the data from UART1 that is queued up by the main task.

Original problem exhibited itself when RS232 communication over UART1 "died" when more than 68 audio mixes were made.  Investigation showed that as mixes (aka. routes) were added, less and less time was spent in the TSK_Uart.  Once we hit 69 routes, the task appeared to stop running.  A reset restores communication.

The first problem discovered was a stack overflow in TSK_Uart.  We had a stack size of 1K, so I doubled it to 2K and no longer see the overflow as we seem to hit about 1500 bytes on our stack max in my testing.  Now I am still seeing a failure with 69 routes, but it looks different.  The TSK_echo task shows as "blocked" with nothing in the "blocked on" field and the TSK_Uart task is therefore running all the time. 

Can someone please help point me at where to look next? 

Thanks!

~Tina

  • Tina,

    Nothing leaps out here, but its difficult for me to totally understand your app from your description.  I guess the basic question is why your low priority task is getting starved.  You say that your hi priority task is "polling" the UART for data.  This is a bit of a red flag, since it implies things like not having an interrupt driven UART driver and it also raises the question of what is actually supposed to block the hi priority task and how often that is supposed to happen.  It seems like you need to consider and design in a way for your low priority task to get sufficient CPU time within the range of the number of mixes that can occur.  It sounds like the time running your low priority task is inversely proportional to the number of mixes that are occurring.