Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Elektro- und Kommunikationstechnik, Burgdorf1 Berner Fachhochschule Technik und Informatik RTAI-Linux Echtzeiterweiterung für Linux Niklaus Burren - 17.

Ähnliche Präsentationen


Präsentation zum Thema: "Elektro- und Kommunikationstechnik, Burgdorf1 Berner Fachhochschule Technik und Informatik RTAI-Linux Echtzeiterweiterung für Linux Niklaus Burren - 17."—  Präsentation transkript:

1 Elektro- und Kommunikationstechnik, Burgdorf1 Berner Fachhochschule Technik und Informatik RTAI-Linux Echtzeiterweiterung für Linux Niklaus Burren Oktober 2006

2 Elektro- und Kommunikationstechnik, Burgdorf2 Berner Fachhochschule Technik und Informatik Inhalt 1.Funktionsprinzip - Architektur - RTHAL (Realtime Hardware Abstraction Layer) - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2.Beispielprogramm 3.Interrupt-Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation

3 Elektro- und Kommunikationstechnik, Burgdorf3 Berner Fachhochschule Technik und Informatik Architektur 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation

4 Elektro- und Kommunikationstechnik, Burgdorf4 Berner Fachhochschule Technik und Informatik 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. 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation

5 Elektro- und Kommunikationstechnik, Burgdorf5 Berner Fachhochschule Technik und Informatik 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 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.

6 Elektro- und Kommunikationstechnik, Burgdorf6 Berner Fachhochschule Technik und Informatik Interrupt-Handling 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation 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 ).

7 Elektro- und Kommunikationstechnik, Burgdorf7 Berner Fachhochschule Technik und Informatik Interrupt-Handling 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation

8 Elektro- und Kommunikationstechnik, Burgdorf8 Berner Fachhochschule Technik und Informatik Scheduler 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation 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.

9 Elektro- und Kommunikationstechnik, Burgdorf9 Berner Fachhochschule Technik und Informatik Intertask-Kommunikation 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation 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.

10 Elektro- und Kommunikationstechnik, Burgdorf10 Berner Fachhochschule Technik und Informatik 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. Prozesskommunikation 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation

11 Elektro- und Kommunikationstechnik, Burgdorf11 Berner Fachhochschule Technik und Informatik Beispielprogramm 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation fifotest.c Kernel-Modul printer.c Userspace-Programm

12 Elektro- und Kommunikationstechnik, Burgdorf12 Berner Fachhochschule Technik und Informatik 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 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; }

13 Elektro- und Kommunikationstechnik, Burgdorf13 Berner Fachhochschule Technik und Informatik 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 void xcleanup_module(void) { // Timer stoppen stop_rt_timer(); // FIFO löschen rtf_destroy(FIFO_0); // Task löschen rt_task_delete(&rt_task); }

14 Elektro- und Kommunikationstechnik, Burgdorf14 Berner Fachhochschule Technik und Informatik 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 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(); } }

15 Elektro- und Kommunikationstechnik, Burgdorf15 Berner Fachhochschule Technik und Informatik 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 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/ ); } exit(0); }

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

17 Elektro- und Kommunikationstechnik, Burgdorf17 Berner Fachhochschule Technik und Informatik Messaufbau 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation Pulsbreite entspricht Interrupt-Latenzzeit. Messung der Pulsbreite mit Oszilloskop. Aufzeichnung der Messdaten in einem Text-File mit Hilfe von Labview.

18 Elektro- und Kommunikationstechnik, Burgdorf18 Berner Fachhochschule Technik und Informatik Messung ohne RTAI 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation Durchschnittliche Interrupt-Latenzzeit (Leerlauf): 8.5 μs Maximale Interrupt-Latenzzeit: μs Minimale Interrupt-Latenzzeit: 4.0 μs SmartModule 855 MSEBX855 (Intel Pentium M 1.4 GHz)

19 Elektro- und Kommunikationstechnik, Burgdorf19 Berner Fachhochschule Technik und Informatik Messung mit RTAI 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation Durchschnittliche Interrupt-Latenzzeit (Leerlauf): 8.5 μs Maximale Interrupt-Latenzzeit: μs Minimale Interrupt-Latenzzeit: 7.17 μs SmartModule 855 MSEBX855 (Intel Pentium M 1.4 GHz)

20 Elektro- und Kommunikationstechnik, Burgdorf20 Berner Fachhochschule Technik und Informatik Interpretation 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - 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.

21 Elektro- und Kommunikationstechnik, Burgdorf21 Berner Fachhochschule Technik und Informatik Fragen 1. Funktionsprinzip - Architektur - RTHAL - Interrupt-Handling - Scheduler - Intertask-Kommunikation - Prozesskommunikation 2. Beispielprogramm 3. Latenzzeitmessungen - Messaufbau - Messung ohne RTAI - Messung mit RTAI - Interpretation


Herunterladen ppt "Elektro- und Kommunikationstechnik, Burgdorf1 Berner Fachhochschule Technik und Informatik RTAI-Linux Echtzeiterweiterung für Linux Niklaus Burren - 17."

Ähnliche Präsentationen


Google-Anzeigen