Linux - Real-Time (?)

Podobne dokumenty
Jesień LinuksowaLinux - Real-Time w systemach wbudowanych

Prezentacja systemu RTLinux

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.1

Technika mikroprocesorowa. Systemy operacyjne czasu rzeczywistego

Instrukcja użytkownika ARSoft-WZ1

System komputerowy. System komputerowy

Jadro Linux 2.6. a zadania czasu rzeczywistego. Artur Lewandowski. Jądro Linux 2.6 p.1/14

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

PROGRAMOWALNE STEROWNIKI LOGICZNE

Systemy wbudowane - wykład 9. Systemy czasu rzeczywistego Notes. Systemy czasu rzeczywistego Notes. Systemy czasu rzeczywistego Notes.

Architektura komputerów

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Jądro systemu operacyjnego

POSIX ang. Portable Operating System Interface for Unix

1 Moduł Lutron HomeWorks QS

Błąd pamięci karty graficznej lub Uszkodzona lub źle podpięta karta graficzna

System operacyjny System operacyjny

Budowa Komputera część teoretyczna

Podstawowe zagadnienia

U M L. System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux)

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

Projekt i implementacja systemu obsługi kart chipowych

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

1. Tworzenie nowego projektu.

System czasu rzeczywistego

Opis efektów kształcenia dla modułu zajęć

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.

Cyfrowy rejestrator parametrów lotu dla bezzałogowych statków powietrznych. Autor: Tomasz Gluziński

Systemy czasu rzeczywistego wstęp

PRZEWODNIK PO PRZEDMIOCIE

Mechanizmy pracy równoległej. Jarosław Kuchta

Czujniki obiektowe Sterowniki przemysłowe

Systemy wbudowane. Systemy operacyjne czasu rzeczywistego

Tworzenie oprogramowania

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

SYSTEMY CZASU RZECZYWISTEGO - VxWorks

1. Etapy rozwoju systemów komputerowych

Dział Dopuszczający Dostateczny Dobry Bardzo dobry Celujący

Laboratorium 2 Sterowanie urządzeniami z wykorzystaniem systemu plików Intel Galileo

Roger Access Control System. Aplikacja RCP Point. Wersja oprogramowania : 1.0.x Wersja dokumentu: Rev. C

Firewall bez adresu IP

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Instrukcja obsługi terminal A300

Podstawy Informatyki Systemy operacyjne

Struktury systemów operacyjnych

BIOS, tryb awaryjny, uśpienie, hibernacja

Systemy wbudowane. Paweł Pełczyński

IO - Plan testów. M.Jałmużna T.Jurkiewicz P.Kasprzyk M.Robak. 5 czerwca 2006

NOWY OPIS TECHNICZNY PRZEDMIOTU ZAMÓWIENIA

Uniwersytet Mikołaja Kopernika w Toruniu. Profilowanie ruchu sieciowego w systemie GNU/Linux

Architektury systemów czasu rzeczywistego RTOS. Wykonał: Bartłomiej Bugański

Konfigurowanie modułu BK9050 firmy Beckhoff wprowadzenie

Paweł Skrobanek. C-3, pok pawel.skrobanek.staff.iiar.pwr.wroc.pl

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

Instrukcja do oprogramowania ENAP DEC-1

OPIS TECHNICZNY PRZEDMIOTU ZAMÓWIENIA

1 Moduł Neuronu Cyfrowego SM

Real-Time Linux. Wprowadzenie

Tomasz Greszata - Koszalin

Większe możliwości dzięki LabVIEW 2009: programowanie równoległe, technologie bezprzewodowe i funkcje matematyczne w systemach czasu rzeczywistego

1 Moduł Konwertera. 1.1 Konfigurowanie Modułu Konwertera

dokument DOK wersja 1.0

Aktualizowanie systemów operacyjnych

Rejestratory Sił, Naprężeń.

Rys. 1. Wynik działania programu ping: n = 5, adres cyfrowy. Rys. 1a. Wynik działania programu ping: l = 64 Bajty, adres mnemoniczny

Załącznik nr 1 Do Umowy nr z dnia. . Wymagania techniczne sieci komputerowej.

Q E M U.

Jesień Linuksowa - Embedded Linux Security

BCS-NVR0402. Rejestrator sieciowy IP 4 kanałowy

