Elektro- und Kommunikationstechnik, Burgdorf1 Berner Fachhochschule Technik und Informatik...

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

Transcript of Elektro- und Kommunikationstechnik, Burgdorf1 Berner Fachhochschule Technik und Informatik...

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

Elektro- und Kommunikationstechnik, Burgdorf1

Berner Fachhochschule

Technik und Informatik

RTAI-LinuxEchtzeiterweiterung für Linux

Niklaus Burren - 17. Oktober 2006

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

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

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

Elektro- und Kommunikationstechnik, Burgdorf3

Berner Fachhochschule

Technik und Informatik

Architektur1. Funktionsprinzip- Architektur- RTHAL- Interrupt-Handling- Scheduler- Intertask-Kommunikation- Prozesskommunikation

2. Beispielprogramm

3. Latenzzeitmessungen- Messaufbau- Messung ohne RTAI- Messung mit RTAI- Interpretation

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

Elektro- und Kommunikationstechnik, Burgdorf4

Berner Fachhochschule

Technik und Informatik

RTHAL (Realtime Hardware Abstraction Layer)

Fall AAbstraktion ist transpa-rent, Interrupt-Kontrolle liegt beim Linux Kernel.

Fall BDem Linux Kernel wirddie Interrupt-Kontrolleentzogen 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

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

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.

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

Elektro- und Kommunikationstechnik, Burgdorf6

Berner Fachhochschule

Technik und Informatik

Interrupt-Handling1. 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).

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

Elektro- und Kommunikationstechnik, Burgdorf7

Berner Fachhochschule

Technik und Informatik

Interrupt-Handling1. Funktionsprinzip- Architektur- RTHAL- Interrupt-Handling- Scheduler- Intertask-Kommunikation- Prozesskommunikation

2. Beispielprogramm

3. Latenzzeitmessungen- Messaufbau- Messung ohne RTAI- Messung mit RTAI- Interpretation

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

Elektro- und Kommunikationstechnik, Burgdorf8

Berner Fachhochschule

Technik und Informatik

Scheduler1. 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.

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

Elektro- und Kommunikationstechnik, Burgdorf9

Berner Fachhochschule

Technik und Informatik

Intertask-Kommunikation1. Funktionsprinzip- Architektur- RTHAL- Interrupt-Handling- Scheduler- Intertask-Kommunikation- Prozesskommunikation

2. Beispielprogramm

3. Latenzzeitmessungen- Messaufbau- Messung ohne RTAI- Messung mit RTAI- Interpretation

• Mailboxenrt_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.

• Semaphorenrt_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.

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

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.

Prozesskommunikation1. Funktionsprinzip- Architektur- RTHAL- Interrupt-Handling- Scheduler- Intertask-Kommunikation- Prozesskommunikation

2. Beispielprogramm

3. Latenzzeitmessungen- Messaufbau- Messung ohne RTAI- Messung mit RTAI- Interpretation

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

Elektro- und Kommunikationstechnik, Burgdorf11

Berner Fachhochschule

Technik und Informatik

Beispielprogramm1. Funktionsprinzip- Architektur- RTHAL- Interrupt-Handling- Scheduler- Intertask-Kommunikation- Prozesskommunikation

2. Beispielprogramm

3. Latenzzeitmessungen- Messaufbau- Messung ohne RTAI- Messung mit RTAI- Interpretation

fifotest.cKernel-Modul

printer.c

Userspace-Programm

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

Elektro- und Kommunikationstechnik, Burgdorf12

Berner Fachhochschule

Technik und Informatik

Beispielprogramm: fifotest.c1. 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 PeriodeRTIME now; // Timestamp für Task-Start

// FIFO erzeugenrtf_create(FIFO_0, // FIFO-Nummer

20000); // FIFO-Grösse

// Periodischen Task erzeugenrt_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 startentick_period = start_rt_timer(nano2count(TIMERTICKS));now = rt_get_time();rt_task_make_periodic(&rt_task, now + tick_period, tick_period);

return 0;}

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

Elektro- und Kommunikationstechnik, Burgdorf13

Berner Fachhochschule

Technik und Informatik

Beispielprogramm: fifotest.c1. 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);}

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

Elektro- und Kommunikationstechnik, Burgdorf14

Berner Fachhochschule

Technik und Informatik

Beispielprogramm: fifotest.c1. 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(); }}

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

Elektro- und Kommunikationstechnik, Burgdorf15

Berner Fachhochschule

Technik und Informatik

Beispielprogramm: printer.c1. 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/1000000); }

exit(0);}

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

Elektro- und Kommunikationstechnik, Burgdorf16

Berner Fachhochschule

Technik und Informatik

Beispielprogramm1. 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 2.6.10, RTAI 3.2• Prozessor: Intel Pentium M 1.4 GHz• RAM: DRAM 1024 MB• Festplatte: 20 GB

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

Elektro- und Kommunikationstechnik, Burgdorf17

Berner Fachhochschule

Technik und Informatik

Messaufbau1. 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.

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

Elektro- und Kommunikationstechnik, Burgdorf18

Berner Fachhochschule

Technik und Informatik

Messung ohne RTAI1. 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 μsMaximale Interrupt-Latenzzeit: 1680.0 μsMinimale Interrupt-Latenzzeit: 4.0 μs

SmartModule 855 MSEBX855 (Intel Pentium M 1.4 GHz)

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

Elektro- und Kommunikationstechnik, Burgdorf19

Berner Fachhochschule

Technik und Informatik

Messung mit RTAI1. 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 μsMaximale Interrupt-Latenzzeit: 11.42 μsMinimale Interrupt-Latenzzeit: 7.17 μs

SmartModule 855 MSEBX855 (Intel Pentium M 1.4 GHz)

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

Elektro- und Kommunikationstechnik, Burgdorf20

Berner Fachhochschule

Technik und Informatik

Interpretation1. 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 ohneRTAI etwa gleich gross (8.5 us).

• Im Belastungsfall ist die Interrupt-Latenzzeit mit RTAI wesentlich stabiler als ohne RTAI.

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

Elektro- und Kommunikationstechnik, Burgdorf21

Berner Fachhochschule

Technik und Informatik

Fragen1. Funktionsprinzip- Architektur- RTHAL- Interrupt-Handling- Scheduler- Intertask-Kommunikation- Prozesskommunikation

2. Beispielprogramm

3. Latenzzeitmessungen- Messaufbau- Messung ohne RTAI- Messung mit RTAI- Interpretation