RTAI-Linux Echtzeiterweiterung für Linux

Slides:



Advertisements
Ähnliche Präsentationen
Message Passing Interface (MPI)
Advertisements

Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Funktionen und Module Einführung anhand des Beispiels Wörter sortieren Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik.
C Tutorium – Fehlerbehandlung – Knut Stolze. 2 Grundsatz Also ist auch nach jedem Funktionsaufruf auf Fehler zu prüfen!! Jeder(!) Funktionsaufruf kann.
C Tutorium – Semaphoren –
Institut MD Universität Rostock Real-Time Linux Szenario –Board, liest (sampled) analoge Daten –produziert 8 Bit Ergebnis und gibt dieses alle 100 ms aus.
der Universität Oldenburg
Enno Rehling und Roger Butenuth, Uni-GH Paderborn: Arminius: Software für Linux-basierte SCI-Cluster Arminius: Software für Linux-basierte SCI-Cluster.
SAP R/3 - Speichermanagement
Atmel AVR JTAG Einführung
Indirekte Adressierung
Java: Grundlagen der Sprache
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Spieleprogrammierung mit DirectX und C++
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 6 Model-View-Controler als Grundlage für Nutzerschnittstellen Sommersemester 2003 Lars Bernard.
OpenMP Präsentation im Rahmen des Seminars
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 9 Claudio Moraga; Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 10 Claudio Moraga; Gisbert Dittrich FBI Unido
1 Linux Paging, Caching und Swapping. 1 Vortragsstruktur Paging – Das Virtuelle Speichermodell –Die Page Table im Detail –Page Allocation und Page Deallocation.
DbjFileManager Paul Fruntzek Michael Stanek. Überblick Unterste Ebene im Schichtenmodell Schnittstelle zum BS (Low-Level) Aufgabenbereich: Persistente.
Vorl. 6: Single- und Multitasking Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin
Vorlesung 5: Interrupts Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin Wintersemester.
Technische Informatik II Rechnerarchitektur und Betriebssysteme Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter.
Vorlesung 5 Interrupts Peter B. Ladkin
Vorlesung, Wintersemester 2009/10M. Schölzel 1 Optimierungstechniken in modernen Compilern Optimierungstechniken für SMP- Architekturen.
Einführung in Visual C++
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Wir müssen also überlegen: Implementierung der Knoten, Implementierung der Kanten, daraus: Implementierung des Graphen insgesamt. Annahme: die Knoteninhalte.
Wismar Business School
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Matrix Multiplication on CUDA
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 6 Sitzung 6: Model-View-Controller als Grundlage.
Einfach verkettete Listen
Einfach verkettete Listen (OOP)
ODBC (Open Database Connectivity)
Duo- und Quad Prozessor-Architektur
Systeme 1 Kapitel 4 Prozesse WS 2009/10.
Betriebssysteme allgemein
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Von der Planung bis zum Hauptmenü Seminar: Softwaretechnologie II Dozent: Prof. Manfred Thaller Referent: Jan Bigalke.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Portabilität Seminar aus Softwareentwicklung: Programmierstil Christine Schiestl WS 02 / 03.
Real Time Operating System
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 5 Dr. W. Narzt u. Dr. A. Stritzinger.
Betriebssysteme Übung Tutorium „System Calls & Multipgrogramming“
Bs Gemeinsame Datensegmente am Beispiel Solaris [Beachte: Unix/Linux setzen keine Hardware-Segmentierung voraus und sprechen daher statt von.
Objectives Verstehen was unterDelegate verstanden wird
Thomas Gleixner – linutronix Linux in Automation 2004 – Uni Hannover.
Parallelisierung für Multiprozessor-Maschinen Teil 2.
Hauptseminar 2001 „Parallele Programmierung in Java“ - JPVM- Java Parallel Virtual Machine Referent: Sebastian Steininger.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Autor: Timo Pagel Nutzung: Diese Lernkarten sind für die Nutzung mit OpenCards gedacht Siehe dazu
Referat von Marcel Poppen & Oliver Lennartz
WINDOWS 2003 Server. Standart Varianten für 32 Bit: Web Edition: Unterstützt Single(1)- oder Dual(2)-Prozessor-Systeme und bis zu 2 GB RAM 32-Bit Standard.
C Tutorium – Shared Memory – Knut Stolze. 2 Shared Memory Ein Speicherbereich, auf den mehrere Prozesse Zugriff haben – Also kein privater Speicher –
Multiprocessing mit OpenMPI Marius Albath. Vorlesung Betriebssysteme, Was ist OpenMPI Was ist OpenMPI OpenMPI Standard Setup OpenMPI Standard.
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Kommunikation von Prozessen Signale und Pipes Alexander Sczyrba
Netzwerk - Programmierung
Echtzeit-Betriebssysteme
 Präsentation transkript:

RTAI-Linux Echtzeiterweiterung für Linux Niklaus Burren - 17. Oktober 2006

Inhalt Funktionsprinzip - Architektur - RTHAL (Realtime Hardware Abstraction Layer) - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation Beispielprogramm Interrupt-Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation

1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation Architektur

RTHAL (Realtime Hardware Abstraction Layer) 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation RTHAL (Realtime Hardware Abstraction Layer) Fall A Abstraktion ist transpa- rent, Interrupt-Kontrolle liegt beim Linux Kernel. Fall B Dem Linux Kernel wird die Interrupt-Kontrolle entzogen und der Echt- zeiterweiterung zuge- wiesen. RTAI Core Der RTAI-Kern wird durch verschiedene Kernel-Module implementiert. Solange die Module nicht geladen werden, behält der Kernel die Interrupt-Kontrolle (Fall A). Beim Laden der RTAI-Module tritt Fall B in Kraft.

RTHAL (Realtime Hardware Abstraction Layer) 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation RTHAL (Realtime Hardware Abstraction Layer) RTHAL besteht im wesentlichen aus einer Struktur von Funktions-pointern. Beim Systemstart zeigen sie auf die Interrupt-Handling-Funktionen des Linux-Kernels. Beim Laden der RTAI-Module werden die Funktionspointer auf RTAI interne Funktionen umgelenkt. Nach dem Entfernen der RTAI-Module zeigen die Pointer der Struktur RTHAL wieder auf die Standard-Kernel-Funktionen.

1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation Interrupt-Handling Interruptspezifische Funktionsaufrufe des Linux-Kernels werden mit Hilfe von RTHAL an RTAI interne Funktionen umgeleitet. RTAI implementiert einen Ersatz für das Funktionspaar sti() und cli(). Diese RTAI-Funktionen greifen nicht mehr auf die Hardware zu, sondern setzen Flags in RTAI internen Datenstrukturen So wird festgehalten, ob Linux über eingehende Interrupts informiert werden möchte (sti) oder nicht (cli).

1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation Interrupt-Handling

1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation Scheduler RTAI unterstützt drei Scheduling-Varianten für Uni- und Multiprozessor- Systeme: Uni-Prozessor-Scheduler (UP) Für Plattformen mit nur einem Prozessor. SMP-Scheduler (SMP) Der SMP-Scheduler (Symetric Multiprocessing) ist für Multiprozessor-Systeme gedacht. Tasks können an eine CPU gebunden werden oder symmetrisch auf einen Cluster von CPUs laufen. Multi-Uni-Porzessor-Scheduler (MUP) Dieser Scheduler sieht ein Multiprozessor-System als eine Ansamm-lung von mehreren Einzelprozessoren. Vorteil: Jeder Prozessor kann seine Timer unabhängig von den anderen programmieren. Je nachdem welchen Scheduler man verwenden möchte, lädt man ein anderens Kernel-Modul.

Intertask-Kommunikation 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation Intertask-Kommunikation Mailboxen rt_mbx_init() Initialisiert eine Mailbox mit einer definierten Grösse. rt_mbx_delete() Löscht die von einer Mailbox genutzten Ressourcen. rt_mbx_send() Sendet eine Nachricht mit definierter Grösse an die Mailbox. rt_mbx_receive() Empfängt eine Nachricht mit definierter Grösse von einer Mailbox. Semaphoren rt_sem_init() Initialisiert eine Semaphore mit gegebenem Wert. rt_sem_delete() Löscht die gegebene Semaphore. rt_sem_signal() Gibt die Semaphore zurück. rt_sem_wait() Wartet auf eine Semaphore. Mailboxen und Semaphoren werden in den Kernel-Modulen der Scheduler implementiert.

Prozesskommunikation 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation Prozesskommunikation RTAI-FIFO tf_create() Erzeugt einen FIFO mit gegebner Grösse und Nummer. rtf_destroy() Löscht einen FIFO. rtf_reset() Löscht den Inhalt eines FIFO. rtf_put() Schreibt Daten in den FIFO. rtf_get() Liest Daten aus dem FIFO. rtf_create_handler() Registriert einen Handler (Ausführung beim Eintreffen von Daten) Shared Memory Speicherbereich, der sich Linux-Prozess und RTAI-Task teilen. Zur Übertragung von grossen Datenmengen von einem RTAI-Task zu einem Linux-Prozess.

Beispielprogramm printer.c fifotest.c Kernel-Modul Userspace-Programm 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation Beispielprogramm fifotest.c Kernel-Modul printer.c Userspace-Programm

Beispielprogramm: fifotest.c 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation Beispielprogramm: fifotest.c int xinit_module(void) { RTIME tick_period; // Timer Periode RTIME now; // Timestamp für Task-Start // FIFO erzeugen rtf_create(FIFO_0, // FIFO-Nummer 20000); // FIFO-Grösse // Periodischen Task erzeugen rt_task_init(&rt_task, // Task-Struktur taskFkt, // Task-Handler 1, // Initialisierungswert 2000, // Stackgrösse 0, // Taskpriorität 0, // Task arbeitet ohne FPU 0); // Signal-Handler // Timer und periodischen Task starten tick_period = start_rt_timer(nano2count(TIMERTICKS)); now = rt_get_time(); rt_task_make_periodic(&rt_task, now + tick_period, tick_period); return 0; }

Beispielprogramm: fifotest.c 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation Beispielprogramm: fifotest.c void xcleanup_module(void) { // Timer stoppen stop_rt_timer(); // FIFO löschen rtf_destroy(FIFO_0); // Task löschen rt_task_delete(&rt_task); }

Beispielprogramm: fifotest.c 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation Beispielprogramm: fifotest.c static void taskFkt(int t) { // Message für Übertragung in den Userpace static struct { int taskId; RTIME time; } msg; msg.taskId = t; static long long last_cpu_time; long long cpu_time; while (1) // Systemtimer auslesen cpu_time = rt_get_cpu_time_ns(); // Differenz bilden msg.time = cpu_time - last_cpu_time; last_cpu_time = cpu_time; // Übergabe an FIFO rtf_put(FIFO_0, &msg, sizeof(msg)); // Warten auf nächste Periode rt_task_wait_period(); }

Beispielprogramm: printer.c 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation Beispielprogramm: printer.c static int end; static void endme(int dummy){ end = 1;} int main (int argc, char** argv) { int fifo; static struct { int taskId; long long time; } msg; // FIFO (Datei) öffnen if ((fifo = open("/dev/rtf0", O_RDONLY)) < 0) { fprintf(stderr, "Error opening /dev/rtf0\n"); exit(1); } signal(SIGINT, endme); while(!end) { // Nachricht aus der FIFO auslesen read(fifo, &msg, sizeof(msg)); // Ausgabe auf der Konsole printf("Task%d: %f ms\n", msg.taskId, (float)msg.time/1000000); exit(0);

1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation Beispielprogramm Demonstration des Beispielprogramms auf dem Evaluation-Kit SmartModule 855 MSEBX855 von Digital-Logic Software: Ubuntu 5.04, Kernel 2.6.10, RTAI 3.2 Prozessor: Intel Pentium M 1.4 GHz RAM: DRAM 1024 MB Festplatte: 20 GB

Messaufbau Pulsbreite entspricht Interrupt-Latenzzeit. 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation Messaufbau Pulsbreite entspricht Interrupt-Latenzzeit. Messung der Pulsbreite mit Oszilloskop. Aufzeichnung der Messdaten in einem Text-File mit Hilfe von Labview.

1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation Messung ohne RTAI SmartModule 855 MSEBX855 (Intel Pentium M 1.4 GHz) Durchschnittliche Interrupt-Latenzzeit (Leerlauf): 8.5 μs Maximale Interrupt-Latenzzeit: 1680.0 μs Minimale Interrupt-Latenzzeit: 4.0 μs

1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation Messung mit RTAI SmartModule 855 MSEBX855 (Intel Pentium M 1.4 GHz) Durchschnittliche Interrupt-Latenzzeit (Leerlauf): 8.5 μs Maximale Interrupt-Latenzzeit: 11.42 μs Minimale Interrupt-Latenzzeit: 7.17 μs

1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation Interpretation Die durchschnittliche Interrupt-Latenzzeit im Leerlauf ist mit und ohne RTAI etwa gleich gross (8.5 us). Im Belastungsfall ist die Interrupt-Latenzzeit mit RTAI wesentlich stabiler als ohne RTAI.

1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation Fragen