Spis treści. Wstęp... 10

Budowa systemów komputerowych

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Działanie systemu operacyjnego

Zdalna obsługa transcievera. H A M R A D I O D E L U X E R e m o t e S e r v e r C o n f i g u r a t i o n

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Satel Integra FIBARO

KARTA PRZEDMIOTU. Systemy czasu rzeczywistego: D1_9

Sieciowe Systemy Operacyjne

Parametryzacja przetworników analogowocyfrowych

1 Moduł Diagnostyki Sieci

Programator procesorów rodziny AVR AVR-T910

Podstawy Techniki Komputerowej. Temat: BIOS

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Konfiguracja i programowanie sterownika GE Fanuc VersaMax z modelem procesu przepływów i mieszania cieczy

EGZAMIN POTWIERDZAJĄCY KWALIFIKACJE W ZAWODZIE Rok 2018 CZĘŚĆ PRAKTYCZNA

Urządzenia wejścia-wyjścia

INSTALACJA I KONFIGURACJA Instalacja systemu WF-Mag Mobile 2

Bufor danych USB jednorazowego użytku EBI 330-T30/EBI 330-T85 Nr produktu

Archiwizacja baz MSSQL /BKP_SQL/ opis oprogramowania

1. Opis. 2. Wymagania sprzętowe:

1 Moduł Neuronu Cyfrowego

Instrukcja użytkownika ARsoft-CFG WZ1 4.0

Na chwilę obecną biblioteka ElzabObsluga.dll współpracuje tylko ze sprawdzarkami RSowymi.

3. Sieć PLAN. 3.1 Adresowanie płyt głównych regulatora pco

UNIX: architektura i implementacja mechanizmów bezpieczeństwa. Wojciech A. Koszek dunstan@freebsd.czest.pl Krajowy Fundusz na Rzecz Dzieci

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

ZAŁĄCZNIK NR 1.8 do PFU Serwery wraz z system do tworzenia kopii zapasowych i archiwizacji danych - wyposażenie serwerowni

Programowanie Układów Logicznych kod kursu: ETD6203. Szczegóły realizacji projektu indywidualnego W dr inż.

Transkrypt:

Linux - Real-Time (?) Marcin Bis marcin@bis.org.pl 6 marca 2012 Marcin Bis Linux - Real-Time (?)

O czym to będzie? Linux w systemach wbudowanych (głównie) dużo gotowego oprogramowania w wielu przypadkach system działa z pudełka popularność Coraz więcej aplikacji potrzebuje czasu rzeczywistego czyli gwarantowanych maksymalnych opóźnień (o tym za chwilę) równocześnie chcielibyśmy zachować łatwość programowania w Linuksie

Dla przypomnienia: Tak wygląda nasz system (dystrybucja)

O mnie Marcin Bis http://bis.org.pl/ GNU/Linux (administracja, programowanie) szkolenia, konsulting, wsparcie techniczne zastosowanie Linuksa w przemyśle (real-time)

Po kolei... 1 Co oznacza Real-Time? 2 Z czym się zmagamy - podstawowe pojęcia. 3 Rodzaje wejścia-wyjścia. 4 Praktyczny test. 5 Jak z Linuksa zrobić system Real-Time? 6 Obowiązkowy przykład.

Co oznacza Real-Time? Definicja książkowa : Poprawność wykonania operacji zależy nie tylko od tego, czy wykonała się bez błędów i zwróciła poprawny rezultat, ale także od czasu (górnego ograniczenia) w jakim operacja się zakończyła.

Co oznacza Real-Time? Definicja praktyczna : System RT, to taki, w którym da się udowodnić, że każda wymagana operacja zakończy się w określonym czasie. W idealnym przypadku jest to dowód matematyczny. Niestety przy złożoności współczesnych systemów jest to niewykonalne, a nawet jeżeli, to istnieje ryzyko popełnienia błędu podczas dowodzenia. W praktyce stosuje się zestaw testów. System, który przejdzie takie testy określne w specyfikacji lub powstające podczas jego tworzenia, jest określany jako system czasu rzeczywistego.

Real-Time vs. Real-Fast Linux jest zaprojektowany jako system demokratyczny zasoby są przydzielane według potrzeb na przykład: planista zapobiega zagłodzeniu procesu Zazwyczaj determinizm nie jest brany pod uwagę liczy się maksymalna wydajność (throughput) Np.: dolne połówki w obsłudze pakietów sieciowych

