Embedded Linux¶
Allgemeines
Dienstag, 9:50 - 11:20 Uhr im W3.02, ab 12 Uhr im G2.16.
⚠️ ALLES WICHTIGE ZUM ABLAUF DER VERANSTALTUNG ⚠️
„MELPv3“, Buch „Mastering Embedded Linux Programming“ von Frank Vasquez und
Chris Simmonds, 3. Auflage 2021, O’Reilly, 758 S.Code und Errata: https://github.com/PacktPublishing/Mastering-Embedded-Linux-Programming-Third-Edition.git ⚠️ Der Code wurde 2025 upgedated, siehe README.md.
Links auf Laborberichte: https://yopad.eu/p/elinux25
Fragenkatalog (wächst sicher noch)
MicroSD Karte, Notizen, …
1. Treffen
Verschiedene Boards von 2000 bis jetzt elinux/memo-02.pdf
Musterbeispiel „Beregnungssteuerung“ elinux/memo-01.pdf
Ältere Sachen aus der Corona Zeit, muss ich noch überarbeiten:
Kommandozeile (1) elinux/memo-03.pdf
Kommandozeile (2) elinux/memo-04.pdf
GPIOs mit libgpiod 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.
https://www.thegoodpenguin.co.uk/blog/build-boot-linux-on-raspberry-pi-3-model-b
3. Treffen
Hausaufgaben:
Machen Sie am besten weiter mit den Übungen in 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 - https://github.com/wtarreau/bootterm.git. Kann man das auch Cross-Kompilieren für BBB/RPi?Kommandozeilen zum Bauen von Cross-Toolchain (ch02) und eigenstaendigem U-Boot (ch03)
https://hhoegl.informatik.hs-augsburg.de/elinux/kurs/2024/elinux-remote/README.md
U-Boot Meldungen
https://hhoegl.informatik.hs-augsburg.de/elinux/kurs/2024/elinux-remote/ubootmsg-log.txt
Versionierung ist bei OSS ganz wichtig, mal bei https://semver.org und https://calver.org nachsehen. Guter c’t Artikel zum Thema:
5. Treffen
Kernel bauen fuer RPi:
https://hhoegl.informatik.hs-augsburg.de/elinux/kt/kt-139/kt139.pdf
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
Teil 2 (RPi) elinux/yocto/ix-3-2015-yocto-2.pdf
Teil 3 (Arduino Galileo) 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.) https://www.pengutronix.de/de/blog/2021-04-19-wie-man-kein-betriebssystem-fuer-produkte-baut.html
Mirza Krak, Linux IoT Development: Adjusting from a Binary OS to the Yocto Project Workflow, 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
Linux Magazin, Kern-Technik #121 (Update Verfahren, RAUC), elinux/kt/kt-121.pdf
Kern-Technik #122, konkretes RAUC Beispiel elinux/kt/kt-122.pdf
Siehe auch das Software-Archiv LM_2022-07_064_47348.zip
SWupdate
Mender https://docs.mender.io/3.2
Balena https://www.balena.io
hawkBit https://www.eclipse.org/hawkbit
Blog Eintrag „Fail-Safe (OTA) Field Updating“ https://www.pengutronix.de/en/blog/2021-02-19-showcase-field-updating.html
Software Updateverfahren (RAUC, SWupdate, fwup), Foliensatz zu RAUC (ELCE22): https://elinux.org/images/d/df/ELCE_2022_RAUC_Evolution_of_an_Update_Framework_Enrico_Joerns.pdf
Testumgebungen
Real-Time
MELPv3, Kap. 21, Real-Time Programming
Artikelsammlung zu Echtzeit unter Linux https://hhoegl.informatik.hs-augsburg.de/elinux/rt/index.html
Servo am BBB1, Foto: elinux-remote-3.jpg (man sieht die Spitze des roten Zeigers in der Kamera).
Sourcecode dazu: https://gitlab.informatik.hs-augsburg.de/domokun/elinux_demos
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
https://www.osadl.org/Create-a-latency-plot-from-cyclictest-hi.bash-script-for-latency-plot.0.html
Einige Beispielprogramme (VPN!) https://gitlab.informatik.hs-augsburg.de/elinux/material/-/tree/master/timing
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
Linux Driver Workshop von Johannes Roith auf dem LIT 2024 (https://www.luga.de/static/LIT-2024/), Folien https://www.luga.de/static/LIT-2024/talks/linux_treiber_workshop/, Github https://github.com/Johannes4Linux, Videos https://www.youtube.com/watch?v=x1Y203vH-Dc&list=PLCGpd0Do5-I3b5TtyqeF1UdyD4C-S-dMa — 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
Derek Molloy, Exploring Beaglebone, Chapter 16: Embedded Kernel Programming https://www.exploringbeaglebone.com/chapter16/index.html, Github https://github.com/derekmolloy/exploringBB.git
Derek Molloy, Writing a Linux Kernel Module
Jürgen Quade, Eva-Katharina Kunst, Linux-Treiber entwickeln, 4. Auflage, dpunkt Verlag 2015. https://learning.oreilly.com/library/view/linux-treiber-entwickeln-4th/9781457196669 Verwendet Ubuntu 14.04, Kernel 4.0.3, Rasperry Pi 2.
Sonstiges
Vergangene Projekte im Wahlfach Embedded Linux ElinuxProjekte
Zwei Artikel aus dem Linux Magazin 7.21 und 8.21 zu „Linux From Scratch“ (LFS, https://www.linuxfromscratch.org, Linux-Magazin-LFS-2021, Links dazu: Linux-Magazin-LFS-2021.txt.
Auch interessant ist das Pi-LFS Projekt von Brandl und Saufler aus dem Jahr 2015: pi-lfs. Der Quelltext ist im Archiv pi-lfs.tar.gz.
Boot Tracing, Boot Charts, kt-64.pdf
Device Trees (aktueller Stand, dynamisch, Overlay, …) kt-93.pdf
Übersichten, Quickrefs, etc.
Tmux Quickref
https://hhoegl.informatik.hs-augsburg.de/pub/tmux/tmux-quickref/index.html
Freies Buch „LPIC Essentials“
Put yourself in command
Siehe Infos zum LPIC Vorbereitungskurs https://tha.de/~hhoegl/home/LPIC
Umfangreiches Schulungsmaterial von Bootlin
Schnellreferenzen
http://www.pixelbeat.org/cmdline.html
https://www.olimex.com/wiki/Linux-Commands (statt ifconfig, route, netstat, iwconfig nun ip und iw verwenden)
Git Cheat Sheet im Linux-Magazin 7.2024 elinux/git-cheatsheet.pdf
Bücher von Derek Molloy (Dublin City University)
Exploring BeagleBone
https://exploringbeaglebone.comExploring Raspberry Pi https://www.exploringrpi.com
Bone101 https://beagleboard.github.io/bone101/Support/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.
https://www.thirtythreeforty.net/series/mastering-embedded-linux
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
Kurzer Übersichtsartikel
https://www.hs-augsburg.de/Informatik/Eine-moderne-Beregnungssteuerung-fuer-Tennisanlagen
Code, Bilder, Schaltplan, Teileliste https://hhoegl.de/tsgrain.html.
„Eulenfunk“ Internet Radio https://github.com/studentkittens/eulenfunk. Das war ein Projekt im Sommer 2016 von ein paar Master-Studierenden.
Verwandte Seiten PflichtaufgabenBBB | ElinuxProjekte | EmbeddedProjectsJournal