Lab5

background image

Architektura komputerów i systemy operacyjne

Autor:

Marek Sawicki

Ostatnia aktualizacja:

17.05.2016r.

Wersja:

1.0

Instrukcja laboratoryjna

Spotkanie 5

System operacyjny FreeRTOS

background image

Architektura komputerów i systemy operacyjne

Wersja 1.0

Strona 2

Spis treści

Wprowadzenie

....................................................................................................................................................... 3

1.

1.1.

Cel ćwiczenia ................................................................................................................................................ 3

1.2.

Wymagania:

.................................................................................................................................................. 3

Zadania do wykonania

........................................................................................................................................... 4

2.

2.1.

Utworzenie projektu, uruchomienie dwóch niezależnych zadań – 2pkt.

...................................................... 4

2.2.

Przekazywanie parametru do zadań – 2pkt. ................................................................................................. 4

2.3.

Synchronizacja zadań – 3pkt. ...................................................................................................................... 4

background image

Architektura komputerów i systemy operacyjne

Wersja 1.0

Strona 3

Wprowadzenie

1.

Systemy operacyjne w technologii tworzenia oprogramowania służą do umożliwienia

równoległej pracy wielu niezależnym od siebie programom. Dodatkowo uniezależniają
w pewnym stopniu warstwę oprogramowania od sprzętu. Podstawową funkcja systemu
operacyjnego jest przydzielanie zasobów (najczęściej czasu mikrokontrolera) dla
poszczególnych uruchomionych zadań (aplikacji). Jeżeli architektura sprzętowa zawiera jeden
rdzeń procesora to naturalnie możliwe jest w danej chwili wykonywanie tylko jednego
z programów (zadań). System operacyjny szybko przydziela czas dla poszczególnych zadań
wstrzymując jednocześnie pracą pozostałych. Przełączanie to odbywa się z reguły
kilkadziesiąt lub kilkaset razy na sekundę, co sprawia wrażenie, że programy wykonują się
jednocześnie.

W każdym systemie operacyjnym ograniczeniem liczby jednocześnie uruchomionych

zadań jest dostępność zasobów sprzętowych. Głównie dotyczy to ilości dostępnej pamięci
operacyjnej (RAM). Nie oznacza to jednak, że uruchomione zadania będą się zawsze
wykonywały w przewidzianych przez programistę rygorach czasowych. System operacyjny
FreeRTOS, jest systemem umożliwiającym realizację zadań w czasie rzeczywistym. Zawiera
mechanizmy pozwalające na priorytetowanie zadań oraz pomija w kolejce zadania które
aktualnie nie mają nic do zrobienia (np. czekają na zdarzenie). System ten nie zawiera
żadnych mechanizmów ochrony pamięci ani zasobów i pozwala pracować programom
bezpośrednio na zasobach sprzętowych. Nie wirtualizuje dostępu do zasobów przez co jego
zastosowanie powoduje spadek wydajności przetwarzania jedynie w minimalnym stopniu.

Sam system operacyjny zawiera się w 3 plikach i jest otwarto źródłowy. Wymaga

dostarczenia funkcji (sterowników) alokacji pamięci oraz obsługi przerwań przełączających
zadania. Wymagane funkcje są napisane w języku C/asm na większość obecnych na rynku
architektur i rodzin mikrokontrolerów. W źródłach dostępnych na stronie freertos.org można
znaleźć sterowniki dla procesorów rodziny: AVR, PIC, SAM7, LPC4000, STM32 i innych.
Dostępne są również implementacje na procesory w układach programowalnych Cyclone oraz
Zynq. Sposób organizacji kodu i dostęp do źródeł pozwala samodzielnie napisać potrzebne
funkcje na praktycznie każdą inną architekturę.

1.1. Cel ćwiczenia

Celem laboratorium jest zapoznanie się z systemem czasu rzeczywistego FreeRTOS oraz

metodologią projektowania oprogramowania wielowątkowego.

1.2. Wymagania:

Umiejętność pisania programów w języku C.

