Hallo zusammen Ich bin dabei, meine Software von Keil RLARM nach FreeRTOS zu portieren. Ich habe einen STM32F1 mit einem kleinen und schnellen internen RAM (64k) sowie einem etwas langsameren, grossen externen RAM (per FSMC). Bei Keil konnte ich für jeden Task neben der Stackgrösse auch den Speicherort des Stacks angeben (per Übergabe eines Pointers). Dies war wichtig, da ich für alles Stacks im internen RAM zuwenig Speicher habe, jedoch für einige Task das externe RAM zu langsam ist (häufiger Taskwechsel). Aktuell bin ich immer noch am portieren und habe deswegen noch keinen lauffähigen Code. Ich habe jedoch bereits jetzt ein Augenmerk auf den FreeRTOS Memorymanager heap_3.c geworfen. Da könnte ich bei pvPortMalloc() feststellen, aus welchem Task die Funktion aufgerufen wurde und entsprechend Speicher aus dem internen oder externen RAM bereitstellen. Ich bin mir jedoch nicht sicher, ob dies die optimale Lösung wäre. heap_4.c bietet mir die Möglichkeit, sowohl Speicher im internen wie auch im externen RAM bereit zu stellen. Da ich aber keinen Einfluss nehmen kann, welcher Teil welchem Task zugesprochen wird ist dies für meinen Fall nicht brauchbar. Habe ich bei FreeRTOS beim Erstellen eines Tasks die Möglichkeit, neben der Stackgrösse auch den Speicherort des Stacks anzugeben? Auf der Homepage habe ich keine verwendbaren Informationen gefunden. Die Funktion xTaskGenericCreate() könnte vieleicht die Lösung sein, doch ich finde keine Beschreibung zu dieser Funktion, selbst das FreeRTOS Manual schweigt sich aus.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.