Tagungsband Embedded Software Engineering Kongress 2024
Expertenwissen aus rund 90 Fachvorträgen und Anwendungsberichten
Der ESE Kongress adressiert den großen Wissensbedarf der Embedded-Software-Entwickler mit wichtigen Grundlagen, aktuellem Spezialwissen und realen Anwendungsbeispielen. Er hilft, moderne Software-Engineering-Ansätze auch für Embedded-Systeme nutzbar zu machen. Vor dem Hintergrund, dass in allen Anwendungsfeldern immer mehr Wertschöpfung durch Software geschieht und die Komplexität stetig steigt, gibt der ESE Kongress einen hochwertigen Überblick über den Stand der Technik und wichtige Leitlinien für die effiziente Umsetzung von Softwareprojekten. Der Kongress bietet dazu einen übergreifenden, einzigartigen Mix von praxisorientierten Fachvorträgen über innovative Entwicklungen für eingebettete Systeme inkl. moderner Prozesse bis hin zu neuen Management-Ansätzen und softwarebasierten Geschäftsmodellen. Zugleich ist er wichtiger Treffpunkt für den direkten Austausch zwischen den vielen industriellen Anwendern mit erfahrenen Embedded-Experten und führenden Tool-Anbietern.
Der daraus hervorgehende digitale Tagungsband beinhaltet die meisten Vorträge der Referent:innen.
Tagungsband Embedded Software Engineering Kongress 2021
Expertenwissen aus 100 Fachvorträgen und Anwendungsbeispielen
Der ESE Kongress trifft auf einen dringenden Bedarf: Er hilft, moderne Software-Engineering-Ansätze auch für den Embedded-System-Entwurf nutzbar zu machen. Vor dem Hintergrund, dass immer mehr Wertschöpfung durch Software geschieht und zugleich durch Software-Updates over-the-air auch neue Geschäftsmodelle beispielsweise in der Automobilbranche entstehen, ist eine Konferenz, die schnell einen hochwertigen Überblick über den Stand der Praxis gibt, wichtiger denn je. Der Embedded Software Engineering Kongress bietet dazu einen übergreifenden, einzigartigen Mix und Austausch von anwendungsorientierten Fachthemen über innovative Entwicklungen für eingebettete Systeme und neue Management-Ansätze.
Tagungsband Embedded Software Engineering Kongress 2022
Expertenwissen aus 96 Fachvorträgen und Anwendungsberichten
Der ESE Kongress adressiert den großen Wissensbedarf der Embedded-Software-Entwickler mit wichtigen Grundlagen, aktuellem Spezialwissen und realen Anwendungsbeispielen. Er hilft, moderne Software-Engineering-Ansätze auch für den Embedded-Systeme nutzbar zu machen. Vor dem Hintergrund, dass in allen Anwendungsfeldern immer mehr Wertschöpfung durch Software geschieht und die Komplexität stetig steigt, gibt der ESE Kongress einen hochwertigen Überblick über den Stand der Technik und wichtige Leitlinien für die effiziente Umsetzung von Softwareprojekten. Der Kongress bietet dazu einen übergreifenden, einzigartigen Mix von praxisorientierten Fachvorträgen über innovative Entwicklungen für eingebettete Systeme inkl. moderner Prozesse bis hin zu neuen Management-Ansätzen und softwarebasierten Geschäftsmodellen. Zugleich ist er wichtiger Treffpunkt für den direkten Austausch zwischen den vielen industriellen Anwendern mit erfahrenen Embedded-Experten und führenden Tool-Anbietern.
Tagungsband Embedded Software Engineering Kongress 2023
Expertenwissen aus 95 Fachvorträgen und Anwendungsberichten
Der ESE Kongress adressiert den großen Wissensbedarf der Embedded-Software-Entwickler mit wichtigen Grundlagen, aktuellem Spezialwissen und realen Anwendungsbeispielen. Er hilft, moderne Software-Engineering-Ansätze auch für Embedded-Systeme nutzbar zu machen. Vor dem Hintergrund, dass in allen Anwendungsfeldern immer mehr Wertschöpfung durch Software geschieht und die Komplexität stetig steigt, gibt der ESE Kongress einen hochwertigen Überblick über den Stand der Technik und wichtige Leitlinien für die effiziente Umsetzung von Softwareprojekten. Der Kongress bietet dazu einen übergreifenden, einzigartigen Mix von praxisorientierten Fachvorträgen über innovative Entwicklungen für eingebettete Systeme inkl. moderner Prozesse bis hin zu neuen Management-Ansätzen und softwarebasierten Geschäftsmodellen. Zugleich ist er wichtiger Treffpunkt für den direkten Austausch zwischen den vielen industriellen Anwendern mit erfahrenen Embedded-Experten und führenden Tool-Anbietern.
Der daraus hervorgehende digitale Tagungsband beinhaltet die meisten Vorträge der Referent:innen.
Warum modernes C++ die Antwort auf die Herausforderung der embedded Softwareentwicklung ist
Embedded Programmierung ist eine der Domänen für modernes C++. Daher verwundert das Zitat von Bjarne Stroustrup zu modernem C++ nicht: „… make C++ even better for embedded system programming…„. C++ bietet zum einen den Durchgriff auf die Hardware, zum anderen Abstraktion, um komplexe Systeme zu entwickeln. Insbesondere mit modernem C++ erhält C++ noch mehr mächtige Features für die embedded Programmierung. Das sind Features wie die Move-Semantik, die es erlaubt, große Objekte billig zu verschieben statt teuer zu kopieren, Features wie constexpr-Funktionen, die es ermöglichen, teure Berechnungen auf die Compilezeit zu verlagern oder Features wie der neue Container std::array, der das Beste aus std::vector und dem C-Array vereint.
Zunächst vermittelt Ihnen der Referent die notwendige Theorie, die Sie dann in praktischen Übungen direkt anwenden. Die besonderen C++ Features für die embedded Softwareentwicklung werden vom Referenten in den Kontext der Softwareentwicklung mit modernem C++ eingebunden. Zu allen Übungen erhalten Sie natürlich die Musterlösungen. Bitte beachten Sie, dass Sie für das Seminar einen Laptop benötigen, auf dem ein aktueller C++ Compiler (mind. C++11) installiert ist.
Agenda
1. Seminartag: Sicherheitskritische Systeme
Vereinheitlichte Initialisierung mit {} überall anwenden und dadurch die heimliche Verengung von Datentypen vermeiden
Automatische Typableitung kennen lernen um Refaktoring von Code zu unterstützen und Variablen immer zu initialisieren
Aufzählungen mit Gültigkeitsbereich als typsichere Variante zu klassischen Aufzählungen kennen lernen
Mit nullptr Zeiger die Mehrdeutigkeiten der Zahl 0 und dem Makro NULL verhindern
Benutzerdefinierte Literale einsetzen um Zahlen mit Einheiten zu verwenden
Zusicherungen an den Code mit static_assert vom Compiler prüfen lassen
2. Seminartag: Hohe Performanz
Selbst optimierenden Code mit Type-Traits implementieren
Konstante Ausdrücke mit constexpr verwenden um teuere Berechnung auf die Compilezeit zu verschieben
Durch den Umstieg von geordnete auf ungeordnete assoziative Container die Applikation deutlich beschleunigen
Templates
Vermittlung der Grundlagen
Vorteile von Templates vorstellen
Vergleich von statischem Polymorphismus (Templates) mit dynamischen Polymorphismus (Objekt-Orientierung)
Eingeschränkte Ressourcen
Move-Semantik einsetzen um
Teures Kopieren durch billiges Verschieben zu ersetzen
Daten nur dann zu erzeugen, wenn es unbedingt notwendig ist
Daten zu verschieben, die nicht kopiert werden können
Perfekt Forwarding um Funktions-Argumente identisch weiterzureichen
Speicherverwaltung
Den Einsatz von new und delete besser verstehen
placement new für besondere Einsatzzwecke verwenden
Speicherlöcher durch placement new finden
Den neuen Container std::array kennen lernen, der die Speicher- und Laufzeitcharakteristik des C-Arrays mit dem Interface des C++-Vektors verbindet
Smart Pointer
Exklusive Besitzverhältnisse mit std::unique_ptr
Geteilte Besitzverhältnisse mit std::shared_ptr
Zeitweise Besitzverhältnisse mit std::weak_ptr
Performanz- und Ressourcenvergleich der Smart Pointer
3. Seminartag: Mehrere Aufgaben gleichzeitig
Das Speichermodell
Sequenzielle Konsistenz verstehen
Atomare Datentypen kennen lernen
Threads
Erzeugen eines Threads
Lebenszeit eines Threads
Datenübergabe an einen Thread
Gemeinsame von Threads verwendete Daten
Schutz mit Mutexen
Schutz mit Locks
Daten thread-sicher initialisieren
Konstanten Ausdrücken
Die Funktion std::call_once und dem Flag std::once_flag
Statischen Variablen
Thread lokale Variablen
Bedingungsvariablen
Synchronisation von Threads
Gefahren von Bedingungsvariablen
Task
std::async
std::packaged_task
std::promise und std::future
Ziele
In dem Seminar erlernen Sie die Vorteile von modernem C++ in der embedded Programmierung. Dabei lernen Sie zuerst die Anforderungen an die embedded Programmierung und anschließend die Antworten darauf in C++ . Diese sind:
Sicherheitskritische Systeme
Hohe Performanz
Eingeschränkte Ressourcen
Mehrere Aufgaben gleichzeitig
Zielgruppe
Jeder, der über Grundkenntnisse in C++ verfügt und diese mit modernem C++ erweitern möchte.
Der Leitfaden für Programmierer zu modernem C++
„C++11 feels like a new language“. Dies berühmte Zitat von Bjarne Stroustrup, dem Vater von C++, bringt es auf den Punkt. Nicht nur der Sprachumfang hat sich von 800 Seiten fast verdoppelt. Auch die Art und Weise, wie Sie in modernes C++ programmieren ist fundamental anders. In dem Seminar lernen Sie, was modernes C++ (C++11 und C++14) auszeichnet. Sie werden die Veränderungen der Kernsprache, die neue Multithreading-Fähigkeit von C++ und die vielen neuen Bibliotheken kennen lernen.
Zu jedem Thema wird zuerst die Theorie vermittelt, anschließend wird das Gelernte in praktischen Übungen angewendet und gefestigt. Zu allen Übungen erhalten die Teilnehmer Musterlösungen des Referenten. Bitte beachten Sie, dass Sie für das Seminar einen Laptop benötigen, auf dem ein aktueller C++ Compiler (mind. C++11) installiert ist.
Agenda
1. Seminartag
Neue Techniken
Einheitliche Initialisierung
Templates (generische Programmierung)
Funktions- und Klassentemplates §3.1+§3.3
Initialisierer-Listen §2.3.3
Variadische Templates §3.10
Spezialisierung §3.6
Typdeduktion
Move-Semantik und Vorwärtsreferenzen §2.3.5
Template-Argumente §3.1.2
2. Seminartag
Typdeduktion
auto und decltype §3.4.1
Deduzierter Rückgabetyp (C++14) §3.1.6
Neue Techniken
Einheitliche Initialisierung
Funktoren §3.8
Lambdas
Grundlagen §3.9
Captures (C++14) §3.9.1-4
Generische Lambdas (C++14) §3.9.5
std::function §4.4.2
3. Seminartag
Nebenläufigkeit (Einführung)
Parallele Ausführung
Daten teilen und synchronisieren
Meta-Programmierung
Den Compiler rechnen lassen §5.1
Typ-Informationen bereitstellen §5.2.1
static_assert §5.2.5
Neue Techniken
Unique- und Shared-Pointers §1.8.3.2+§2.4.2.5
Range-basierte Schleifen §1.4.4.3
STL-Übersicht
Iteratorkonzept §4.1.2
Container §4.1.3
Algorithmen §4.1.4
Optionale Themen
Templates (generische Programmierung)
Faltung von Ausdrücken (C++17)
Abhängige Typen (optional)
Typreduktion
Mehrfachreduktion (C++17)
Deduktion von Klassenparametern (C++17)
Neue Techniken
Nutzerdefinierte Literale
Meta-Programmierung
Compile-Time-if (C++17)
Expression Templates
Ziele
Ziel des Seminar ist es, dass die Teilnehmer alle Erweiterungen und Neuerungen von C++11 und C++14 kennen lernen, modernes C++ als das bessere C++ verstehen und einsetzen und vor allem das moderne C++ effizient können.
Zielgruppe
Jeder, der über Grundkenntnisse in C++ verfügt und diese mit modernem C++ erweitern möchte.
Technisches und juristisches Kombi-Seminar Linux
Mit dem unvermeidlichen Einsatz von Free and Open Source Software (FOSS) in industriellen Systemen haben sich die rechtlichen Anforderungen geändert. Anstatt Peer-to-Peer-Verträge mit Drittanbietern auszuhandeln, ist Software unter einer FOSS-Lizenz für jedermann verfügbar und darf unter der Bedingung, dass alle Lizenzverpflichtungen eingehalten werden, frei kopiert und verbreitet werden. Diese Verpflichtungen können Informations-, Offenlegungs- und Lizenzierungspflichten umfassen. Ist die technische Entwicklung eines eingebetteten Linux-Systems erst einmal abgeschlossen, kann es schwierig werden, diese Verpflichtungen nachträglich zu erfüllen, und erfordert definitiv mehr Aufwand. Viele der für die Lizenzkonformität erforderlichen Verfahren sind bereits Teil des Entwicklungsprozesses. Daher liegt es auf der Hand, dass die Integration von Lizenzkonformitätsaufgaben in die Entwicklungszyklen von Anfang an die Erstellung funktionaler und konformer Systeme, die alle modernen Softwarequalitätsstandards erfüllen, erleichtert.
Agenda
1. Seminartag: Erstellung eines Embedded-Linux-Systems
Andreas Klinger
Aufbau von Embedded-Linux-Systemen
Cross-Development-Toolchain
buildroot als Buildsystem
Bootloader – barebox konfigurieren und erstellen
Device-Tree – Aufbau und Verwendung
2. Seminartag: Open Source Compliance und Anwendung auf das Embedded-System
Jan Altenberg:
Crashkurs Open-Source Compliance
Caren Kresse:
Lizenzpflichten-Checklisten erstellen
Andreas Klinger
Linux-Kernel patchen, konfigurieren und erstellen
Root-Filesystem – Softwareauswahl für Entwicklung und produktives System
3. Seminartag: Individuelle Anpassungen des Systems, Erfüllung der Lizenzpflichten und Einführung in Scannin
Andreas Klinger
Integration eines eigenen Treibers
Integration einer proprietären Applikation
Automatisierung des Builds mit External-Directory
Erfüllung der Lizenzpflichten
Caren Kresse:
Zulassungsprozess für neu hinzugefügte Komponente
Jan Altenberg:
Einführung in informatives Scanning
4. Seminartag: Lizenz-Scanning und Audit des Produkts
Jan Altenberg:
Praktische Übungen mit ScanCode und FOSSology
Caren Kresse:
License Compliance Audit (inkl. Linuxkernel Delta-Scan)
Ziele
Die Teilnehmer dieses Workshops lernen, ein Embedded-Linux-System von Grund auf aufzusetzen und parallel dazu die lizenzkonforme Distribution vorzubereiten.
Zielgruppe
Der Workshop richtet sich an alle, die praktische Erfahrungen bei der Erstellung eines Embedded Linux Systems von Grund auf sammeln und lernen wollen, welche Maßnahmen parallel zur Entwicklung notwendig sind, um das System lizenzkonform zu machen.
Technische Ausstattung
Alle Teilnehmenden erhalten ein Embedded Board, mit dem sie die im Workshop gezeigten Anweisungen sofort in die Praxis umsetzen können. Erwartet werden ein Linux-Rechner mit USB- und LAN-Anschluss und Grundkenntnisse in der Unix-Shell. Details zu den benötigten Programmen werden im Vorfeld bekannt gegeben.
Komplexe Aufgabenstellung datenbasiert lösen statt konventional zu codieren
Praktisch jede IoT-Anwendung benötigt in Zukunft auch Datenanalysefunktionen. Einfache Anforderungsprofile mit wenigen Sensordaten lassen sich in der Regel als Embedded-Softwarelösung konventionell in C/C++ kodieren. Mit komplexen Sensordaten, wie z. B. mehrdimensionalen Beschleunigungs-, Audio- und Bilddaten aus Kamerasensoren funktioniert dieser Lösungsweg nicht mehr. Hier bietet sich das maschinelle Lernen (ML) aus dem Bereich der künstlichen Intelligenz als Alternative an. ML-Algorithmen und Modelle lassen sich sowohl als Service in der Cloud nutzen als auch auf Embedded Systemen implementieren. Das Seminar liefert eine Einführung und zeigt auf, wie sich Sensordaten auf einem typischen Embedded System mittlerer Leistungsklasse mit ML-Algorithmen in Echtzeit analysieren lassen.
Zum Seminar gehört ein Embedded-Machine-Learning-Starterkit im Wert von 99,00 €. Weitere Details finden Sie im zugehörigen PDF-Dokument.
Agenda
ML-Einführung (Datenstrukturen, Supervised/Unsupervised ML)
Überblick zu geeigneten ML-Algorithmen (von KNN bis zum neuronalen Netzwerk)
Werkzeuge und Vorgehensweisen in Embedded-ML-Projekten
Hands-on-Beispiel: ML mit Sensordaten auf einem Embedded System selbst ausprobieren
Ziele
In dem Seminar lernen Sie die Übersicht zu IoT-Strukturen und IoT-Datenanalysen kennen. Sie bekommen eine Einführung in Machine-Learning-Algorithmen, Datenstrukturen, Trainingsdaten, Testdaten, Modellbildung, Modellgenauigkeit und den Modelleinsatz in einer Inferenzmaschine für Embedded Systeme. Sie kennen anschließend CRISP-DM, Machine-Learning-Werkzeuge und den Weg zum Ziel in Projekten.
Zielgruppe
Das Seminar richtet sich an Entwickler, Programmierer und Ingenieure.
Embedded-Linux-Woche für Fortgeschrittene: Vom Embedded-Linux-User zum systemnahen Echtzeit-Entwickler
Die Linux-Systemprogrammierung ist ein wichtiger Bereich für Entwickler, die robuste, effiziente und zuverlässige Software auf Systemebene erstellen möchten. Um leistungsstarke und ressourcenschonende Anwendungen zu entwickeln und dabei effizient mit Ressourcen wie Speicher, Prozessoren und Geräten umzugehen, müssen Systemprogrammierer den Linux-Kernel und das virtuelle Dateisystem verstehen. Syscalls sind dabei eine entscheidende Schnittstelle zwischen Anwendungen und dem Kernel. Sie ermöglichen den Zugriff auf Kernel-Funktionen, das Lesen und Schreiben von Dateien, die Verwaltung von Prozessen und die Nutzung anderer Betriebssystemdienste.Für Anwendungen mit Echtzeitanforderungen, wie beispielsweise Steuerungssysteme oder Robotik, ist es wichtig, Kenntnisse in Echtzeit- und Multithreading-Programmierung zu besitzen. Dabei geht es um Echtzeit-Tasks, Prioritäten und verschiedene Scheduling-Modelle. Beim Debugging und der Fehlerbehebung müssen Systemprogrammierer Signale, Core-Dumps und Remote-Debugging verwenden können – insbesondere bei komplexen, systemnahen Problemen. Zudem erfordert die Interaktion mit Hardware spezielle Kenntnisse, um auf Geräte wie GPIOs, I2C- und SPI-Busse zuzugreifen und mit ihnen zu kommunizieren.
Der Vortragstag widmet sich ganz dem Thema Echtzeit-Linux. Behandelt werden die Fragen, wie der Echtzeit-Kernel mit PREEMPT_RT funktioniert und wie auftretende Latenzen eingegrenzt werden können.Bringen Sie Ihre Fragen mit: Nutzen Sie die Chance, und stellen Sie den Referenten die Fragen, die Sie in Ihrem Projekt oder in Ihrer Abteilung beschäftigen.
Agenda
1. Tag: Seminartag: Aufbau und Verwendung des Linux-KernelReferent: Andreas Klinger
Aufbau des Linux-Kernels, Virtuelles Dateisystem
Funktionsweise von Syscalls
Verwendung von Dateien und Device-Nodes
Erstellung eigener Programme
Blockierendes Verhalten von read und write
Memory-Mapping
2. Tag: Seminartag: Prozessverwaltung und TracingReferent: Andreas Klinger
Prozesse und deren Verwaltung
Zombies
Scheduling-Modell
Realtime- und Deadline-Tasks
CPU-Affinitäten und CPU-Sets
Tracing von Interrupt- und Scheduling-Events
3. Tag: Vortragstag: Echtzeit-Linux und QualitätssicherungReferenten: Alexander Bähr, Jan Altenberg
Historischer Überblick zu Echtzeit-Linux
Das Linux Foundation RTL Collaborative Project
Linux und PREEMPT_RT: Überblick, Installation und Konfiguration
Bestimmung der Echtzeiteigenschaften eines Linuxsystems
Qualitätssicherung: Vorstellung der OSADL QA-Farm
Methoden zur Analyse unerwünschter Systemlatenzen: „Latency Fighting“
4. Tag: Seminartag: Interprozesskommunikation und DebuggingReferent: Andreas Klinger
Signale
Core-Dumps und deren Verwendung
Remote-Debugging
Interprozesskommunikation
Shared-Memory, Semaphoren, Message-Queues
Timer
Multithreading
Mutexe und Barriers
5. Tag: Seminartag: Ressourcenverwaltung und Hardware-AnbindungReferent: Andreas Klinger
Cgroups
Capabilities
Verwendung von Hardware
GPIOs
I2C- und SPI-Bus
Anbindung von Sensoren mit Industrial-IO
Ziele
Verständnis des Betriebssystemaufbaus
Verwendung der Schnittstellen zum Betriebssystem
Erstellung von systemnahen Programmen
Diagnose des Programmverhaltens
Tracing von Laufzeitproblemen
Funktionsweise von PREEMPT_RT
Konfiguration und Anwendung von PREEMPT_RT
Bestimmung der Echtzeiteigenschaften
Analyse von Systemlatenzen auf einem Linux-System mit PREEMPT_RT
Zielgruppe
Entwickler, die systemnahe Programme unter Linux erstellen möchten
Entwickler und in deren Umfeld Beschäftigte (Tester, QA etc.), die erfahren möchten, wie der Linux-Kernel funktioniert und welche Schnittstellen das Betriebssystem anbietet
Diagnostizieren von Problemen bei der Entwicklung von Linux-Systemen
Die Entwicklung und Administration von Linux-Systemen, ob im Embedded-Bereich oder auf Standard-Hardware, wird zunehmend herausfordernder. Häufig sehen sich Entwickler mit schwer nachvollziehbaren Fehlern konfrontiert: unklare Kernel-Abstürze, nicht reproduzierbare Fehlfunktionen von Treibern oder unerwartete Signale, die den Systembetrieb stören. Hinzu kommen Probleme in verteilten Systemen, bei denen klassische Debugging-Methoden an ihre Grenzen stoßen. Für die effiziente Fehlerdiagnose und -behebung sind fundierte Kenntnisse der internen Abläufe im Linux-Betriebssystem unerlässlich. Die Vielfalt der verfügbaren Open-Source-Werkzeuge ermöglicht es, tief in das System einzutauchen, erfordert aber ein hohes Maß an Fachwissen, um diese Werkzeuge zielgerichtet einzusetzen. Dieses Seminar bietet genau dieses Know-how: eine praxisnahe Anleitung, um typische Linux-Probleme schnell zu diagnostizieren und nachhaltig zu lösen. Das Seminar „Diagnose von Linux“ richtet sich an Entwickler, Systemingenieure sowie Administratoren, die mit Linux arbeiten und Probleme effizient diagnostizieren und beheben müssen. Der Kurs vermittelt praxisorientierte Techniken und den Einsatz bewährter Open-Source-Werkzeuge, die dabei helfen, Fehlerquellen systematisch einzugrenzen und nachhaltig zu beheben. Vom Umgang mit Core-Dumps über die Analyse von Binärdaten bis hin zur Erkennung von Prioritäts-Inversionen – dieses Seminar bietet universell einsetzbares Wissen für Embedded-Linux und Standard-Linux-Systeme gleichermaßen. Durch die Kombination aus theoretischen Grundlagen und praktischen Übungen lernen Sie, wie Sie effizient Fehler in Linux-Systemen aufspüren und proaktiv vorbeugen können. Werden Sie zum Experten in der Fehlerdiagnose und verbessern Sie nachhaltig die Performance und Zuverlässigkeit Ihrer Linux-Umgebungen.
Agenda
1. Seminartag
procfs, sysfs und debugfs
strace und ltrace
Signalhandling
2. Seminartag
GNU-Debugger gdb, gdbserver
Core-Dumps generieren und auswerten, Anwendung in verteilten Systemen
Logging von unerwarteten Signalen mit backtrace
defensive Entwicklung bezüglich unerwarteter Ereignisse (SEGV, FPE, …)
Kernel-Crashes, Kernel-Oops auswerten
von der Adresse zum Sourcecode: addr2line und objdump
Binärdaten analysieren mit GNU poke
3. Seminartag
ftrace-Framework
trace-cmd und kernelshark
perf
Extended Berkeley Packet Filter (eBPF), ply and bpftrace
Tracing-Events verwenden und erstellen
Benachrichtigungsketten und blockierte Tasks identifizieren
Erkennung von Prioritäts-Inversionen
4. Seminartag
Hardware-Schnittstellen: GPIO, I2C, SPI, MMC
Trace-Marker aus dem Userspace
Welche Treiberfunktion kommuniziert mit meiner Hardware?
Verwendung von Probes: kprobe und uprobe
Informationen direkt aus den Kernel-Subsystemen: I2C-Telegramme
Kernel-Laufzeiten ermitteln: Protokoll-Stack vermessen
Tracing von Userspace-Applikationen mit uftrace
Locking-Probleme aufspüren
Ziele
Diagnostizieren von Problemen bei der Entwicklung von Linux-Systemen
Eingrenzen und Lösen von Problemen mit den Werkzeugen des Betriebssystems sowie gängigen Open-Source-Tools
Universell auf Embeddedals sowie Standard-Linux-Systemen einsetzbares Know-how
Zielgruppe
(Software-)Entwickler, Systemprogrammierer, Systementwickler, Systemingenieure, Administratoren, Tester und Supporter
Voraussetzungen
Sicherheit im Umgang mit der Shell
Gute Programmierkenntnisse in C
Der Linux-Grundlagenkurs bietet eine umfassende Einführung in das Linux-Betriebssystem für Teilnehmer ohne oder mit geringen Vorkenntnissen. Referent und Linux-Experte Andreas Klinger vermittelt Ihnen grundlegende Konzepte sowie essenzielle Fähigkeiten und Kenntnisse, um erfolgreich in der Linux-Umgebung zu arbeiten. Das Seminar behandelt eine breite Palette von Themen, die für Linux-Neulinge von Bedeutung sind, und bietet damit eine solide Grundlage.
Der Kurs "Grundlagen Linux" ist Teil der Embedded-Linux-Woche. Sie können den Grundlagen-Kurs einzeln oder in Kombination mit dem Seminar "Embedded Linux" buchen, das auf dem Grundlagen-Kurs aufbaut. Bei einer kombinierten Buchung sparen Sie über 20 % gegenüber der Einzelbuchung beider Kurse. Der Vortragstag bildet die Schnittmenge beider Kurse und ist in "Grundlagen Linux", "Embedded Linux" sowie der Buchung der ganzen Woche enthalten.
Agenda
1. Seminartag: Linux-GrundlagenReferent: Andreas Klinger
Manual-Pages
Hilfe in der Shell
Aufbau des Linux-Dateisystems
Filesystem-Hierarchie-Standard
Virtuelle Dateisysteme procfs und sysfs
Logausgaben von Linux und dmesg
Mounten
Umgang mit Tarballs
Umgebungsvariablen
Unterschied zwischen Sourcen und Ausführen
Tastaturkürzel
Umleitung, Pipes und Filter
Editoren
Shell-Skripte erstellen
2. Seminartag: Einführung in die ApplikationsentwicklungReferent: Andreas Klinger
Applikationsentwicklung mit der Gnu Compiler Collection und Binutils
Cross-Applikationsentwicklung
Aufbau von Executables
Makefiles
Remote-Debugging mit dem gdb
Post-Mortem-Analyse mit Core-Dumps
Aufzeichnen von Backtraces
Von der Funktion mit Offset zum Sourcecode
Tracing von Syscalls und Fehlersuche mit strace
3. VortragstagBlock I: Open Source (Referentin: Caren Kresse)
Was ist Open Source-Software?
Was hat Open Source mit Open Innovation zu tun?
Die Bedeutung des Urheberrechts beim Einsatz von Open Source-Software
Lizenzrechte und Lizenzpflichten von Open Source-Software
Was ist „Copyleft“? Was bedeutet „Ableitung“ in diesem Zusammenhang?
Block II: Ein juristischer Blick auf Linux (Referent: Dr. Till Jaegee)
Das Open Source Lizenzmodell
Rechtsfolgen bei Lizenzverletzungen und Rechtsprechung dazu
Lizenztypen
Copyleft
GPL, Version 2: Lizenzpflichten
LGPL, Version 2.1: Lizenzpflichten
Complete Corresponding Source Code
Tivoization
FOSS License Compliance – praktische Erfüllung von Lizenzpflichten
Ziele
Aufbau des Betriebssystems verstehen
Den Umgang mit der Shell erlernen
Verständnis für die Funktionsweise von Programmen entwickeln
Eigene Programme erstellen
Probleme bei der Erstellung diagnostizieren
Zielgruppe
Der Kurs richtet sich an Neueinsteiger ohne spezifische Vorkenntnisse in (Embedded-)Linux wie:
IT-Administratoren: Systemadministratoren, Netzwerkadministratoren und andere IT-Fachkräfte, die für die Verwaltung und Wartung von Linux-Servern und -Systemen verantwortlich sind.
Softwareentwickler: Entwickler, die Linux als Entwicklungsplattform nutzen möchten, sei es für Webanwendungen, Datenbanken, eingebettete Systeme oder andere Softwareprojekte.
IT-Supportmitarbeiter: Techniker im IT-Support, Helpdesk-Mitarbeiter und andere Support-Spezialisten, die mit Linux-basierten Systemen und Anwendungen arbeiten oder Benutzer bei Problemen unterstützen.
IT-Consultants: Berater und IT-Experten, die ihre Kunden bei der Planung, Implementierung und Optimierung von IT-Infrastrukturen unterstützen. Linux ist ein wesentlicher Bestandteil vieler Unternehmensumgebungen.
Elektronikingenieure: Personen, die im Bereich der Elektronikentwicklung tätig sind und ihre Fähigkeiten auf die Integration von Linux in Embedded-Systeme erweitern möchten. Dies können Ingenieure sein, die sich mit der Entwicklung von Hardwareplatinen, Mikrocontrollern oder anderen eingebetteten Komponenten beschäftigen.
Systemarchitekten: Personen, die für das Design und die Entwicklung von Embedded-Systemen verantwortlich sind und ein umfassendes Verständnis von Embedded Linux benötigen. Dies können Architekten, Projektleiter oder Technologieverantwortliche sein.
Dieses Seminar bietet Ihnen ein umfangreiches Verständnis für Embedded Linux und wird Ihnen dabei helfen, erfolgreich mit Embedded Linux zu arbeiten und Ihre Projekte voranzutreiben.
Das Seminar "Embedded Linux" ist Teil der Embedded-Linux-Woche und baut auf dem Kurs "Grundlagen Linux" auf. Die Lerninhalte des Grundlagen-Kurses werden für dieses Seminar vorausgesetzt. Sie können die Seminare "Embedded Linux" und "Grundlagen Linux" einzeln oder in Kombination zum Vorteilspreis buchen. Der Vortragstag bildet die Schnittmenge beider Kurse und ist in "Embedded Linux", "Grundlagen Linux" sowie der Buchung der ganzen Woche enthalten.
Agenda
1. VortragstagBlock I: Open Source (Referentin: Caren Kresse)
Was ist Open Source-Software?
Was hat Open Source mit Open Innovation zu tun?
Die Bedeutung des Urheberrechts beim Einsatz von Open Source-Software
Lizenzrechte und Lizenzpflichten von Open Source-Software
Was ist „Copyleft“? Was bedeutet „Ableitung“ in diesem Zusammenhang?
Block II: Ein juristischer Blick auf Linux (Referent: Dr. Till Jaegee)
Das Open Source Lizenzmodell
Rechtsfolgen bei Lizenzverletzungen und Rechtsprechung dazu
Lizenztypen
Copyleft
GPL, Version 2: Lizenzpflichten
LGPL, Version 2.1: Lizenzpflichten
Complete Corresponding Source Code
Tivoization
FOSS License Compliance – praktische Erfüllung von Lizenzpflichten
2. Seminartag: Embedded Linux – Teil IReferent: Andreas Klinger
Komponenten von Embedded-Linux-Systemen
Bootvorgang von Linux
Funktionsweise von Buildsystemen anhand von Buildroot
Bootloader - barebox konfigurieren und erstellen
Erstellung eines Flashes für Target-Board
Device-Tree - Aufbau und Verwendung
Erweiterung des Device-Trees
Analyse des Device-Trees im laufenden Linux-System
Linux-Kernel patchen, konfigurieren und erstellen
3. Seminartag: Embedded Linux – Teil IIReferent: Andreas Klinger
Root-Filesystem erstellen
Softwareauswahl für Entwicklungszwecke
Minimalauswahl für das produktive System
Installation von Kernel-Modulen im Root-Filesystem
Integration eines eigenen Treibers
Integration einer proprietären Applikation
Automatisierung des Builds mit External-Directory
Ziele
Bootloader verstehen
Device-Tree anpassen
Kernel konfigurieren und erstellen
Root-Filesystem verstehen
Zielgruppe
Der Kurs richtet sich insbesondere an:
Softwareentwickler: Personen, die bereits Erfahrung mit der Programmierung haben und ihr Wissen auf den Bereich der Embedded-Systeme erweitern möchten.
Elektronik- und Hardware-Ingenieure: Personen, die bereits über Kenntnisse in der Elektronik- und Hardwareentwicklung verfügen und nun lernen möchten, wie sie Embedded-Linux-Systeme in ihre Hardware integrieren können.
Systemadministratoren: Personen, die bereits Erfahrung mit Linux-Systemen haben und lernen möchten, wie sie Embedded-Linux-Systeme verwalten und konfigurieren können.
Wir möchten, dass Sie unsere Website angenehm, nützlich und von hoher inhaltlicher Qualität finden. Um das zu erreichen, verwenden wir, die Vogel Communications Group, Cookies und andere Online-Kennungen (z.B. Pixel, Fingerprints) (zusammen „Technologien“) - auch von Drittanbietern -, um von den Geräten der Webseiten-Besucher Informationen über die Nutzung der Webseite zu Zwecken der Webanalyse (einschließlich Nutzungsmessung und Standortbestimmung), Verbesserung der Webseite und personalisierter interessenbasierter digitaler Werbemaßnahmen (einschließlich Re-Marketing) sowie den Nutzerbedürfnissen angepasster Darstellung zu sammeln. Diese Informationen können auch an Dritte (insb. Werbepartner und Social Media Anbieter wie Facebook und LinkedIn) weitergegeben und von diesen mit anderen Daten verlinkt und verarbeitet werden. Die Verarbeitung kann auch außerhalb der EU / EWR erfolgen, wo unter Umständen kein vergleichbares Datenschutzniveau herrscht, z.B. in den USA. Mit der Auswahl „Alle Cookies akzeptieren“ willigen Sie in die vorgenannte Verwendung der Technologien und Weitergabe der Informationen an die Dritten ein. Diese Einwilligung können Sie jederzeit mit Wirkung für die Zukunft über den Button „Konfigurieren“ in unserem Cookie-Management-Tool widerrufen. Weitere Informationen über die verwendeten Technologien, Anbieter, Speicherdauer, Empfänger, Drittstaatenübermittlung und mögliche Änderungen Ihrer Einstellungen, einschließlich für essentielle (d.h. technisch bzw. funktional notwendige) Cookies, finden Sie in der unten verlinkten Datenschutzerklärung und hinter dem Button „Konfigurieren“.