Co ma do tego Linux? Przykładowy system oparty na projekcie TNKernel http://www.tnkernel.com/ Projekt Open-Source rozwijany głównie przez jednego człowieka (plus zainteresowane nim firmy). Elegancko zaprojektowany, przejrzysty kod. Przetestowany na wielu wdrożeniach. Problem Klient zamawia: pobieranie logów przez FTP zdalne sterowanie urządzeniem Zbyt trudne do zrealizowania (w rozsądnym czasie). Te rzeczy mamy z pudełka w Linuksie! - sprawdźmy, czy się nadaje.

Podstawowe pojęcia.

Deadline Punkt w czasie, w którym dana akcja ma nastąpić (np. reakcja na zmianę stanu wejścia). Hard Real-Time - operacja zawsze musi zakończyć się w określonym czasie. Wynik operacji zakończonej później - nie nadaje się do wykorzystania (awaria już nastąpiła). Soft Real-Time - okazjonalnie operacja może zakończyć się po ustalonym czasie (błąd nie jest krytyczny dla operacji) - na przykład zgubiona ramka obrazu.

Latency Czas pomiędzy momentem w którym akcja miała wystąpić, a momentem w którym w rzeczywistości wystąpiła. W idealnym przypadku (taki system nie istnieje) - opóźnienia byłyby zerowe. W rzeczywistości komputer potrzebuje pewnego czasu na ustabilizowanie i przetworzenie sygnałów ze sprzętu, oprogramowanie wprowadza własne opóźnienia itp.

Jitter Wariancja opóźnienia (poprzedniej wartości). Czas pomiędzy wystąpieniem przerwania (zgłoszeniem przez sprzęt) a uruchomieniem procedury jego obsługi nie jest stały. Jego zmienność jest równie groźna jak duże opóźnienie (na przykład uniemożliwia wykorzystanie systemu do akwizycji danych).

Predictability Przewidywalność. Oznacza wiedzę na temat tego ile czasu zajmie operacja (na przykład procedura obsługi przerwania). Teoria algorytmów zajmuje się określaniem złożoności obliczeniowej poszczególnych metod. W szczególności aby system był przewidywalny, konieczne jest używanie algorytmów działających w stałym czasie (niezależnym od ilości danych).

Worst Case Ze względu na zmienność rzeczywistych systemów (nie da się zbudować systemu idealnego), głównym polem naszych zainteresowań pozostaje najgorszy możliwy przypadek. System będzie działał w sposób przewidywalny jeżeli będziemy znać jego opóźnienie w najgorszym możliwym przypadku.

Rodzaje wejścia-wyjścia

Próbkowane wejście powtarzaj jeżeli odczyt > wartość graniczna to: /* czujnik znajduje się nad podłogą */ poruszaj się do przodu skręcając lekko w lewo w przeciwnym wypadku: /* czujnik znajduje się nad linią */ poruszaj się do przodu skręcając lekko w prawo

Próbkowane wejście c.d.

