Target group
- Manager
- Projektmanager
- Software-, Hardware-, Entwicklungs-, Systemingenieure
- Tester
- Administratoren
- Techniker
Sie müssen GNU/Linux verwenden oder Sie haben den Luxus zu entscheiden, ob es sinnvoll ist, es zu benutzen oder nicht. Vielleicht haben Sie bereits versucht, Embedded GNU/Linux zu verwenden, sind sich aber nicht sicher, ob Sie alles richtig gemacht haben. Sie verwenden derzeit ein anderes Betriebssystem und möchten herausfinden, ob GNU/Linux besser und/oder billiger ist.
Previous knowledge
- Grundlegende Vertrautheit mit der Verwendung eines GNU/Linux-Systems (z.B. Ubuntu) als Endbenutzer im user space
- Grundlegende Vertrautheit mit einer Befehlszeilen-Shell
- Grundkenntnisse der Programmierung von User-Space Anwendungsentwicklung mit GNU/Linux
- Grundkenntnisse zu Embedded-Prozessoren und Entwicklungsboards
- Mittelmäßige Programmierkenntnisse in der Sprache C
Lernziele
Vermittlung der Grundlagen von Embedded GNU/Linux und vor allem wie die vielen Puzzlesteine zusammen gesetzt werden sollten.
- Welche Komponenten werden benötigt, um ein
Embedded-GNU/Linux-System zu erstellen? - Woher bekommt man sie?
- Wie werden sie konfiguriert/gebaut/installiert?
- Wo kann man Hilfe bekommen?
- Was ist mit diesen Softwarelizenzen?
- Praktische Übungen vermitteln Ihnen die notwendige praktische Erfahrung, um nach erfolgreichem Abschluss dieses Trainings Ihre eigenen eingebetteten GNU/Linux-Systeme zu entwickeln.
Dieser fünftägige Trainingskurs beinhaltet praktische Übungen auf der (z.B. phyBOARD-Mira i.MX 6 Quad – Full Featured) kombiniert mit Anleitung zur Veranschaulichung der Konzepte von Embedded GNU/Linux.
Er wurde entwickelt, um Sie schnell auf den neuesten Stand zu bringen. Die Philosophie, Konzepte und Befehle, die notwendig sind, um GNU/Linux effektiv zu nutzen, werden durch eine Kombination von Theorie und Praxis beschrieben.
Erfinden Sie das Rad nicht neu, sondern lernen Sie von einem erfahrenen Trainer und bringen Sie das Wissen über GNU/Linux und die Fähigkeit, es effektiv in Ihr eigenes Embedded-Entwicklungsprojekt zu integrieren, mit nach Hause.
Program content
- Introduction
- Geschichte von Unix/Linux
- Lizenzierung
- Standards
- Mit freier Software arbeiten
- Spelunken (Code lesen)
- Unix-Philosophie
- Host Spielplatz
- Architektur
- Shell
- FHS (file hierarchy standard)
- Geräte, Daemon, Booten, Program Sections, statische/shared Bibliotheken
- Berechtigungen 3] Zugriffskontrolle, Ändern von Berechtigungen, umask
- harte/weiche Links
- echte/effektive uid/gid
- Prozess/Interprozesskommunikation
- IPC-Einführung
- Unix/Linux-Architektur
- Was ist ein Betriebssystem?
- Was ist ein Scheduler?
- Linux-Scheduler
- Linux-Prioritäten
- Linux-Scheduler(s)
- Linux Scheduling Klassen
- Prozesse/Tasks/Threads
- errno
- fork()
- Prozessbeendigung
- Prozesszustände
- Zombies
- Mehr über Prozesse
- Sehen wir uns einen Prozess an
- Einfache Interprozesskommunikation
- Shell-Umleitung
- Shelling out
- temporäre Dateien
- Interprozesskommunikation generisch
- Interprozesskommunikation
- Nachrichtenübergabe(message passing) im Vergleich zu gemeinsam genutzten Speicher(shared memory)
- Fortgeschrittene Interprozesskommunikation
- Pipes
- Signale
- Unterbrochene System Calls
- POSIX.4 Nachrichtenwarteschlangen (Message Queues)
- Semaphoren Einführung
- Mutex
- Semaphoren
- gemeinsam genutzten Speicher(Shared Memory)
- Sockets
- select/poll
- self-pipe Trick
- Andere Interprozesskommunikations-Mechanismen
- Interprozesskommunikations-Techniken die man vermeiden sollte
- Besonderheiten an Eingebetteten Systemen
- Introduction
- Portierbarkeit
- Bauen
- Cross/Native Toolchain
- Toolchains
- C-Bibliotheken
- glibc, uclibc, eglibc, musl, others
- Shared Bibliotheken kleiner machen
- Eval Board
- Eval Board
- GNU/Linux auf einem PC booten
- GNU / Linux auf einem eingebetteten System booten
- Bootsequenz
- SD-Kartenpartitionen
- Was man so braucht
- Host
- Werkzeugkasten
- Das Yocto-Projekt
- Das Yocto SDK installieren
- SD-Karte
- screen/byobu
- Minicom
- TFTP-Server
- Root file Systeme
- NFS-Server
- Target
- U-Boot
- Das U-Boot
- U-Boot: Scripting
- U-Boot: Schickes Zeug
- U-Boot: Spash Screen
- U-Boot: U-Boot-Umgebung von Linux
- U-Boot: Post mortem
- U-Boot: Automatisches SW-Update
- U-Boot: Wie kann man selbst zur Entwicklung beitragen?
- U-Boot: Runterladen/Konfigurieren/Bauen/Installieren
- U-Boot: Befehle
- Flat device tree
- Was ist ein flat device tree?
- Device tree compiler
- Beispiele/Dokumentation
- Linux kernel
- Runterladen
- Kbuild
- Multi Platform Unterstützung
- Konfigurieren/Bauen/Installieren
- Was ist uImage?
- Den fdt bauen
- In-tree Kernel Module bauen/installieren
- Root File Systeme
- Verfügbare Root-File-Systeme
- Ein minimales Root-File-System vorbereiten
- TFTP-Server
- Root-File-System auf Ramdisk
- mtd
- Root-File-System auf jffs2
- mtdparts
- Root-File-System auf cramfs
- Root-File-System auf ro ext2
- Was auf der Zielhardware andwendbar ist bauen und ausführen
- Vergleich von Root-File-Systemen
- Anpassungen
- Das System hängt
- pseudo tty
- getty
- runlevel
- Statische IP
- NFS mounten
- SSH-Server
- User Space Fehlersuche/-behebung
- Introduction
- Was ist ein Fehler?
- Arten von Fehlern
- Debugging-Strategie
- Einfache Werkzeuge
- lsof, ltrace, strace,…
- procfs, top, netstat, syslog,…
- Fortgeschrittene Werkzeuge
- Was ist ein Debugger?
- gdb
- gdb am Host
- gdb am Zielsystem
- gdb Remote-Debugging
- gdb Remote-Debugging mit GUI
- User Space Profiling/Tracing
- Profiling/Tracing Werkzeuge
- strace
- system timers
- gprof
- gcov
- code optimization
- oprofile
- perf
- top und ähnliche Werkzeuge
- top
- latencytop
- powertop
- powerdebug
- crash
- Echtzeit
- Voraussetzungen
- Kernel im Vergleich zu User Space
- Toolchain
- Program Sections
- Interrupts
- Reentrant Code
- Echtzeit Einführung
- Time/Utility Funktionen
- Was ist Echtzeit?
- Determinismus
- Was ist harte Echtzeit?
- Echtzeit-Linux
- Hypervisor
- Dual kernel
- Fully preemtive kernel
- “Grade/Stufen” des Echtzeitverhaltens
- 0 Vanilla Linux Kernel
- 1 explizite Präemptions-Punkte
- 2 implizite Präemptions-Punkte
- 3 Echtzeit Präemptions Patch
- vollständig präemptiver Kernel
- harte Echtzeiterweiterungen
- Adeos/Xenomai
- Adeos Patch
- Xenomai
- patchen/konfigurieren/Kernel bauen
- Auf der Zielhardware ausführen
- Echtzeit-Mythen
- Echtzeit muss schnell sein
- rate monotonisch
- universelle Methode
- scheduling Theorie
- Echtzeitbetriebssystem im Vergleich zu Linux
- Neue Hardware
- Dual-Kernel im Vergleich zu Preempt-rt
- Zukunftsaussichten Dual-Kernel
- Zukunftsaussichten Preempt-rt
Course language
Dieser Kurs wird auf Englisch gehalten.