Unsere ausführliche Einführung in Embedded Linux. Von den Grundlagen bis zur Interprozesskommunikation und Echtzeit-Linux.
Ziele des Kurses
Das Ziel dieses Kurses ist es, die Grundlagen von Embedded Linux zu vermitteln.
Wir werden Themen wie diese sehen:
- Wie passen die Puzzleteile zusammen?
- Welche Komponenten werden zum Aufbau eines eingebetteten Linux-Systems benötigt?
- Woher bekommt man sie und wie kann man sie konfigurieren/erstellen/installieren?
- Wie können Sie Hilfe von der "Gemeinschaft" erhalten?
- Was ist mit Softwarelizenzen und der Einhaltung von Open-Source-Lizenzen?
- Grundlagen der Kommunikation zwischen Prozessen
- Real-Time
Praktische Übungen vermitteln Ihnen die nötige Praxiserfahrung, um nach erfolgreichem Abschluss des Workshops eigene Embedded Linux-Systeme zu entwickeln.
Beschreibung
In diesem fünftägigen Kurs werden die Konzepte von Embedded Linux durch praktische Übungen in Kombination mit Theorie veranschaulicht. Die praktischen Übungen werden auf dem Host mit einem Yocto Project® Software Development Kit (SDK) und Zielhardware (z.B. i.mx6) durchgeführt. Der gesamte Workshop ist darauf ausgelegt, Sie so schnell wie möglich auf den neuesten Stand zu bringen. Die Philosophie, Konzepte und Befehle, die notwendig sind, um Embedded Linux effektiv zu nutzen, werden in einer einzigartigen Kombination aus Theorie und Praxis beschrieben. Anstatt zu versuchen, alles selbst herauszufinden, lernen Sie von einem erfahrenen Trainer und integrieren Sie das neu erworbene Wissen über Embedded Linux in Ihre eigenen Embedded-Entwicklungsprojekte.
Voraussetzungen
- Grundlegende Vertrautheit mit der Verwendung eines Linux-Systems (z. B. Ubuntu) als Endbenutzer im Benutzerbereich
- Grundlegende Vertrautheit mit einer Befehlszeilen-Shell
- Vertrautheit mit eingebetteten C-Konzepten und Programmierung
- Fähigkeit zur Entwicklung von Software unter Verwendung der C-Syntax
- Grundkenntnisse über eingebettete Prozessoren und Entwicklungsboards
- ...und/oder keine Angst, mehr über die oben genannten Themen zu erfahren...
Kurs-Fahrplan
Wer sollte teilnehmen?
Manager, Projektleiter, Software-, Hardware-, Entwicklungs-, Systemingenieure, Tester, Administratoren, Techniker und andere an der Technologie Interessierte, die möglichst schnell verstehen wollen, wie Embedded Linux funktioniert.
- Sie müssen Linux verwenden, oder Sie können sich den Luxus erlauben, zu entscheiden, ob es sinnvoll ist, es zu verwenden oder nicht.
- Vielleicht haben Sie bereits versucht, Embedded Linux zu verwenden, sind sich aber nicht ganz sicher, ob Sie alles richtig gemacht haben.
- Sie verwenden derzeit ein anderes Betriebssystem und möchten herausfinden, ob Linux vielleicht besser und/oder günstiger ist.
Gliederung des Kurses
Tag 1
Einführung
- Geschichte von Unix/Linux | Lizenzierung | Standards | Arbeiten mit Freier Software | Spelunking | Unix Philosophie
Host-Spielplatz
- Architektur |
shell
| Benutzer | su | Dateihierarchie-Standard (FHS) | daemons | statische Bibliotheken/shared Bibliotheken | Berechtigungen | Zugangskontrolle | umask | hard Links | soft Links | mehr Erlaubnis-Bits | (cross) compile Framework | real/effektivuser id
(uid) | reale/effektive Gruppenkennung (gid)
Tag 2
Prozesse und Kommunikation zwischen Prozessen (IPC)
- Linux-Architektur | Was ist ein Betriebssystem? | Was ist ein
scheduler
? | Linux: Scheduler(s) - Prioritäten -scheduling
Klassen | Prozess, Task, Thread| errno | fork |
Prozessbeendigung | Prozesszustände | Zombies | Wie können Sie die Prozesse untersuchen? - einfache Interprozesskommunikation (IPC)
- Shell-Umleitung | shelling out | tmpfiles
- erweiterte Interprozesskommunikation (IPC)
- generisch
| pipe |
Signal |interrupted system call
|message queue
| Semaphor | Mutex |shared memory
| socket | select | poll
- generisch
- andere prozessübergreifende Kommunikationsmethoden | IInterprozesskommunikationstechniken, die vermieden werden sollten
Tag 3
Linux-Hardware-Kit
- Wie bootet Linux auf einem PC und auf dem Evaluation Board? | Boot-Sequenz | SD-Karten-Partitionen | Booten sehen
Was wird benötigt...
- Gastgeber
- Toolkit
- Das Yocto Project® | Installieren Sie das Yocto Project® SDK
- Vorbereitung der SD-Karte | Terminal-Emulation
screen | byobu | minicom
- Server
tftp |
NFS
- Root-Dateisysteme
- Toolkit
- Zielsystem
git |
u-boot- Skripting | fancy stuff | checkout | config | build | install | variables and commands
- Flacher Gerätebaum (fdt)
- was ist ein fdt? | gerätebaumcompiler | beispiele
- Kernel
checkout
| Konfig-kconfig |
bauen-kbuild
- Flacher Gerätebaum (fdt)
- bauen | installieren
- Kernel-Module
- bauen | installieren
Tag 4
Root File Systems
- minimale rootfs vorbereiten
| tftp
Server für Tests - ramdisk | mtd | jffs2 | mtdparts | cramfs | roEXT2 | rootfs Vergleich
Anpassungen
- das System hängt | Pseudo
tty | getty | runlevel |
statische IP| mount
nfs| ssh
Server
Debugging im Userspace
- Was ist ein Fehler/Debugging? | Arten von Fehlern | Fehlerbeseitigungsstrategie
- Einfache Werkzeuge
lsof | ltrace | strace | procfs | top | netstat | syslog |
...
- Erweiterte Tools
- Was ist ein Debugger?
gdb
:gdb
auf dem Zielsystem| gdb
mitremote debugging
JTAG-Debugging (optional)
- JTAG | JTAG-Einrichtung | Wie debuggt man u-boot vor Relocation | andere Möglichkeiten
Profilierung/Verfolgung
- Profiling im Gegensatz zu Tracing
- Profiling/Tracing-Werkzeuge:
strace |
system timers
| gprof | gcov | perf
- top und ähnliche Programme:
top | powertop | powerdebug
crash
:gdb
auf Steroiden
Tag 5
Real-Time
- Voraussetzungen
- Unterschied zwischen Kernel und Userspace | Programmabschnitte | Unterbrechungen | Re-Entrant Code
- Echtzeit-Intro
- Was ist Real-Time? | Was ist harte Echtzeit?
- Echtzeit-Linux
- Hypervisor | Dualer Kernel | Vollständig präemptiver Kernel
- Abgestuftes Echtzeitverhalten
- explizite/implizite Präemptionspunkte | Echtzeit-Präemptionspatch | vollständig präemptiver Kernel | harte Echtzeit-Erweiterungen
- (optional) Kernel patchen/konfigurieren/erstellen | auf dem Zielsystem testen
- Doppelter Kernel
- RTLinux | Real-time application interface (RTAI) | Xenomai
- Xenomai im Vergleich zu RTAI | Adaptive Domain Environment for Operating Systems (ADEOS) | Xenomai-Architektur/SW-Stack/Skins
- (optional) Kernel patchen/konfigurieren/erstellen | auf dem Zielsystem testen
- RTLinux | Real-time application interface (RTAI) | Xenomai
- Messergebnisse: Nicht-Echtzeit-Kernel | Preempt-rt-Kernel | Dualer Kernel (Xenomai)
- Echtzeit-Mythen
Verwandte Kurse
- "Auffrischung zu Embedded Linux & Einführung in das Yocto Projekt (5 Tage)"
- "Embedded Linux Kernel Interna und Gerätetreiber (5 Tage)"
- "Das Yocto-Projekt - Ein gründlicher Überblick (4 Tage)"
- "Einführung in Embedded Linux & Real-Time, Vogelperspektive des Yocto-Projekts (4 Tage)"
- "Einführung in Embedded Linux in Theorie und Praxis - ein Crashkurs (3 Tage)"
- "(Embedded) Linux-Fehlerbehebung (3 Tage)"
- "FreeRTOS in Theorie und Praxis (3 Tage)"