Embedded Linux ============== **Allgemeines** * Dienstag, 9:50 - 11:20 Uhr im W3.02, ab 12 Uhr im G2.16. * **⚠️ ALLES WICHTIGE ZUM ABLAUF DER VERANSTALTUNG ⚠️** [Embedded-Linux-Uebersicht](local:elinux/Embedded-Linux-Uebersicht.html) * "MELPv3", Buch "Mastering Embedded Linux Programming" von Frank Vasquez und Chris Simmonds, 3. Auflage 2021, O'Reilly, 758 S. - - Code und Errata: ⚠️ Der Code wurde 2025 upgedated, siehe README.md. * Links auf Laborberichte: * [Praktische Übungen](local:elinux/uebungen) * Fragenkatalog (wächst sicher noch) * [Fragen](local:elinux/Fragen.html) * MicroSD Karte, Notizen, ... **1. Treffen** * Verschiedene Boards von 2000 bis jetzt [elinux/memo-02.pdf](local:elinux/memo-02.pdf) * Musterbeispiel "Beregnungssteuerung" [elinux/memo-01.pdf](local:elinux/memo-01.pdf) Ältere Sachen aus der Corona Zeit, muss ich noch überarbeiten: * Kommandozeile (1) [elinux/memo-03.pdf](local:elinux/memo-03.pdf) * Kommandozeile (2) [elinux/memo-04.pdf](local:elinux/memo-04.pdf) * GPIOs mit libgpiod [elinux/memo-07.pdf](local:elinux/memo-07.pdf) **2. Treffen** Cross-Compiler / Cross-Compilaton / Teletype / UART Konsole / Terminal-Grösse einstellen mit tput, stty / Programme auf dem BBB in C, Go, Rust, Python / RAM Verbrauch / Kernel Buffer (``man dmesg``). * Hausaufgaben - Im Labortagebuch nutzen: "Visuals" (Videos, OBS, Asciinema, Screenshots, ...) - MELPv3, Kap. 3 lesen ("All about Bootloaders") - Mal woanders reinschauen, z.B. in *How Linux Works* von Brian Ward, Kap. 5.1 - 5.4: "How the Linux Kernel Boots" - U-Boot Kommandos ausprobieren (BBB) Der RPi hat von Haus aus kein U-Boot installiert. Kompilieren sie U-Boot und installieren sie es auf dem RPi. Anleitungen gibt es viele im Netz, z.B. **3. Treffen** Hausaufgaben: Machen Sie am besten weiter mit den Übungen in [elinux/uebungen](local:elinux/uebungen). Zum Beispiel Anbindung an Internet mit nmcli, U-Boot kompilieren und Flashen, ... Lesen Sie schon mal das Kap. 4 in MELPv3. Es geht um den Kernel. **4. Treffen** * Mal `bootterm` testen - . Kann man das auch Cross-Kompilieren für BBB/RPi? * Kommandozeilen zum Bauen von Cross-Toolchain (ch02) und eigenstaendigem U-Boot (ch03) U-Boot Meldungen * Versionierung ist bei OSS ganz wichtig, mal bei https://semver.org und https://calver.org nachsehen. Guter c't Artikel zum Thema: [elinux/ct.2021.24.128_130.Bedeutung-2.0.0.pdf](local:elinux/ct.2021.24.128_130.Bedeutung-2.0.0.pdf) **5. Treffen** * Kernel bauen fuer RPi:

