Strona projektu FreeRTOS: link

Dokumentacja FreeRTOS: link

 

Zakres laboratorium:
  • zapoznanie z FreeRTOS
  • tworzenie zadań
  • priorytety zadań, przełączanie zadań
  • programowe funkcje czasowe – “software timers”
1. FreeRTOS – zapoznanie, konfiguracja
  • skonfigurować projekt na zestawie sprzętowym zawierający system FreeRTOS
  • jakie są możliwości konfiguracji za pomocą kreatora?
  • poprawić konfigurację tak aby nie były wyświetlane błędy i ostrzeżenia przez generator projektu
  • zapoznać się ze strukturą programu, jakie pliki zostały dodane, gdzie należy pisać kod użytkownika?
  • stworzyć wątki (dodać wątki za pomocą konfiguratora projektu STM32):
    • 1 wątek – miga diodą LED_1 z częstotliwością 1Hz
    • 2 wątek – miga diodą LED_2 z częstotliwością 2Hz
    • 3 wątek – wysyła co 1 sekundę na terminal napis “Hello world: 1”, po kolejnej sekundzie “Hello world: 2 itd.
    • 4 wątek – obsługa przycisku “B_1”, jak przycisk jest naciśnięty to powoduje to włączenie diody led “LED_8”, przycisk puszczony-dioda wyłączona
  • jak działa taki program? co nam daje zastosowanie systemu czasu rzeczywistego?
  • dlaczego należy używać opóźnienia “vTaskDelay()” a nie “HAL_Delay()”?
2. Priorytety zadań, przełączanie pomiędzy zadaniami

Zasada działania systemu czasu rzeczywistego: link

  • zapoznać się ze strukturą działania programu
  • co to są priorytety zadań?
  • kiedy dochodzi do zagłodzenia zadania? co to jest zagłodzenie w systemach czasu rzeczywistego?

Zadanie 1:

  • doprowadzić do zagłodzenia (zablokować jeden wątek), jak objawia się taka sytuacja?
  • ustawić różne priorytety wątków, jak teraz reaguje program na zakleszczenie?
  • narysować schemat działania programu dla różnych przypadków:
    • takie same priorytety zadań
    • różne priorytety zadań
    • zablokowany jeden wątek i takie same priorytety zadań
    • zablokowany jeden wątek i
    • różne priorytety zadań