Embedded-Linux-Softwareentwicklung - Präsenz-Training
In diesem Training wird die Entwicklung von Software für Embedded-Linux behandelt.
Dabei werden alle Aspekte der systemnahen Entwicklung beleuchtet und auch gleich mit den entsprechenden Entwicklungswerkzeugen geübt.
Die Teilnehmer lernen das Posix-Betriebssystem kennen und können mit den wichtigen Entwicklungs- und Diagnosewerkzeugen umgehen.
Die beiden Themenblöcke werden dabei nicht getrennt betrachtet, sondern ineinander verwoben, so dass die Betriebssystemmechanismen zusammen mit den Entwicklungs- und Diagnosetools eingeübt werden.
Software-Entwickler, Software-Architekten
Sichere Programmierkenntnisse in ANSI-C sowie gute Linux-Grundlagenkenntnisse. Gute Programmierkenntnisse in C sowie sicherer Umgang in der Linux-Shell (z. B.: ls, cp, mv, dd) mit Ein-/Ausgabeumleitung.
Systemnahe Softwareentwicklung
- Dateien, Pipes und Device-Nodes
- Prozesse, CPU-Affinität
- Scheduling; RT-, Deadline-, Batch-Task
- Prozesse, Signale, Core-Dump
- Shared-Memory, Memory-Mapping
- Semaphore, Message-Queue
- Multithreading
- Mutex, Robust-Mutex, PI-Mutex, RW-Lock, Barrier
- hrtimer-Framework und Posix-Timer
- Hardware-Schnittstellen: GPIOs, I2C
Entwicklungsumgebung und Diagnosetools
- Cross-Development Toolchain
- Cross-Debugging mit gdb und gdbserver
- proc-, sys- und debug-FS
- Memory Leaks, Speicherüberschreibungen; valgrind
- Codeabdeckungsanalyse und Profiling; gcov und gprof
- Ptrace-Schnittstelle des Linux-Kernels; Funktionsweise von Debuggern
- strace und ltrace: Funktionsweise und Verwendung
- Funktionsweise des Function Trace Frameworks (ftrace)
- Tracen von Interrupt- und Scheduling-Events
Hardware
- Alle Übungsaufgaben werden auf dem phyBOARD mit Arm Cortex™-A8 (AM-335x) unter Verwendung von frei zugänglichen Open-Source-Tools durchgeführt.