Wykład 9:
Systemy operacyjne czasu rzeczywistego
Mariusz Chilmon
m.chilmon@amw.gdynia.pl
uc.vmario.org
Zadania systemu operacyjnego
Zadania OS
przydział czasu procesora zadaniom
przydział pamięci operacyjnej zadaniom
dostarczanie mechanizmów komunikacji i synchronizacji zadań
obsługa sprzętu
zestawianie połączeń sieciowych
★
zarządzanie plikami
★
Kernel
pełny dostęp do pamięci fizycznej
zarządza pamięcią wirtualną
pełny dostęp do zasobów sprzętowych
pełny dostęp do przerwań sprzętowych
zarządza pracą programów przestrzeni użytkownika (scheduler, przydział pamięci)
udostępnia sterowniki urządzeń, systemy plików, stosy protokołów sieciowych itp.
Programy w przestrzeni użytkownika
ograniczony dostęp do pamięci
brak bezpośredniego dostępu do sprzętu
podlegają schedulerowi
mogą na nie zostać nałożone ograniczenia (czas procesora, zużycie pamięci, liczba otwartych plików)
MMU
(Memory Management Unit)
tłumaczy adresy wirtualne na fizyczne za pomocą PTE (
Page Table Entry
) i jego cache TLB (
Translation Lookaside Buffer
)
dzieli pamięć na segmenty (na ogół rzędu 4KiB), które podlegają ochronie
GNU/Linux Embedded
często brak GUI
BusyBox
uClibc, musl
Specyfika RTOS
(Real-Time Operating System)
system operacyjny kompilowany wraz całością oprogramowania
brak pamięci wirtualnej i kontroli pamięci (ewentualnie MPU)
brak sterowników urządzeń
zadania o niskim priorytecie mogą pozostać nieobsłużone
Przykłady RTOS-ów
FreeRTOS (licencja MIT)
SAFERTOS precertyfikowany:
IEC 61508-3 SIL 3 (
Safety Integrity Level
)
ISO 26262 ASIL D (
Automotive Safety Integrity Level
)
DSP/BIOS → SYS/BIOS → TI-RTOS
RT Linux
Uruchamianie mikrokontrolera
Podstawowe zadania bootloadera
odpowiednik BIOS-a (UEFI) w PC
może być umieszczony w oddzielnej pamięci (NOR Flash)
wstępna konfiguracja mikrokontrolera
inicjalizacja interfejsu Ethernet, karty pamięci
wyświetlenie splashscreena
ładowanie systemu operacyjnego z pamięci nieulotnej
Opcje serwisowe
obsługa trybów awaryjnych i serwisowych
uruchomienie terminala RS-232
diagnostyka urządzenia, flashowanie pamięci, testowanie TCP/IP itp.
ładowanie deweloperskiego systemu operacyjnego
via
USB lub Ethernet (TFTP)