Forum: Mikrocontroller und Digitale Elektronik freeRTOS und RAM


von stp (Gast)


Lesenswert?

Hallo zusammen

Ich habe eine Frage bezüglich der Speicherbelegung und freeRTOS.
Für den Task 'T1' wie unten im Beispiel gezeigt wird wird Speicher auf 
den RAM reserviert. Ich habe 800 Byte eingestellt. Wird nun die Variable 
innerhalb dieser 800 Byte gespeichert oder wird diese ausserhalb dieser 
800 Byte, sonst wo auf dem RAM gespeichert? Muss ich um Speicher 
'innerhalb' dieser 800 Byte zu erhalten mit malloc() Speicher 
reservieren?

Ich verwende eine Freescale KL25Z128 MCU (M0+).
1
static portTASK_FUNCTION(T1, pvParameters) {
2
    for(;;) {
3
        uint32_t i = 0;
4
        //do something with i....
5
6
        FRTOS1_vTaskDelay(1000/RTOS_TICKRATE_MS);
7
    }
8
}

Vielen Dank für Hinweise!
mfg, stp

von Marius W. (mw1987)


Lesenswert?

Die variable i wird als lokale Variable auf dem Stack angelegt. Der 
Stack ist für jeden Task individuell und das werden vermutlich deine 800 
byte sein. Also ja: Die Variable liegt in den 800 byte.

Gruß
Marius

von stp (Gast)


Lesenswert?

Hallo Marius

Vielen Dank für die schnelle Antwort! Ja das denke ich auch, war mir 
aber irgendwie nicht mehr sicher und wollte mal nachfragen ;-)

mfg, stp

von Andreas R. (andreasr)


Lesenswert?

Denk bitte daran, dass bei FreeRTOS wird die Stackgröße in der Einheit 
CPU-Breite angegeben wird; beim ARM also sizeof(uint32_t) = 4.

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.