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ń