Zadania wykonywane w czasie laboratorium należy dokumentować w postaci zdjęć przedstawiających postępy prac.
Zakres laboratorium:
- zapoznanie się z systemem czasu rzeczywistego FreeRTOS, – konfiguracja a STM32IDE: link
- uruchomienie programu z dwoma zadaniami w systemie FreeRTOS,
- utworzenie nowych wątków z różnymi priorytetami, zapoznanie się z ustawieniem priorytetów
- synchronizacja pracy pomiędzy wątkami, wykorzystanie semaforów (wikipedia)
- zapoznać się z dokumentacją FreeRTOS (semafory binarne, semafory zliczające, funkcje)
Zadanie 1
- skonfigurować projekt na zestawie sprzętowym zawierający system FreeRTOS
- zmienić konfigurację zegara “Timebase Source” na TIM16 – po co taka zmiana?
- dodać obsługę I2C i podłączyć wyświetlacz LCD (SDA – D4, SCL-D5)
- stworzyć dwa wątki (dodać wątki za pomocą konfiguratora projektu STM32):
- 1 wątek – miga diodą LED z częstotliwością 1Hz
- 2 wątek – wyświetla na wyświetlaczu LCD napis: “Hello World: xxx” – gdzie xxx to sekundy od uruchomienia wątku – odświeżanie LCD co 1 sekundę
Biblioteka LCD- LAB 1
Zadanie 2
- skasować poprzedni wątek LCD i utworzyć taki sam wątek samodzielnie z wykorzystaniem funkcji “xTaskCreate”
- skasować wątek 1 i utworzyć taki sam jak wyżej
- dodać obsługę USART2
- zainstalować terminal: sudo apt-get install cutecom
- uruchomić terminal na odpowiednim porcie
- zapoznać się z argumentami tworzenie wątków, do czego służą
- utworzyć 3 i 4 wątek za pomocą “xTaskCreate”
- wątki 3 i 4 niech wysyłają na terminal komunikat: “Wątek 3: xxx” – gdzie xxx to sekundy od uruchomienia wątku – odświeżanie LCD co 1 sekundę
- jak wygląda kolejność wysyłanych komunikatów, czy zawsze jest taka sama?
Zadanie 3 – semafory
- wyłączyć wątek 3, zmniejszyć czas opóźnienia w wątku 2 na 250ms
- dodać semafor binarny “xSemaphoreCreateBinary“
- jak działa teraz program?
- wykorzystać semafor binarny aby wątek 2 był zablokowany, oczekiwał na semafor ustawiany przez wątek 1
- jak działa teraz program?
Zadanie 4
- uruchomić wątek 3,zmienić jego opóźnienie na 100ms,
- jak działa teraz program?
- dodać semafor binarny aby wątek 3 był zablokowany, oczekiwał na semafor ustawiony przez wątek 2
- jak działa teraz program?
- narysować diagram jak teraz zależą wątki od blokad zrobionych przez semafory
Zadanie 5 – semafor zliczający
- skasować poprzednie wątki,
- utworzyć 4 nowe wątki, wysyłające napisy na terminal: “Wątek 1: xxx”, “Wątek 2: xxx”, “Wątek 3: xxx”, “Wątek 4: xxx”,
- wątek 1 wykonuje się co 1sekunde, pozostałe wątki co 5 sekund,
- utworzyć semafor zliczający “xSemaphoreCreateCounting ” – co to jest za semafor?
- ustawić wątek 1 aby oczekiwało na semafor zliczający,
- ustawić w wątkach 2-4 funkcję ustawiającą semafor zliczający,
- jak działa teraz program?
- problem pakowania paczek-wiele osób pakuje zamówienia a jedna je wysyła – które zadania będą kim?