W14: Wbudowane systemy czasu rzeczywistego i podstawy

Transkrypt

W14: Wbudowane systemy czasu rzeczywistego i podstawy
Wbudowane systemy
czasu rzeczywistego
Wykład 14
Techniki mikroprocesorowe
Systemy operacyjne czasu rzeczywistego
• System czasu rzeczywistego (RTOS) to system
operacyjny opracowany tak, by spełnić
wymagania narzucone na czas wykonywania
zadanych operacji
• Systemy RTOS dzielą się na twarde i miękkie
2
Techniki mikroprocesorowe
Twarde systemy RTOS
• Są to systemy RTOS, dla których znane są
maksymalne, czyli najgorsze, czasy reakcji
(odpowiedzi) oraz gwarantujące, że czas ten
nie zostanie przekroczony w żadnych
okolicznościach
• Zastosowania: wszelkiego typu urządzenia, w
których opóźnienie w obsłudze zdarzenia
może doprowadzić do strat materialnych lub
zagrożenia dla życia i zdrowia
3
Techniki mikroprocesorowe
Miękkie systemy RTOS
• Miękkie systemy czasu rzeczywistego, w
odróżnieniu od systemów twardych, nie mają
określonego maksymalnego czasu odpowiedzi,
ale gwarantują wykonanie zadania w możliwie
krótkim czasie
• Zastosowania: urządzenia, w których
minimalizacja czasu reakcji i odpowiedzi wpływa
pozytywnie na działanie, ale niespełnienie tego
wymogu nie niesie ryzyka, np. systemy
multimedialne
4
Techniki mikroprocesorowe
Miękkie systemy RTOS
•
•
•
•
•
•
•
•
•
ChibiOS/RT
DioneOS
FlexOS
uCRTOS
MicroC/OS-II
eCOS
QNX
OS9
VxWorks
•
•
•
•
•
•
•
•
•
LynxOS
Phoenix-RTOS
iRMX
RT-Linux
RTKernel
DRYOS
Windows CE
SCIOPTA
Sirius RTOS
5
Techniki mikroprocesorowe
Prosty system RTOS dla mikrokontrolerów
• System RTOS przewidziany do działania w
urządzeniu opartym na mikrokontrolerze
jednoukładowym, musi spełniać szereg
warunków
– Zapewniać niezbędne czasy odpowiedzi w
określonych sytuacjach
– Działać stabilnie i płynnie w środowisku o bardzo
ograniczonych zasobach
– Wykorzystywać specyfikę architektury urządzenia,
na którym działa
6
Techniki mikroprocesorowe
Prosty system RTOS dla mikrokontrolerów
• Zapewniać niezbędne czasy odpowiedzi w
określonych sytuacjach, to znaczy
– Wykonywać określone zadania w czasie krótszym
niż dopuszczalny czas przewidziany na te zadania ,
to jest gwarantującym poprawne działanie
urządzenia i eliminującym ryzyko takich anomalii
jak utrata danych, przyjęcie przez urządzenie
niedozwolonego stanu lub jego uszkodzenie
7
Techniki mikroprocesorowe
Prosty system RTOS dla mikrokontrolerów
• Działać stabilnie i płynnie w środowisku o bardzo
ograniczonych zasobach, czyli m.in.
– Nie dopuszczać do przekroczenia przez zadanie
dostępnego przewidzianego (dostępnego) czasu
procesora, tak by powodować opóźnień w
wykonywaniu innych danych, mogących spowodować
brak reakcji na zdarzenie lub utratę danych
– Zarządzać dostępną pamięcią RAM w sposób
uniemożliwiający jej przepełnienie, a tym samym
awarię systemu
8
Techniki mikroprocesorowe
Prosty system RTOS dla mikrokontrolerów
• Wykorzystywać specyfikę architektury
urządzenia, na którym działa, czyli m.in.
– Wykorzystywać obecność mechanizmów
sprzętowych umożliwiających poprawienie
działania, zmniejszenie obciążenia i zwiększenie
stabilności
– Uwzględniać braki i ograniczenia mechanizmów
sprzętowych, wykorzystywanych powszechnie na
innych platformach do wykonywania określonych
zadań
9
Techniki mikroprocesorowe
Projektowanie prostego RTOS
• Jakie są zadania, które są wykonywane przez
cały czas (np. obsługa interfejsu użytkownika)?
• Ile zasobów zajmują te zadania?
• Jakie zadania (obsługa zdarzeń) pojawiają się
okresowo/losowo?
• Ile maksymalnie razy w jednostce czasu może
pojawić się każde z tych zadań?
• Ile zasobów zajmie obsługa pojedynczej
instancji każdego takiego zadania?
10
Techniki mikroprocesorowe
Projektowanie prostego RTOS
• Jakie są priorytety tych zadań?
• Czy terminowe wykonie któregoś z nich jest
istotniejsze dla poprawnego działania
urządzenia niż pozostałych?
• Czy niewykonanie zadania określonego typu
może doprowadzić do niedopuszczalnych
anomalii w działaniu urządzenia?
11
Techniki mikroprocesorowe
Asynchroniczność w prostych RTOS
• Większość prostych mikrokontrolerów
jednoukładowych nie umożliwia/umożliwia w
bardzo ograniczonym stopniu implementację
podziału czasu, wieloprogramowości i
podobnych mechanizmów znanych z
„pełnowartościowych” platform
• Istnieje jednak możliwość zapewnienia w
pewnym zakresie asynchroniczności
wykonywanych zadań
12
Techniki mikroprocesorowe
Asynchroniczność na przykładzie AVR
• Najprostszym sposobem zapewnienia namiastki
wieloprogramowości w mikrokontrolerach AVR
jest wykorzystanie przerwań:
– Pochodzenia wewnętrznego, zgłaszanych np. przez
timery przy przepełnieniu lub zgodności
– Pochodzenia zewnętrznego, zgłaszanych przez moduły
komunikacyjne lub porty INTx lub PCIx
• Można też zrealizować podział czasu w pętli
głównej
13
Techniki mikroprocesorowe
Wykorzystanie przerwań
• Przerwania pozwalają na szybką obsługę
zdarzenia
• Przerwania zapewniają wywłaszczanie
zrealizowane sprzętowo, zgodnie tabelą
priorytetów przerwań
• Nie ma dwóch przerwań o tym samym
priorytecie
• Priorytety przerwań nie mogą zostać
zmienione
14
Techniki mikroprocesorowe
Wykorzystanie przerwań
• W przypadku wykorzystania przerwań istnieje
ryzyko wystąpienia następujących anomalii:
– Ryzyko głodzenia programu z pętli głównej, polegające
na zawieszaniu jego wykonywania, a w skrajnym
wypadku, na całkowitym jego zatrzymaniu
– Ryzyko zablokowania obsługi przerwań o niższym
priorytecie: co prawda przerwania te zostaną
obsłużone po zakończeniu obsługi przerwania o
wyższym priorytecie, ale zostaną obsłużone tylko raz
bez względu na liczbę ich wystąpień w momencie
blokady
15
Techniki mikroprocesorowe
Wykorzystanie przerwań
• W przypadku wykorzystania przerwań istnieje
ryzyko wystąpienia następujących anomalii:
– Ryzyko pominięcia wystąpień danego przerwania
w trakcie jego obsługi spowodowane zbyt częstym
jego zgłaszaniem lub zbyt długim czasem obsługi
16
Techniki mikroprocesorowe
Wykorzystanie pętli głównej
• Pętla główna może zostać wykorzystana do
realizacji wielozadaniowości
– Bez wywłaszczania – zadania muszą być
wystarczająco krótkie lub muszą samodzielnie
zwalniać procesor po wykorzystaniu określonego
czasu
– Z wywłaszczaniem, trudne w implementacji, brak
wsparcia sprzętowego
17
Techniki mikroprocesorowe
FreeRTOS
FreeRTOS
18
Techniki mikroprocesorowe
FreeRTOS
• FreeRTOS jest systemem czasu rzeczywistego
przeznaczonym dla urządzeń wbudowanych o
dużych ograniczeniach na ilość posiadanych
zasobów, przede wszystkim pamięci RAM
• Ze względu na swoją niezawodność i
stabilność jest powszechnie wykorzystywany w
rozwiązaniach przemysłowych
19
Techniki mikroprocesorowe
FreeRTOS
• FreeRTOS oferowany jest na zmodyfikowanej
licencji GNU, umożliwiającej komercyjną
dystrybucję gotowego oprogramowania bez
udostępniania kodu źródłowego
• Podobnie jak inne systemy dla platform o
ograniczonych zasobach, FreeRTOS jest
kompilowany razem z obsługiwanymi
aplikacjami
20
Techniki mikroprocesorowe
FreeRTOS
• FreeRTOS nie oferuje
– Wsparcia dla mechanizmu sterowników urządzeń
– Zaawansowanego zarządzania pamięcią
– Zaawansowanych algorytmów pracy schedulera
– Obsługi sieci (obsługa sieci może być zrealizowana
za pomocą bibliotek trzecich)
– Obsługi kont użytkowników w jakiejkolwiek
postaci
21
Techniki mikroprocesorowe
FreeRTOS
• FreeRTOS oferuje
– Scheduler nadzorujący wykonywania zadań
– Mechanizmy kolejkowania, umożliwiające obsługę
przerwań
– Semafory i mutexy, umożliwiające kontrolę
dostępu do zasobów
22
Techniki mikroprocesorowe
FreeRTOS
• Jedyne mechanizmy zależne od platformy
obsługiwane przez system to układy licznikowe i
ewentualne przerwania softwarowe (o ile dana
platforma je udostępnia)
• Warstwa abstrakcji dla Pozostałych układów
peryferyjnych mikrokontrolera nie jest
nadzorowana przez system, dzięki czemu
ograniczone zostaje zużycie zasobów na obsługę
komunikacji między warstwą obsługi sprzętu i
warstwą aplikacji
23
Techniki mikroprocesorowe
FreeRTOS
24
Techniki mikroprocesorowe
Wybrane platformy
• Atmel
– AVR, AVR32
– SAM3, SAM4, SAM7,
SAM9, SAM D20, SAM L21
• ARM
– ARM7, ARM9, ARM CortexM0, ARM Cortex-M0+,
ARM Cortex-M3, ARM
Cortex-M4, ARM Cortex-A
• Intel
• IBM
– PPC405, PPC404
• PIC
– PIC18, PIC24, dsPIC, PIC32
• NXP
– LPC1000, LPC2000,
LPC4300
• STMicroelectronics
– STM32, STR7
– X86, 8052
25
Techniki mikroprocesorowe
Wybrane elementy FreeRTOS
•
•
•
•
Scheduler
Zadania
Kolejki
Semafory i mutexy
26
Techniki mikroprocesorowe
Scheduler
• Scheduler (wywłaszczający lub
niewywłaszczający) systemu odpowiada za
kontrolę wykonywania zadań i zarządza
przydziałem czasu procesora
• Podstawową jednostką czasu jest tick,
wynoszący zwykle 1-10ms
• Scheduler systemu FreeRTOS obsługuje
priorytety zadań
27
Techniki mikroprocesorowe
Scheduler
• Operacje na zadaniu wpierane przez scheduler
– Utworzenie i usunięcie
– Zawieszenie i wznawianie
– Opóźnienie wykonywania
28
Techniki mikroprocesorowe
Zadania
• Zadania są podstawową strukturą FreeRTOS
• Są to zazwyczaj funkcje zawierające
nieskończone pętle programowe
• Wykonywanie zadań jest nadzorowane przez
scheduler
• Każde zadanie posiada swój własny stos,
priorytet oraz opcjonalnie handler
29
Techniki mikroprocesorowe
Zadania
• Elementy zadania
– Stos – obszar pamięci przechowujący aktualny
stan zadania, jego rozmiar musi być
zadeklarowany dla każdego zadania osobno
– Priorytet – liczba naturalna decydująca o czasie
procesora, który zostanie przyznany zadaniu i po
przekroczeniu którego zadanie zostanie
wywłaszczone przez scheduler
– Handler – obiekt reprezentujący zadanie, pozwala
na zarządzanie zadaniem przez inne zadanie
30
Techniki mikroprocesorowe
Tworzenie zadania
portBASE_TYPE xTaskCreate(
pdTASK_CODE pvTaskCode,
const portCHAR * const pcName,
unsigned portSHORT usStackDepth,
void *pvParameters,
unsigned portBASE_TYPE uxPriority,
xTaskHandle *pvCreatedTask
);
31
Techniki mikroprocesorowe
Tworzenie zadania
pvTaskCode – wskaźnik do funkcji stanowiącej
zadanie
pcName – nazwa zadania (opcjonalna)
usStackDepth – wielkość stosu
pvParameters – opcjonalne parametry, które
zostaną przekazane do kodu zadania
uxPriority – priorytet zadania
pvCreatedTask – opcjonalny wskaźnik do handlera
32
Techniki mikroprocesorowe
Kolejki
• Kolejki są podstawowym mechanizmem
umożliwiającym wymianę danych między
zadaniami
33
Techniki mikroprocesorowe
Tworzenie kolejki
xQueueHandle xQueueCreate(
unsigned portBASE_TYPE uxQueueLength,
unsigned portBASE_TYPE uxItemSize
);
uxQueueLength – długość kolejki
uxItemSize – wielkość pojedynczego obiektu
34
Techniki mikroprocesorowe
Wysyłanie komunikatu
portBASE_TYPE xQueueSend(
xQueueHandle xQueue,
const void * pvItemToQueue,
portTickType xTicksToWait
);
xQueue – kolejka
pvItemToQueue – element do wysłania
xTicksToWait – maksymalny czas oczekiwania na
umieszczenie zadania w kolejce
35
Techniki mikroprocesorowe
Odbieranie komunikatu
portBASE_TYPE xQueueReceive(
xQueueHandle xQueue,
void *pvBuffer,
portTickType xTicksToWait
);
xQueue – kolejka
pvBuffer – bufor, w którym zostanie umieszczony
odebrany element
xTicksToWait – maksymalny czas oczekiwania na
pojawienie się elementu gotowego do odbioru
36
Techniki mikroprocesorowe
Kolejki i przerwania
• FreeRTOS dostarcza funkcje do obsługi kolejek,
które mogą być bezpiecznie używane w funkcji
obsługującej przerwanie, nie blokując
działania funkcji
– xQueueSendFromISR
– xQueueReceiveFromISR
37
Techniki mikroprocesorowe
Semafory
• Semafory umożliwiają synchronizację
wykonywanych zadań
• Semafory udostępniane przez system
FreeRTOS mają właściwości analogiczne jak
semafory w innych systemach
38
Techniki mikroprocesorowe
Tworzenie semafora
vSemaphoreCreateBinary(
xSemaphoreHandle xSemaphore
);
xSemaphore – handler semafora
39
Techniki mikroprocesorowe
Ustawianie semafora
xSemaphoreTake(
xSemaphoreHandle xSemaphore,
portTickType xBlockTime
);
xSemaphore – handler semafora, który ma zostać
ustawiony
xBlockTime – maksymalny czas liczony w tickach
schedulera przewidziany na ustawienie semafora
40
Techniki mikroprocesorowe
Zwolnienie semafora
xSemaphoreGive(
xSemaphoreHandle xSemaphore
);
xSemaphore – handler semafora
przewidzianego do zwolnienia
41
Techniki mikroprocesorowe
Semafory i przerwania
• Funkcja zwalniająca semafor posiada swój
odpowiednik wykorzystywany wewnątrz
funkcji obsługujących przerwania
– xSemaphoreGiveFromISR
42
Techniki mikroprocesorowe
Komponenty trzecie
• uIP– stos TCP/IP na licencji opensource,
obecnie część systemu Contiki
https://github.com/adamdunkels/uip
• lwIP – inny otwartoźródłowy stos IP,
wspierający takie protokoły jak IP, ICMP, IGMP,
UDP, TCP, DNS, SNMP, DHCP itp.
http://savannah.nongnu.org/projects/lwip/
43
Techniki mikroprocesorowe
Komponenty trzecie
• wolfSSL – biblioteka na licencji GPL
dostarczająca wsparcia dla SSL/TLS dla
platform wbudowanych
http://www.wolfssl.com/wolfSSL/Productswolfssl.html
• FatFs – otwartoźródłowa biblioteka
zapewniająca wsparcie dla systemów plików
Fat12/Fat16/Fat32 (zapis i odczyt)
http://elm-chan.org/fsw/ff/00index_e.html
44
Techniki mikroprocesorowe
Komponenty trzecie
• u8glib – biblioteka na licencji BSD
umożliwiająca tworzenie interfejsów
graficznych na platformach wbudowanych
https://code.google.com/p/u8glib/
• M2tklib – biblioteka graficzna na licencji GPL
dla platform wbudowanych
http://code.google.com/p/m2tklib/
45
Techniki mikroprocesorowe
Inne systemy RTOS
Inne systemy RTOS
46
Techniki mikroprocesorowe
OpenRTOS
• Zmodyfikowana licencja FreeRTOS, której
jeden z zapisów mówi, że kod systemu
FreeRTOS użytego w komercyjnym projekcie
musi być udostępniony (nie dotyczy do kodu
nie będącego częścią dystrybucji FreeRTOS),
może powodować trudności z wykorzystaniem
go w projekcie o zamkniętych źródłach,
zwłaszcza w sytuacji, gdy kod jakiegoś
komponentu systemu został zmodyfikowany
47
Techniki mikroprocesorowe
OpenRTOS
• Projekt OpenRTOS firmy WITTENSTEIN High
Integrity Systems bazuje na kodzie źródłowym
FreeRTOS, ale jest wydawany na całkowicie
komercyjnej licencji, umożliwiającej pełne
zamknięcie kodu
• OpenRTOS posiada ponadto pełny support
48
Techniki mikroprocesorowe
SafeRTOS
• SafeRTOS jest systemem bazującym na FreeRTOS ,
rozwijanym przez firmę WITTENSTEIN High
Integrity Systems podobnie jak OpenRTOS
• SafeRTOS przeszedł proces certyfikacji
potwierdzającej, że specyfikacja systemu jest
zgodna ze stanem rzeczywistym
• Firma WITTENSTEIN High Integrity Systems
umożliwia również certyfikację gotowych
rozwiązań opartych o SafeRTOS
49
Techniki mikroprocesorowe
SafeRTOS
• SafeRTOS posiada certyfikaty spełniania norm
umożliwiające stosowanie go w następujących
gałęziach przemysłu
–
–
–
–
–
–
–
Industrial (UL 1998, IEC 61508)
Transportation/Rail (CENELEC EN 50128, IEC 61508)
Medical (FDA 510(k), IEC 62304, IEC 60601, ISO 14971)
Nuclear (IEC 61513, IEC 62138, ASME NQA-1 2008)
Process (IEC 61511)
Automotive (ISO 26262, IEC 61508)
Aerospace (DO178B)
50
Techniki mikroprocesorowe

Podobne dokumenty