Kursüberblick
Dieses fünftägige Training kombiniert Hands-on Übungen mit Theorie, um grundlegende Konzepte von Embedded GNU/Linux zu illustrieren. Die Hands-on Sessions werden mit freier Software wie dem Yocto Projekt auf einer Zielhardware (z.B. Beagle Bone Black Rev. http://beagleboard.org/BLACK ) durchgeführt. Dies ermöglicht es Ihnen das Kursmaterial mit nach Hause zu nehmen und damit zu arbeiten. Die Konzepte und Befehle, welche notwendig sind um Embedded GNU/Linux effektiv einzusetzen werden durch eine Kombination von Theorie und On the job Training beschrieben. Vom Zeitaufwand her ist es sicherlich sinnvoll nicht zu versuchen alles selbst herauszufinden, sondern von einem erfahrenen Trainer zu lernen. Nehmen Sie dazu noch die Fähigkeit Embedded GNU/Linux bei Ihren eigenen Embedded-Entwicklungsprojekten einzusetzen mit nach Hause.
Zielgruppe
Manager, Projektleiter, Software-, Hardware-, Entwicklungs- und System-Ingenieure, Tester, Administratoren, Techniker und Interessierte an der Technologie, die so schnell wie möglich verstehen wollen wie Embedded GNU/Linux funktioniert. Sie müssen GNU/Linux verwenden oder haben den Luxus zu entscheiden ob es Sinn macht es zu nutzen oder nicht. Sie haben vielleicht schon einmal Embedded GNU/Linux benutzt, aber sind sich nicht ganz sicher, ob Sie alles richtig machen. Sie nutzen derzeit ein anderes Betriebssystem und wollen herausfinden, ob Linux vielleicht geeigneter und/oder kostengünstiger wäre.
Voraussetzungen
- Grundkenntnisse wie man ein GNU/Linux System (z.B. Ubuntu) im User Space verwendet
- Grundkenntnisse mit dem Umgang der Command Line Shell
- Grundkenntnisse von User Space/Anwendungsentwicklungen unter GNU/Linux
- Grundkenntnisse über Embedded Prozessoren und Entwicklungs-Boards
- ...und/oder keine Angst davor das oben erwähnte zu lernen...
Kursziele
Ziel dieses Kurses ist es, einen grundlegenden Überblick über Embedded GNU/Linux zu erhalten und zu sehen wie die Puzzle teile zusammenpassen. Welche Komponenten sind notwendig um ein eingebettetes GNU/Linux System zu bauen, wo bekommt man sie her und wie konfiguriert/baut/installiert man sie? Wo kann man Hilfe bekommen? Wie sieht es mit Software Lizenzen aus? Hands-on Übungen vermitteln Ihnen die notwendige praktische Erfahrung um nach erfolgreichem Abschluss des Trainings Ihre eigenen Embedded GNU/Linux Systeme zu entwickeln.
Kursinhalt
Einführung
- Die Geschichte von Unix/Linux, Lizenzen, Standards, Mit freier Software arbeiten, Die Unix-Philosophie
Gastsystem (Host)
- Arbeiten mit dem Hostrechner#
- Architektur, Shell, Zugriffsrechte, FHS (File hierarchy standard), hard/soft links, real/effective uid/gid, Scheduler, Prozesse/Tasks/Threads, einfache Interprozesskommunikation (IPC), fortgeschrittene IPC (pipes, signals, message queues, semaphores, shared memory, sockets, select, poll), Welche Arten von IPC sollte man vermeiden und warum?
- Einrichtung von Diensten am Hostrechner die bei der Entwicklung von Embedded GNU/Linux Systemen benötigt werden
- Yocto (cross/target Werkzeuge, libraries, packages), terminal emulation, servers (tftp, NFS)
Zielsystem (Target)
- Welche files benötigt man um GNU/Linux auf der Zielhardware laufen zu lassen?
- JTAG/BDI config(optional), u-boot (auschecken, konfigurieren, bauen), kernel (auschecken, konfigurieren, bauen), Rootfilesystem (rootfs), flat device tree, auf der Zielhardware ausführen
- unterschiedliche Root File Systeme
- CRAMFS, ramdisk, MTD, JFFS2, roEXT2, ubi, Vergleich
Zielsystem (Target)
- Debuggen
- einfache Werkzeuge, local/remote, user/kernel, gdb, gdbserver, JTAG/BDI(optional)
- Profiling
- gprof, gcov, oprofile
Echtzeit
- Voraussetzungen
- Interrupts, ablaufinvarianter (reentrant) Code
- Echtzeit GNU/Linux
- explizite/implizite Preemption, Echtzeit Preemption Patch, preemptiver Kernel, harte Echtzeiterweiterungen
- Adeos/Xenomai
- Adeos patch, Xenomai, Kernel auschecken, patchen, konfigurieren, bauen, auf der Zielhardware ausführen
Software Release
- Verwaltung, Entwicklung, Was braucht man um eine alte Software Release auch noch nach ein paar Jahren zu generieren?
Verschiedenes
- getopt(), Endianess,. . .