Etkileşimli STM32 FreeRTOS ve Gorev Zamanlama

İçindekiler

Etkileşimli STM32 FreeRTOS ve Gorev Zamanlama#

STM32 / Ders 9

Bu laboratuvar, FreeRTOS'u yalnizca `xTaskCreate` ve `vTaskDelay` isimlerinden ibaret degil; `task`, `priority`, `queue`, `blocking` ve `busy wait` davranislarinin sistem uzerindeki gercek etkisi olarak gorunur kilar. Burada amac, scheduler'in neden bazen akici, bazen de kaotik gorundugunu zaman cizelgesi uzerinden sezgisel olarak kavratmaktir.

Ne Yap Sensor task bicimini, task onceliklerini, queue boyutunu, sensor periyodunu ve is suresini degistir; ardindan scheduler zaman cizelgesini incele.
Ne Ogren `blocked task`, `ready task`, `priority`, `xQueueReceive`, `vTaskDelayUntil` ve `busy polling` farkini ayni scheduler akisinda gor.
Gorev Once dengeli bir ayar kur. Sonra sensor task'i busy wait'e cevir ve queue tasmasi ile starvation etkisini kendi gozunle gor.
RTOS, kotu tasarlanmis gorevleri sihirli bicimde duzeltmez. Yanlis oncelik, busy wait ya da kucuk queue secimi scheduler'i hizla zorlayabilir.

Bu Derste Ne Oturmali?#

  1. vTaskDelayUntil, periyodik task’in CPU’yu bos yere yakmadan belirli araliklarla calismasini saglar.

  2. xQueueReceive(..., portMAX_DELAY), tuketici task’i veri gelene kadar bloklar; bu, gereksiz polling yerine daha dogal bir RTOS desenidir.

  3. busy wait, yuksek oncelikli bir task icinde yapildiginda diger task’leri kolayca ac birakabilir.

  4. queue boyutu, veri kaybi ile gecikme arasinda bir tampon gorevi gorur; kucuk queue tasmaya, cok buyuk queue ise gecikmenin gizlenmesine yol acabilir.

Not

Bu laboratuvarin devaminda mutex / priority inheritance, tickless idle + RTC, event groups + software timers ya da RTOS + DMA entegrasyonu iyi calisir.