System operacyjny czasu rzeczywistego (RTOS Real Time Operating System) jest programem bazowym ułatwiającym tworzenie programu użytkowego systemu mikroprocesorowego. System operacyjny czasu rzeczywistego jest jednym z rodzajów systemów operacyjnych. Jest to taki system operacyjny, który gwarantuje reakcję na określone zdarzenie zewnętrzne w nieprzekraczalnym czasie. 1
Najważniejsze cele stosowania systemów operacyjnych czasu rzeczywistego to: przyspieszenie tworzenia programu użytkowego zwiększenie niezawodności działania programu użytkowego ułatwienie zarządzania procesem tworzenia oprogramowania 2
oprogramowanie program użytkowy biblioteki systemu operacyjnego jądro systemu operacyjnego mikrokontroler sprzęt System operacyjny czasu rzeczywistego zawiera dwa typy programów: jądro systemów operacyjnych czasu rzeczywistego (kernel) zarządzające podstawowymi zasobami systemu mikroprocesorowego (czas i pamięć) i realizujące funkcje usługowe dla programu użytkowego biblioteki systemów operacyjnych czasu rzeczywistego (library) zawierające często używane elementy w programie użytkowym 3
Podstawowe zasady stosowania systemów operacyjnych czasu rzeczywistego są następujące: program użytkowy daje się podzielić na pewną liczbę zadań określanych jako zadania (tasks) lub procesy (process) każde zadanie może obejmować funkcje programowe realizowane w wszystkich częściach programu systemu mikroprocesorowego: w inicjalizacji, niekończącej się pętli oraz w przerwaniach o wykorzystaniu zasobów systemu mikroprocesorowego wspólnych dla wszystkich zadań, tj. czasu oraz pamięci decyduje system operacyjny wymiana informacji pomiędzy zadaniami odbywa się za pośrednictwem systemu operacyjnego a zasady tej wymiany są ściśle określone 4
priorytet zadania 3 2 2 1 1 wywłaszczenie zadania zakończenie obsługi zadania w danym cyklu obliczeniowym czas Obsługa priorytetowa zadań z wywłaszczaniem (preemptive priority-based scheduling) 5
priorytet zadań maksymalny czas obsługi zadania 1 2 3 1 t2 - wywłaszczenie zadania - zakończenie obsługi zadania w danym cyklu obliczeniowym czas Obsługa cykliczna zadań z wywłaszczaniem (round-robin scheduling) 6
W systemach operacyjnych czasu rzeczywistego istnieje szereg mechanizmów wymiany informacji pomiędzy zadaniami a także pomiędzy zadaniami zdarzeniami zewnętrznymi. Mogą to być następujące mechanizmy: kolejki (queues) do wymiany informacji pomiędzy zadaniami za pomocą komunikatów gniazda (sockets) do wymiany informacji pomiędzy zadaniami a systemami zewnętrznymi za pomocą standardowych protokołów semafory (semaphores) do synchronizacji pracy zadań sygnały (signals) do wymiany informacji pomiędzy zdarzeniami zewnętrznymi a zadaniami, m.in. do obsługi przerwań wspólna pamięć (shared memory) do korzystania z wspólnych struktur danych przez wiele zadań 7
Uruchamianie programu mikrokontrolerów bez wykorzystywania systemu docelowego Jest to metoda polegająca na wykorzystanie symulatora programowego mikrokontrolera. Programowe symulatory mikrokontrolerów umożliwiają symulację pracy zarówno jednostki centralnej, a bardziej rozbudowane także układów peryferyjnych mikrokontrolera. Zaletą tej metody jest to, że nie trzeba dysponować fizycznym docelowym systemem dla testowania oprogramowania a także ten fakt, że na podstawie wyników testów (np. czasu wykonywania programu) można wprowadzać odpowiednie korekty do koncepcji budowy sprzętowej systemu docelowego jeszcze przed jego wykonaniem. Wadą tej metody jest to, że poprawne działanie programu z symulatorem nie daje całkowitej gwarancji bezbłędnej pracy w rzeczywistym systemie. Ostateczna weryfikacja poprawności napisanego programu może nastąpić tylko podczas jego wykonywania w systemie docelowym. 8
Uruchamianie programu mikrokontrolerów z wykorzystaniem systemu docelowego Uruchamianie programów mikrokontrolerów z wykorzystaniem systemu docelowego obejmuje następujące metody: metoda prób i błędów zastosowanie emulatora pamięci programu zastosowanie monitora programowego rezydującego w systemie zastosowanie emulatora sprzętowego mikrokontrolera wykorzystanie specjalnych zasobów wewnętrznych mikrokontrolera 9