FreeRTOS, task umre pri cekani na semafor...

Stano stano.hw na gmail.com
Středa Říjen 30 13:33:14 CET 2013


Vystrel na slepo
Nechyba vam v interrupte
portEND_SWITCHING_ISR(xHigherPriorityTaskWoken);


Jaroslav Buchta  wrote / napísal(a):
> Stale bojuju s STM32F4 a LWIP, docela to funguje ale občas umře... 
> Nyni resim zahadu se synchronizaci, cast  funkce (task) pro prijem 
> paketu redukovana na podstatne aktualne vypada takto:
>
>   for( ;; )
>   {
> STM32F4_Discovery_LEDOn(LEDO);
>     int bSync = xSemaphoreTake( s_xSemaphore, 20); 
> //emacBLOCK_TIME_WAITING_FOR_INPUT); 
> <------------------------------------- tady to umre, ledka zustane svitit
> STM32F4_Discovery_LEDOff(LEDO);
>     portTickType tckRcv = xTaskGetTickCount();
>     {
>       while (ETH_CheckFrameReceived())
>       {
>           p = low_level_input( s_pxNetIf );
>           LedSetRx();
>           if (ERR_OK != s_pxNetIf->input( p, s_pxNetIf))
>           {
>             pbuf_free(p);
>             p=NULL;
>           }
>           bSmallDelay = pdTRUE;
>           while (bSync && xTaskGetTickCount() - tckRcv < 3) 
> vTaskDelay(3);            <---------------------------------- bez 
> tohoto zpozdeni to umre behem par minut, takhle za par hodin az dni
>       }
>     }
>
> Semafor je uvolnovan z ISR ale to funguje (pomaleji a se ztratami 
> nekterych paketu) i bez toho diky timeoutu a nemelo by se snad stat, 
> ze by to z cekani po 20ms zas nevypadlo...
> Problem je, ze tento task ma nejvyssi prioritu jako jediny, ma v 
> chybovem stavu status READY (bezne vetsinou BLOCKED) a vesele si pri 
> tom funguji tasky s nizsi prioritou a i IDLE. Tomuto scheduler proste 
> procesor neprideli, budu dal badat - zatim reseno watchdogem coz 
> samozrejme neni idealni... Divne je, ze to je casove zavisle (to 
> zpozdeni ma i jiny vyznam kvuli stabilite prenosu vetsich objemu dat, 
> dalsi cil badani - mozna to souvisi) a nezda se, ze by selhani melo 
> nejakou vazbu na intenzitu komunikace (je na to vetsinou PINGano po 2s)
> Zasobniky tasku jsou dostatecne, stav vsech tasku si muzu normalne 
> vypsat pres USB, zas to bude asi nejaka blbost ale slusna zabava na 
> dlouhe vecery je jista ;-)
>
> No budu se muset nejak zorientovat v tech systemovych frontach, pokud 
> nekdo neco podobneho neresil.
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list