#format rst #language de 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 ElinuxRemote 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 - https://gitlab.informatik.hs-augsburg.de/elinux/material/-/blob/master/cross/cross-compile-for-bbb.c **Di, 29.3.2022** #2, U-Boot * MELPv3, Kap. 3 * https://hhoegl.informatik.hs-augsburg.de/elinux/bbb/The-Boot-Process.pdf * https://www.denx.de/wiki/U-Boot * https://u-boot.readthedocs.io/en/latest * 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 , 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/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 - 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 - Teil 1 (QEmu) https://hhoegl.informatik.hs-augsburg.de/elinux/yocto/ix-2-2015-yocto-1.pdf - Teil 2 (RPi) https://hhoegl.informatik.hs-augsburg.de/elinux/yocto/ix-3-2015-yocto-2.pdf - Teil 3 (Arduino Galileo) https://hhoegl.informatik.hs-augsburg.de/elinux/yocto/ix-4-2015-yocto-3.pdf * Bootlin.com Yocto Training (BeagleBone Black, STM32MP1) - https://bootlin.com/training/ - https://bootlin.com/docs/ * Die Yocto Distribution "OpenSTLinux" für den STM32MP1 - https://wiki.st.com/stm32mpu/wiki/STM32MP1_Distribution_Package "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 * SWupdate https://sbabic.github.io/swupdate/swupdate.html * RAUC https://rauc.io * fwup https://github.com/fwup-home/fwup * 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 Rechner ``elinux-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 https://www.2net.co.uk/tutorial/periodic_threads * Carsten Emde, HOWTO: Cyclic execution of a user program function https://www.osadl.org/?id=86 * 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 (Kriminal­prävention) - https://embeddedbits.org/introduction-embedded-linux-security-part-1 - https://embeddedbits.org/introduction-embedded-linux-security-part-2 - Video: https://www.youtube.com/watch?v=QcUKAgVKSxQ - 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) - Safety Critical Linux https://www.osadl.org/Safety-Critical-Linux.safety-critical-linux.0.html - https://hhoegl.informatik.hs-augsburg.de/elinux/safety/ * `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).