Znajomość metod formatowania tekstu (sprintf).

Znajomość elementów systemu operacyjnego: zadanie, kolejka, semafor

Metody sterowania zadaniami w systemie freeRTOS (freertos.org)

background image

Architektura komputerów i systemy operacyjne

Wersja 1.0

Strona 4

Zadania do wykonania

2.

Do wykonania zadań należy utworzyć nowy projekt na mikrokontroler zamontowany

w zestawie uruchomieniowym oraz dołączyć do niego skompilowaną i przygotowaną przez
prowadzącego bibliotekę evbLib.lib. Biblioteka ta zawiera w sobie plik startup, dlatego nie
należy samodzielnie dołączać go do drzewa projektu. Ponadto należy dołączyć pliki systemu
FreeRTOS: tasks.c, queue.c, list.c. Dodatkowo z katalogu CM3 dołączyć plik port.c a z katalogu
MemMag – heap3.c. Utworzyć plik z pusta funkcją main. Skomplikować projekt. Jeżeli
kompilator nie może dołączyć plików nagłówkowych należy dodać odpowiednie ścieżki
(zakładka C/C++ w opcjach projektu).

2.1. Utworzenie projektu, uruchomienie dwóch niezależnych zadań – 2pkt.

1) W funkcji main napisać kod programu powodujący migotanie diody D1. Projekt

skompilować i uruchomić na zestawie ZL27ARM.

2) Skopiować funkcję main dwukrotnie, zmieniając jej nazwę na task1 oraz task2.

Zmienić w nich kod tak aby sterowały diodami D1 oraz D2. Nowe funkcje powinny
przyjmować jako parametr wskaźnik nieokreślonego typu (void *).

void task1(void *param);

3) W funkcji main wywołać funkcje tworzącą zadania w systemie RTOS a następnie

funkcję uruchamiającą jądro system (planistę).

xTaskCreate(task1,"Zadanie 1",configMINIMAL_STACK_SIZE,NULL,tskIDLE_PRIORITY,NULL);
vTaskStartScheduler();

4) Skompilować projekt i uruchomić na zestawie ZL27ARM. Porównać działanie

programu gdy uruchomione jest jedno zadanie oraz dwa. Zmienić priorytet jednego z
zadań. Dlaczego nie wszystkie zadania wykonują się w czasie rzeczywistym?

2.2. Przekazywanie parametru do zadań – 2pkt.

1) Utworzyć osiem zadań, po jednym dla każdej diody LED przy pomocy pętli. Do funkcji

xTaskCreate każdego z zadań jako wskaźnik na funkcję przekazać task1.

2) Zmodyfikować kod zadania task1 tak aby sterował diodą której numer otrzymał

w parametrze.

2.3. Synchronizacja zadań – 3pkt.

1) Napisać i uruchomić zadanie powodujące pojawianie się i znikanie imienia jednej

z osób w zespole w górnej linii LCD.

2) Napisać i oddzielnie uruchomić zadanie powodujące pojawianie się i znikanie imienia

drugiej z osób w zespole w dolnej linii LCD.

3) Uruchomić obydwa zadania jednocześnie. Przy pomocy zmiennej globalne (1 pkt) lub

semafora (3pkt) zabezpieczyć rywalizację o dostęp do wyświetlacza LCD.


Document Outline


Wyszukiwarka

Podobne podstrony:
lab5 prezentacja
C lab5
lab5 Proxy
ZG lab5 6 id 589867 Nieznany
ZwUE lab5
Lab5 Analiza sygnalu mowy Lab5 Nieznany
Podstawy Robotyki lab5
Architekrura SystemAlw Lab5 (1) Nieznany
Lab5
Lab5, poch1
lab5
SI2 lab5 raport
[LAB5]Tutorial do kartkówki
pme lab5
Lab5 Modelowanie dynamiki id 25 Nieznany
Lab5 OZE id 259971 Nieznany
Lab5 7 id 259904 Nieznany
lab5
Lab5 KWW TOPCAM

więcej podobnych podstron