Marcin Bis (http://bis.org.pl/) Linux - Real-Time (?)

Wejście sterowane przerwaniami Metoda stosowana w większości systemów - brak problemów wynikających z obciążania głównej pętli operacjami pobocznymi.

Praktyczny test

Wzorcowy układ

Wzorcowy układ Będziemy rozważać następujący układ: Wejście jest wzbudzane sygnałem i system reaguje zmieniając stan wyjścia. W tym przypadku są to PIN-y GPIO. ale sytuacja niczym się nie różni od wzbudzania wejścia przy pomocy innego (wewnętrznego mechanizmu). To jest timera lub przerwania z urządzenia (kamera).

Realizacja w procedurze obsługi przerwania

Realizacja w procedurze obsługi przerwania

Dodajemy obciążenie $ cat /proc/loadavg 5.02 3.76 2.04 2/47 432 odczyt danych z karty SD: cat /dev/mmcblk0p1 > /dev/null wysyłanie danych ASCII na terminal podłączony przez port szeregowy: cat /dev/zero od -v wysyłanie do badanego systemu dużej ilości pakietów IP (ICMP): ping -f <adres urządzenia> Uwaga!: te testy nie poddają systemu obciążeniom występującym podczas rzeczywistej pracy.

Realizacja w procedurze obsługi przerwania - obciążenie

Oddzielamy logikę od mechanizmów

Userspace

Userspace - obciążenie

Userspace - obciążenie

Jak z Linuksa zrobić system Real-Time? Przy pomocy rozwiązań Open-Source

Metody oparte na mikrojądrze: RTLinux - pierwsza implementacja. RTAI - najmniejsze możliwe opóźnienia. Adeos - nanokernel. Xenomai - oparty o Adeos - łatwe portowanie kodu z innych systemów RT. Próba ulepszenia Linuksa: RT PREEMPT

Xenomai - architektura

RT PREEMPT

Już od wersji 2.6.0 dostępna jest możliwość włączenia wywłaszczania kodu jądra. Kernel Features ---> Preemption Model (Preemptible Kernel ()) --> ( ) No Forced Preemption (Server) ( ) Voluntary Kernel Preemption (Desktop) (X) Preemptible Kernel (Low-Latency Desktop) To nadal nie jest RT!

Bez wywłaszczania

Z wywłaszczaniem

RT-Preempt Standardowe jądro z omówionymi opcjami minimalizuje opóźnienia, jednak nie spełnia nawet wymogów miękkiego systemu czasu rzeczywistego. Zapewnia całkiem dobrą, ale nadal nie gwarantowaną responsywność. Łaty pozwalające na uruchamianie wątków czasu rzeczywistego, rozwijane są w oddzielnym projekcie: http://www.kernel.org/pub/linux/kernel/projects/rt/ Są one sukcesywnie włączane do jądra.

Konfiguracja Kernel Features ---> Preemption Mode (Complete Preemption ()) ---> (X) Complete Preemption (Real-Time) -*- Thread Softirqs -*- Thread Hardirqs

Przerwania w wątkach 1 Standardowa obsługa przerwań 2 Obsługa przerwań w wątkach

Obciążenie

Obciążenie

Opóźnienia w systemie

Opóźnienia w systemie

Jądro z łatą RT PREEMPT nie sprawia, że system staje się RT. Trzeba skorzystać z: POSIX RT-API i dopiero aplikacje napisane z jego użyciem będą działały w reżimie czasu rzeczywistego!

Wsparcie dla POSIX RT API w Linuksie W celu zapewnienia wsparcia dla aplikacji czasu rzeczywistego, został opracowany standard IEEE 1003.1b - POSIX.1b. Najważniejsze deterministyczne mechanizmy programowania w systemach czasu rzeczywistego określone w standardzie, to: Planowanie uruchamiania procesów (API planisty, pozwalające zdefiniować na stałe priorytet procesu oraz klasę zaszeregowania). Blokowanie pamięci (w celu uniemożliwienia jej zeswapowana). Kolejki komunikatów. Pamięć współdzielona. Sygnały czasu rzeczywistego. Semafory. Timery (CLOCK MONOTONIC). AIO - nieblokujące operacje odczytu i zapisu danych, oraz kontroli zleceń

Pozostałe problemy

Inwersja priorytetów Inwersja priorytetów - występuje w momencie kiedy zadanie (P1) o wysokim priorytecie wywłaszcza zadanie o niższym (P2), przetrzymujące blokadę (semafor), do której równocześnie chce się dostać zadanie z wyższym priorytetem.

Inwersja priorytetów

Problemy sprzętowe SMI - przerwanie obsługiwane przez bios (na przykład włączenie wentylatora lub przyjęcie danych z klawiatury USB, o ile została skonfigurowana do obsługi przez BIOS). Problem występuje głównie w PC. Wyłączenie tego typu przerwań (czasem jest możliwe przy pomocy interakcji z ustawieniami BIOS-u lub ACPI) może doprowadzić do uszkodzenia sprzętu. VGA - konsola VGA może generować opóźnienia rzędu 1ms jądro powinno korzystać z konsoli szeregowej. (problem nie występuje podczas korzystania ze środowiska graficznego ani z bufora ramki - wynika z błędów projektowych BIOS-u VGA). DMA - coś innego niż procesor kontroluje transfery z/do pamięci.

Problemy sprzętowe - DMA

Zatrzymanie awaryjne