Forum: Mikrocontroller und Digitale Elektronik FreeRTOS vTaskList()


von Moritz M. (moritz_m72)


Lesenswert?

Hallo,

weiß jemand wie in FreeRTOS die Funktion vTaskList verwendet wird?

Also "configUSE_TRACE_FACILITY" in der FreeRTOSConfig.h muss auf 1 
gesetzt werden.
Und dann hab ich einen Buffer folgendermaßen konfguriert:
1
signed char buffer[256];

Die Funktion ruf ich dann in einem Task so auf:
1
vTaskList(buffer);

In den Beispielen von FreeRTOS wird das auch genau so gemacht.

Nur leider wird dann immer der Default-Handler aufgerufen, und zwar, 
wenn der Controller das zweite mal hier hin kommt:
1
usStackRemaining = usTaskCheckFreeStackSpace( ( unsigned char * ) pxNextTCB->pxStack );
(task.c - prvListTaskWithinSingleList())

usStackRemaining hat dabei den Wert 93 und ist ein unsigned short
px->Stack ist = 0x0;

Ich benutze CoIDE mit ARM-GCC und das STM32F4Discovery 
Board(STM32F407VGT6)

Moritz

von Moritz M. (moritz_m72)


Lesenswert?

Hallo nochmal.

Also ich habe jetzt rausgefunden, das der HardFault_Handler angeprungen 
wird.

Weiß jemand warum?

Moritz

von holger (Gast)


Lesenswert?

>Weiß jemand warum?

Bei FreeRTOS meistens ein Stackoverflow.

von Wichtige Regel (Gast)


Lesenswert?

Du hast den Sourcecode.

Wieso steppst Du nicht einfach durch?

>Also ich habe jetzt rausgefunden, das der HardFault_Handler angeprungen
>wird.
>
>Weiß jemand warum?

Wenn Du soweit gekommen bist, kannst Du ja auch die entsprechenden
Debug-Register und den Stack auswerten, dann
findest Du evtl. raus, wo der HardFault ausgelöst wurde.

Single-Step dürfte aber schmerzloser sein...

von turni (Gast)


Lesenswert?

1. Der Task Stack ist zu klein (--> Prüfen mit 
vApplicationStackOverflowHook(); einschalten über 
configCHECK_FOR_STACK_OVERFLOW 2)
2. FreeRTOS Heap zu klein (configTOTAL_HEAP_SIZE)

von Moritz M. (moritz_m72)


Lesenswert?

Hallo,

ja, ich hab den Code im Single Step duchlaufen lassen. Bei einem 
Overflow sollte doch eig. die Callback Funk. 
vApplicationStackOverflowHook aufgerufen werden? Welche Register wäre 
das die man sich ansehen müsste?

von turni (Gast)


Lesenswert?

Der Hook wird nur aufgerufen, wenn configCHECK_FOR_STACK_OVERFLOW den 
Wert 2 aufweist.

von Moritz M. (moritz_m72)


Lesenswert?

Hallo,

ja hab ich auch so eingestellt. Welche Register muss man sich den 
ansehen?

Moritz

von Moritz M. (moritz_m72)


Lesenswert?

Hallo,

war wirklich ein Stackoverflow.

Moritz

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.