Literaturangaben ================ **Yocto Project** * MELPv3, Kap. 6, zweite Haelfte (Basics) * MELPv3, Kap. 7 (eigene Layer) * Tam Hanna, Yocto Tutorial, iX 2/3/4-2015 - Teil 1 (QEmu) [elinux/yocto/ix-2-2015-yocto-1.pdf](local:elinux/yocto/ix-2-2015-yocto-1.pdf) - Teil 2 (RPi) [elinux/yocto/ix-3-2015-yocto-2.pdf](local:elinux/yocto/ix-3-2015-yocto-2.pdf) - Teil 3 (Arduino Galileo) [elinux/yocto/ix-4-2015-yocto-3.pdf](local:elinux/yocto/ix-4-2015-yocto-3.pdf) * Bootlin.com Yocto Training (BeagleBone Black, STM32MP1) - - * Phytec Yocto Anleitung (Beispielhafte Anleitung eines Board-Herstellers) * Die Yocto Distribution "OpenSTLinux" für den STM32MP1 (Yocto-basierte Distro des Chip-Herstellers ST Micro https://www.st.com) * "Golden Image" bzw. "Binary OS" vs. Build from Source - Bastian Krause, Wie man (k)ein Betriebssystem für Produkte baut, Pengutronix 2021 (mit Video, 45 Min.) - Mirza Krak, Linux IoT Development: Adjusting from a Binary OS to the Yocto Project Workflow, [elinux/yocto/yocto-lj-300-2019.pdf](local:elinux/yocto/yocto-lj-300-2019.pdf) **Software Update** * Update-Verfahren, MELPv3, Kap. 10 * Artikel aus iX 12.2022 "IoT-Geräte-Updates automatisieren" [elinux/ix.2022.12.IoT-Update.pdf](local:elinux/ix.2022.12.IoT-Update.pdf) * Linux Magazin, Kern-Technik #121 (Update Verfahren, RAUC), [elinux/kt/kt-121.pdf](local:elinux/kt/kt-121.pdf) Kern-Technik #122, konkretes RAUC Beispiel [elinux/kt/kt-122.pdf](local:elinux/kt/kt-122.pdf) Siehe auch das Software-Archiv [LM_2022-07_064_47348.zip](local:elinux/kt/LM_2022-07_064_47348.zip) * SWupdate - - * fwup * Mender * Balena * hawkBit * Blog Eintrag "Fail-Safe (OTA) Field Updating" * Software Updateverfahren (RAUC, SWupdate, fwup), Foliensatz zu RAUC (ELCE22): **Testumgebungen** - Tbot - Labgrid - Lava **Real-Time** * MELPv3, Kap. 21, Real-Time Programming * Artikelsammlung zu Echtzeit unter Linux * Servo am BBB1, Foto: [elinux-remote-3.jpg](local:elinux/elinux-remote-3.jpg) (man sieht die Spitze des roten Zeigers in der Kamera). Sourcecode dazu: * Chris Simmonds, Over and over again: periodic tasks in Linux * Carsten Emde, HOWTO: Cyclic execution of a user program function * OSADL Howto: Create a latency plot from cyclictest histogram data * Einige Beispielprogramme (VPN!) **Kernel, Kernelmodule, Gerätetreiber** * MELPv3, Kap. 4 (Kernel konfigurieren und kompilieren) * MELPv3, Kap. 11 (Treiber) * Quade, Kunst, Kern-Technik im Linux Magazin 11.2020 (Gerätetreiber als Kernelmodul implementieren). [kt-112](local:elinux/kt/kt-112.pdf) * Linux Driver Workshop von Johannes Roith auf dem LIT 2024 (https://www.luga.de/static/LIT-2024/), Folien , Github , Videos --- für Raspberry Pi 3; CD4543B Siebensegment-Dekoder. * Valerie Henson, /dev/hello_world: A Simple Introduction to Device Drivers under Linux, 2007 [valerie-henson-device-drivers-hello.pdf](local:elinux/kerneltreiber/valerie-henson-device-drivers-hello.pdf) * Derek Molloy, Exploring Beaglebone, Chapter 16: Embedded Kernel Programming , Github * Derek Molloy, Writing a Linux Kernel Module - Part 1: - Part 2: - Part 3: * Jürgen Quade, Eva-Katharina Kunst, Linux-Treiber entwickeln, 4. Auflage, dpunkt Verlag 2015. Verwendet Ubuntu 14.04, Kernel 4.0.3, Rasperry Pi 2. **Sonstiges** * [ct.2022-Deutsche-Bahn-Linux-Distro.pdf](local:elinux/ct.2022-Deutsche-Bahn-Linux-Distro.pdf) * [ct.2022.12-RPi-Kct.2022.12-RPi-Kiosk.pdfiosk.pdf](local:elinux/ct.2022.12-RPi-Kiosk.pdf) * [ct.2021.16.168_169.RPi-mit-RO-Filesystem.pdf](local:elinux/ct.2021.16.168_169.RPi-mit-RO-Filesystem.pdf) * Vergangene Projekte im Wahlfach Embedded Linux [ElinuxProjekte](ElinuxProjekte) * Zwei Artikel aus dem Linux Magazin 7.21 und 8.21 zu "Linux From Scratch" (LFS, , [Linux-Magazin-LFS-2021](local:elinux/Linux-Magazin-LFS-2021.pdf), Links dazu: [Linux-Magazin-LFS-2021.txt](local:elinux/Linux-Magazin-LFS-2021.txt). Auch interessant ist das *Pi-LFS* Projekt von Brandl und Saufler aus dem Jahr 2015: [pi-lfs](local:elinux/pi-lfs/html/index.html). Der Quelltext ist im Archiv [pi-lfs.tar.gz](local:elinux/pi-lfs/pi-lfs.tar.gz). * Boot Tracing, Boot Charts, [kt-64.pdf](local:elinux/kt/kt-64.pdf) * Device Trees (aktueller Stand, dynamisch, Overlay, ...) [kt-93.pdf](local:elinux/kt/kt-93.pdf) **Übersichten, Quickrefs, etc.** * Tmux Quickref * Freies Buch "LPIC Essentials" * Put yourself in command - - * Siehe Infos zum LPIC Vorbereitungskurs * Umfangreiches Schulungsmaterial von Bootlin * Schnellreferenzen (statt ifconfig, route, netstat, iwconfig nun ip und iw verwenden) * Git Cheat Sheet im Linux-Magazin 7.2024 [elinux/git-cheatsheet.pdf](local:elinux/git-cheatsheet.pdf) * Bücher von Derek Molloy (Dublin City University) Exploring BeagleBone Exploring Raspberry Pi * Bone101 * Brian Ward, How Linux Works, 3rd edition, No Starch Press, 2021. * Sehr schönes Embedded Linux Tutorial in fünf Teilen von George Hilliard. Es ist 2019/2020 entstanden und verwendet den Raspberry Zero W. * Dieser Text wird im Buch von Simmonds empfohlen: "SO YOU WANT TO BUILD AN EMBEDDED LINUX SYSTEM?" **Praktische Embedded Linux Anwendungen** * TSGRain Beregnungssteuerung - Kurze Beschreibung [elinux/memo-01.pdf](local:elinux/memo-01.pdf) - Kurzer Übersichtsartikel - Code, Bilder, Schaltplan, Teileliste . * "Eulenfunk" Internet Radio . Das war ein Projekt im Sommer 2016 von ein paar Master-Studierenden. **Verwandte Seiten** [PflichtaufgabenBBB](local:PflichtaufgabenBBB) | [ElinuxProjekte](local:ElinuxProjekte) | [EmbeddedProjectsJournal](local:EmbeddedProjectsJournal)