Embedded Linux 2022¶
Moodle Kurs: https://moodle.hs-augsburg.de/course/view.php?id=5702
Wünschenswerte Vorkenntnisse: https://hhoegl.informatik.hs-augsburg.de/hhwiki/ElinuxVorkenntnisse
Elinux-Remote Server
https://hhoegl.informatik.hs-augsburg.de/hhwiki/ElinuxRemote
Einige praktische Demonstrationen: https://hhoegl.informatik.hs-augsburg.de/hhwiki/ElinuxBBBPraxis
Di, 22.3.2022 #1
Hausaufgaben bis 29.3.
Links im Foliensatz ansehen (u.a. Pengutronix Blog und Video) Foliensatz https://hhoegl.informatik.hs-augsburg.de/elinux/kurs/intro.pdf
Labor-Tagebuch vorbereiten (Markdown, Pandoc Tool). Machen Sie auf Gitlab ein internes Repository für die Veranstaltung (kein privates) und schicken mir den Link. Dort ist u.a. das Labor-Tagebuch im Markdown Format.
https://gitlab.informatik.hs-augsburg.de/hhoegl/Markdown-Anleitung
Kapitel 1 (Einführung) und 2 (Toolchain) im Buch von Vasquez/Simmonds lesen (Mastering Embedded Linux Programming, 3. Auflage = „MELPv3“)
https://learning.oreilly.com/library/view/mastering-embedded-linux/9781789530384
Hostrechner mit Linux ausstatten, gerne auch über VirtualBox.
Eine Toolchain auf dem Hostrechner installieren (wie im Buch, Kap. 2 erläutert)
Das „microcom“ Programm von github holen, kompilieren und auf dem Hostrechner installieren (https://github.com/pengutronix/microcom).
Recherchieren Sie die Lizenzbedingungen für die Hardware Baupläne des Beagle Bone Black.
29.3.2022 Nachtrag Cross-Kompilierung
Di, 29.3.2022 #2, U-Boot
MELPv3, Kap. 3
https://hhoegl.informatik.hs-augsburg.de/elinux/bbb/The-Boot-Process.pdf
https://hhoegl.informatik.hs-augsburg.de/elinux/bbb/lj-10-2013-uboot-trick.pdf
Kleines Python Programm, das zeigt, wie man die serielle Schnittstelle aus einem Programm ansteuern und automatisieren kann (Achtung: Code ist alt, noch in Python 2. Müsste erst auf Python3 und BBB angepasst werden).
https://hhoegl.informatik.hs-augsburg.de/elinux/u-boot/u-boot.py
Hausaufgaben bis in +1w:
Welche Subsysteme kann U-Boot verwalten?
Den U-Boot Bootmechanismus unterbrechen mit [SPACE] Taste und Funktionsweise von U-Boot untersuchen.
help, printenv, run <cmd>, mmcinfo, mmc dev 0, mmc dev 1, mmc list, ls mmc 0:1 /, ext4load mmc 0:2 ${loadaddr} /boot/uImage, ext4load mmc 0:2 ${fdtaddr} /boot/am335x-boneblack.dtb, bootm ${loadaddr} - ${fdtaddr}, run mmcboot, …
MELPv3, Kap. 3 nachvollziehen
Eine andere Anleitung vom Kompilieren des U-Boot ist unter
https://hhoegl.informatik.hs-augsburg.de/hhwiki/ElinuxBBBPraxis#u-boot-kompilieren
Was machen /boot/uEnv.txt und /boot/SOC.sh?
U-Boot kann auch mit Device Trees umgehen (.dtb, .dtbo Dateien). Auch der Kernel braucht diese Device Trees. Wozu wird diese ganze Device Tree Sache ueberhaupt gebraucht? Siehe das Verzeichnis /boot/dtbs/4.19.94-ti-r42/.
Nachtrag:
RPi-Nutzer sollten herausfinden, wie der Bootvorgang auf dem RPi Board funktioniert.
Wird im Normalfall U-Boot verwendet?
Wie kann man auf U-Boot umsteigen?
Folien zu U-Boot https://hhoegl.informatik.hs-augsburg.de/elinux/kurs/Folien/u-boot.pdf
Es gibt noch eine Übung zum Cross-Kompilieren, siehe
https://hhoegl.informatik.hs-augsburg.de/elinux/kurs/uebungen/#cross-kompilierung
Di, 5.4.2022, #3
Hausaufgaben bis in +1w:
Hausaufgaben [berarbeiten gemäss Rückmeldungen in der Vorlesung
MELPv3, Kap. 4 (Kernel konfigurieren und bauen)
Di, 12.4.2022, #4
Allgemeine Lagebesprechung
Di, 19.4.2022 ist frei (Osterferien)
Vielleicht ganz nützlich für Raspberry-Pi Nutzer: Pi-LFS Projekt von Brandl und Saufler 2015: https://hhoegl.informatik.hs-augsburg.de/elinux/RPi/pi-lfs/html/ (LFS ≙ Linux From Scratch, https://www.linuxfromscratch.org)
Hausaufgaben bis in +1w
MELPv3, Kap. 5 (Building a Root Filesystem - RYO)
Über Ostern alle Schritte auf dem RPi oder BBB testen (U-Boot, Kernel, Root-FS)
Di, 26.4.2022, #5
Hausaufgaben bis in +1w
Alle machen die Aufgaben in Kap. 5 fertig.
MELPv3, S. 162 - 179 (Buildroot - das ist die Hälfte von Kap. 6, Selecting a build system, bis vor Introducing the Yocto Project).
Di, 3.5.2022, #6
Zweite Hälfte von Kap. 6. (Yocto Project Intro)
Di, 10.5.2022, #7
MELPv3, Kap. 7 (Yocto Project, eigene Layer)
Elinux Anwendung „TSGRain“ (Beregnungssteuerung)
Kurze Beschreibung https://hhoegl.informatik.hs-augsburg.de/elinux/kurs/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
BA Hampp, 2021, u.a. Yocto Project. Der Sourcecode ist auf dem Gitea Server von Hr. Hampp unter https://code.thetadev.de/TSGRain.
Tam Hanna, Übersicht: Was Linux-Distributionsbaukästen können, iX 2/2015
https://hhoegl.informatik.hs-augsburg.de/elinux/rootfs/ix.0215.036-042.pdf
Tam Hanna, Yocto Tutorial, iX 2/3/4-2015
Bootlin.com Yocto Training (BeagleBone Black, STM32MP1)
Die Yocto Distribution „OpenSTLinux“ für den STM32MP1
„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, https://hhoegl.informatik.hs-augsburg.de/elinux/yocto/yocto-lj-300-2019.pdf
Open-Source Lizenzen
Felicitas Jung, Fürchte nicht den offenen Quellcode - 1x1 des Lizenzmanagements, Pengutronix 2020. https://www.pengutronix.de/de/blog/2020-02-25-open-source101.html
Di, 24.5.2022, #8
Software-Update
Update-Verfahren, MELP v3, Kap. 10
Linux Magazin, Kern-Technik #121 (Update Verfahren, RAUC), https://hhoegl.informatik.hs-augsburg.de/elinux/kt/kt-121/kt-121.pdf
Kern-Technik #122, konkretes RAUC Beispiel https://hhoegl.informatik.hs-augsburg.de/elinux/kt/kt-122/kt-122.pdf
RAUC https://rauc.io
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
Debuggen (MELPv3, Kap. 19),
Siehe z.B. https://www.suse.com/c/debugging-raspberry-pi-3-with-jtag
RPi3
rt-pi3-elinux-1
mit JTAG Adapter am Rechnerelinux-remote
(Foto 1, Foto 2)Anleitung (nur über VPN!): https://ti-wiki.informatik.hs-augsburg.de/doku.php?id=rt-labor_elinux-remote
Neben Tsgrain ein weiteres interessantes Embedded Linux Projekt
„Eulenfunk“ Internet Radio https://github.com/studentkittens/eulenfunk
Das war ein Projekt im Sommer 2016 von ein paar Master-Studierenden.
Di, 31.5.2022, #9
MELPv3, Kap. 21, Real-Time Programming
Artikelsammlung zu Echtzeit unter Linux https://hhoegl.informatik.hs-augsburg.de/elinux/rt/
Servo am BBB1, Foto (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
Einige Beispielprogramme https://gitlab.informatik.hs-augsburg.de/elinux/material/-/tree/master/timing
Noch offene Themen
I/O, z.B. GPIO, I2C, SPI, A/D, D/A, 1-Wire, … (siehe z.B. https://exploringbeaglebone.com oder MELPv3 Kap. 12)
Gerätetreiber
Test-Frameworks (labgrid, tbot), Continuous Integration/Delivery, Continuous Testing (siehe z.B. diesen Blog Eintrag)
Verkürzung der Bootzeit
Reduzierung der Leistungsaufnahme
Grafische Oberflächen - Michael Tretter (Pengutronix), Offene Grafik für eingebettete Systeme, https://chemnitzer.linux-tage.de/2017/en/programm/beitrag/195
Security (Kriminalprävention)
https://embeddedbits.org/introduction-embedded-linux-security-part-1
https://embeddedbits.org/introduction-embedded-linux-security-part-2
Folien: https://elinux.org/images/1/16/Introduction_embedded_linux_security.pdf
Beim Update siehe TUF https://theupdateframework.io und Uptane https://uptane.github.io
Safety (Unfallvermeidung)
OSADL Genossenschaft: https://hhoegl.informatik.hs-augsburg.de/elinux/osadl/
Aktuelle Informationen (Folien, Vorträge, …) zu diesen und weiteren Themen findet man bei den Konferenzen zu Embedded Linux. Es gibt die internationale „ELC“ (Embedded Linux Conference) und die europäische ELCE (Embedded Linux Conference Europe). Siehe https://elinux.org/ELC_Presentations.
Ausserdem sind die Homepages und Blogs der wichtigsten Dienstleistungsfirmen in diesem Bereich meist sehr informativ: https://bootlin.com, https://www.pengutronix.de, https://www.denx.de, https://linutronix.de, https://www.osadl.org (Genossenschaft), https://www.toradex.com/de/blog