Embedded Linux: Konzepte und Programmierung (Einführung)#

Eine Einführung in Low(est) Level Linux, anhand von Beispielen und kleinen Übungen.

Dauer#

2 Tage

Equipment#

Ein Raspberry Pi und ein WiFi Router werden vom Trainer gestellt. Die Teilnehmer bringen ihren Arbeitsrechner mit und verbinden sich mit dem Wifi. Über SSH wird sodann am Raspberry eingeloggt und der Spaß kann beginnen.

Einleitender Text/Beschreibung#

Linux ist ein Betriebssystem aus der Unix-Familie - eine Reihe von starken Konzepten, die seit den 70ern des letzten Jahrhunderts existieren, den Kern eines “General Purpose OS” bilden, und bis heute gehalten haben. Für die Entwicklung von Applikationen ist es zentral, diese Konzepte zu verstehen und anwenden zu können.

Die Flexibilität von Linux ermöglicht eine Anpassung des Betriebssystems an verschiedene Einsatzszenarien (Desktop, Supercomputer, Telefon …). Ziel dieses Kurses ist, zu lernen, wie Linux als Embedded Realtime OS verwendet werden kann. Die Teilnehmer bekommen sowohl einen Überblick über die vielfältigen Hardwareschnittstellen, die im Embedded-Bereich Einsatz finden, als auch ein Gefühl dafür, was es bedeutet, realtimefähig zu sein.

Viele Strecken des Kurses werden nicht klassisch programmierend in C zugebracht. Das Kernziel des Kurses ist, ein Verständnis für das Betriebssystem zu vermitteln – dafür langt die Commandline allemal, zumal viele Dienstprogramme wie zum Beispiel Debuggingtools als getrennte Befehle verfügbar sind.

Ziel der Weiterbildung und Nutzen#

  • Linux verstehen: wer mehr weiss, kann mehr machen

  • Eine Idee davon bekommen, wie eine Embedded Applikation „auf der grünen Wiese“ entsteht

  • Eine Idee davon bekommen, wie man eine bestehende Applikation von einem anderen Embedded OS (vxWorks, FreeRTOS, Zephyr – you name it) nach Linux portiert

  • Entwickeln sicherer Software: Speicherschutzverletzungen, oder „Was ist der Unterschied zwischen Prozess und Thread?“

  • Entwickeln sicherer Software: Berechtigungen (Permissions), und wie setzt man diese ein, um sich nicht selbst in den Fuß zu schießen? Speziell: warum sollte man darauf achten, dass Prozesse nicht als Root (Administrator) laufen?

Teilnehmerkreis#

  • Embedded Softwareentwickler, die sich schon lange fragen, warum Features eines “normalen” Betriebssystems, wie z.B. Multiprocessing, TCP/IP, Dateisysteme, ihnen versagt bleiben oder teuer erkauft werden müssen.

  • Elektronikingenieure, die mit Softwareentwicklern zusammenarbeiten und deren Welt verstehen wollen

  • Systemarchitekten, die die Eckpunkte für beide vorangegangenen Gruppen definieren

Inhalte#

Einführung in SSH und die Shell

  • Commandline Basics

  • Standard Commands wie ls, cp, mv, find, cat, less, grep, …

  • Pipe und IO Redirection

Filesystem

  • Files, Directories, Device Files (Hardwareschnittstellen), und Pfade

  • Permissions

Prozesse und Scheduling

  • Virtuelles Memory, und Shared Memory

  • Credentials eines Prozesses, und der Zusammenhang mit Filesystem Permissions

  • System Calls und Signale

  • Scheduling und Realtime

  • Wartebedingungen: was heisst „ein Prozess ist blockiert?“

  • Und Multithreading?

  • Tools: ps, top, strace, valgrind, …

Der Linux Kernel

  • Kernel selber bauen; z.B. “Was muss ich machen, um harte Realtimefähigkeiten zu erhalten?”, oder “Was kann ich weglassen, um mein Kernelimage möglichst klein zu kriegen?”

  • Driver, und ladbare Module

  • Kernel Commandline

  • Devicetree

Hardware-Schnittstellen Überblick

  • GPIO

  • I2C

  • SPI

  • CAN-Bus

  • UART

Trainingsmethoden#

  • Weblinks (aka Folien) als strukturelles Material

  • Didaktische Live-Demos des Trainers am Gerät

  • Praktische Übungen

Veranstaltungsleiter/Referenten#

Dipl.Ing. Jörg Faschingbauer

Angaben zum Veranstaltungsleiter/Referenten für die Vermarktung der Veranstaltung#

  • Programmierer seit ca. 40 Jahren, davon 35 in Linux

  • Seit ca. 20 Jahren selbstständig, davor Dienstnehmer (Programmierer, Architekt, Teamleiter) in verschiedenen Firmen

  • Softwarearchitekt

  • C++ Experte (sofern dies möglich ist)

  • Python Experte für alles, was systemnah ist

Kommunikationsdaten Veranstaltungsleiter/Referenten#

DI Jörg Faschingbauer
Faschingbauer Training und Consulting
Kiesgasse 5
A-8041 Graz
+43 664 5783814
jf@faschingbauer.co.at

Keywords#

  • Linux

  • Embedded

  • Systemprogrammierung