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.cqueue.clist.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