1 Embedded-Linux im Sommersemester 2020¶
Moodle-Kurs: https://moodle.hs-augsburg.de/course/view.php?id=3450
URL: http://hhoegl.informatik.hs-augsburg.de/hhwiki/EmbeddedLinux2020
Arbeitsbelastung: 6 Stunden, 7,5 ECTS, ca. 25 bis 30 Arbeitsstunden pro ECTS
Zeit: Di, drei Blöcke 9:50-11:20, 11:40-13:10, 14:00-15:30
Es wäre vorteilhaft ein paar Vorkenntnisse zu haben, es geht bei geignetem Engagement aber auch ohne.
Die Repositories der TeilnehmerInnen liegen auf gitlab: https://r-n-d.informatik.hs-augsburg.de:8080/elinux/ss20
Leistungsnachweise (es gibt keine Klausur):
Bachelor: Projektarbeit mit Bericht (20-30 Seiten), Kommanote
Master: Projektarbeit mit Bericht (20-30 Seiten) + Studienarbeit mit Thema nach Vereinbarung auf Master-Niveau (20-30 Seiten), Gewichtung 50%/50%, Kommanote
Die früheren Kurse sind hier. Die Veranstaltung gibt es seit 2008/2009.
1.1 Einführung¶
Im Fach „Embedded Linux“ werden Sie einen Überblick bekommen über die Kenntnisse und Tätigkeiten, die zur Entwicklung von Anwendungen unter Linux auf eingebetteter Hardware nötig sind.
Wir werden uns mit dem Beagle Bone Black (https://beagleboard.org/black, BBB) beschäftigen. Die empfohlene Literatur dazu (für den Anfang) ist das Buch Exploring the Beagle Bone Black von Derek Molloy. Siehe dazu auch die Website http://derekmolloy.ie/beaglebone. Das Buch kann man auf Safari lesen: https://learning.oreilly.com/library/view/exploring-beaglebone-2nd/9781119533160.
Es geht in der Veranstaltung aber auch um ein paar etwas fortgeschrittenere Themen, die nicht im Buch von Molloy erklärt werden, die aber unbedingt zu einer „Grundausbildung“ im Fach gehören. Aus diesem Grund werden wir das Buch von Chris Simmonds, Mastering Embedded Linux Programming (2nd edition 2017) durcharbeiten. Auch dieses Buch findet man auf Safari: https://learning.oreilly.com/library/view/mastering-embedded-linux/9781787283282. Fragen dazu sind hier: ElinuxLinuxSimmondsQuestions .
Beide Bücher habe ich auch im PDF Format zum Download für Sie unter
http://hhoegl.informatik.hs-augsburg.de/nonfree/elinux/
Login und Passwort bekommen Sie per E-mail.
Es gibt auch einen Fragenkatalog, der allerdings neben aktuellen Themen auch noch Sachen aus der Frühzeit der Veranstaltung enthält (z.B. über das erste Board NGW100 von 2008). Ich werden den Fragenkatalog in diesem Semester überarbeiten und gezielt auf Abschnitte darin hinweisen.
1.2 Praktikum und Projekte¶
Die Veranstaltung macht nur Sinn, wenn sie durch praktische Experimente auf dem Beagle Bone Board begleitet wird. In „normalen“ Semestern haben wir dazu im G2.16 acht Arbeitsplätze und die nötigen Bauteile und Messgeräte. Beim aktuellen Semester können wir uns durch die Ausgangsbeschränkung wegen des Corona Virus zumindest bis Ende April nicht im Labor treffen.
Die einzige Möglichkeit in diesem Semester, um praktisch mit dem Board zu arbeiten ist also selber eines zu Hause zu haben. Vielleicht haben es manche von Ihnen schon. Ich prüfe gerade, ob wir aus Fakultätsmitteln vom Händler direkt Boards und nötige Teile direkt zu den Kursteilnehmern schicken könnten.
Das Board kostet meist zwischen 50 und 60 Euro und kann z.B. bei Reichelt bestellt werden. Der folgende Link bietet einen schnellen Einstieg: http://beagleboard.org/Support/bone101.
In den ersten sechs Wochen werden Sie eine Reihe von Pflichtaufgaben erledigen.
In der zweiten Hälfte des Semesters geht es dann weiter mit Projekten. Ein paar allgemeine Regeln zum Embedded-Linux Projekt sind hier: ElinuxProjekt. Eine Liste vergangener Projekte ist in ElinuxProjekte.
Eine häufig gestellte Frage ist, warum wir eigentlich nicht das zum Preis von etwa 35 Euro deutlich preiswertere Board Raspberry Pi (RPi) verwenden. Die Antwort ist, dass das RPi Board zwar sehr beliebt ist in der Maker Community, jedoch wird trotzdem für Kurse, Schulungen etc. im Bereich Embedded Linux fast immer das BBB verwendet. Das BBB ist eine offene (= open-source) Hardware-Entwicklung, die komplett dokumentiert ist. Der RPi hingegen enthält einige undokumentierte Stellen, ausserdem kann man einige der Bauelemente auf dem Board nicht vom Händler kaufen.
1.3 Projekte¶
Folgende Projekte wurden gewählt:
Forro (MIN): Auto-Infotainment erneuern (GUI mit Qt oder Tkinter, CAN Bus, HDMI/VGA, RGsB Monitoransteuerung)
Mirbaha: BBB als Zigbee Broker, zigbee2mqtt, Ikea Lampen
Tiganus/Ziegler: Flugschreiber-Hardware für Semesterprojekt „Blackbox“
Fassnacht: Luftqualität messen
Gehrke (MIN): Audiospieler mit OLED Display, Tasten, Poti, Web-Interface
Kostas: Build-Device
Lautenbacher (MIN): „Kugel durch kippbaren Irrgarten“
Studienarbeiten für Master
Forro (Bootzeit optimieren)
Lautenbacher (Update-Verfahren)
Gehrke (noch offen)
1.4 Der Bericht¶
Alle Experimente, die Sie mit dem Board machen, beschreiben Sie knapp im Bericht, ähnlich wie in einem Laborbuch. Der Bericht sollte …
die Pflichtaufgaben und das Projekt beschreiben. Er ist vor allem für Sie zur späteren Erinnerung gedacht.
eine freie Lizenz haben, z.B. die Creative Commons (http://creativecommons.org).
ein einheitliches Format haben, schreiben Sie ihn im Restructured Text Format bzw. in Sphinx.
Es gibt eine Sphinx Vorlage: http://hhoegl.informatik.hs-augsburg.de/dva/sphinxbericht
Hier habe ich die Themen aller vergangenen Projekte aufgelistet: https://hhoegl.informatik.hs-augsburg.de/hhwiki/ElinuxProjekte
Eine Auswahl von relativ gelungenen früheren Berichten, alle vom SS18:
1.5 Aktivitäten¶
A7 - 5.5.2020 (bis 12.5.)
(1) Zur Auflockerung zwischendurch: „Streetpong“ http://hhoegl.informatik.hs-augsburg.de/elinux/application/schwebel-streetpong-2015/ (lesen und die wesentlichen beteiligten Technologien in den Bericht schreiben)
(2) Das Python Programm „Simple Webserver“ herunterladen und auf das BBB kopieren (leider noch in Python 2 - bitte gerne als Übung für Python 3 umschreiben!). Die beiliegende Service Unit installieren und vorher eventuell anpassen. Dabei nicht als Root arbeiten. Testen, ob man es mit systemctl
starten und stoppen kann. Auch mal testweise als Dienst einrichten, der gleich beim Booten gestartet wird. Den Server auf dem BBB ansprechen vom Hostrechner aus über einen interaktiven Webbrowser (z.B. Firefox) und auch über
Kommandozeilentools wie curl
, wget
, netcat
oder (am besten) https://httpie.org. Im Doc-Header von web_server.py
steht, wie es über curl geht, verwenden Sie aber auch alternativ mal httpie. Abschliessend eigene Ideen in den Server einbauen. Woher das Skript stammt weiss ich nicht mehr, es hat in den letzten Jahren Andreas Tschirner verwendet, der das Elinux Praktikum betreut hat.
http://hhoegl.informatik.hs-augsburg.de/elinux/kurs/Simple-Webserver/
(3) Mit LED und Taste am BBB spielen. Dazu Memo-7 lesen und die Aufgaben darin bearbeiten. http://hhoegl.informatik.hs-augsburg.de/elinux/kurs/memo-07.pdf
A6 - 28.4.2020 (bis 5.5.)
Die folgenden Kommandos auf Ihrem BBB bitte nachvollziehen und im Bericht erwähnen: http://hhoegl.informatik.hs-augsburg.de/elinux/kurs/memo-04.pdf
Viele Admin-Kommandos entwirren und den verschiedenen Gruppen zuordnen: http://hhoegl.informatik.hs-augsburg.de/elinux/kurs/linux_admin_cmds.pdf Die geordnete Tabelle dann in den Bericht übertragen. Sie sollten zumindest eine grobe Ahnung davon haben, was die Kommandos machen. Sollte Sie ein Kommando nicht kennen, dann informieren Sie sich über die Man-Page (oft schwierig zu lesen, wenn nicht unverständlich) oder über Info die Sie im Netz finden. Einige der Kommandos werden auch in Memo-4 gezeigt.
A5 - 20.4.2020 (bis 28.4.)
Bitte lesen und Fragen am Ende beantworten: http://hhoegl.informatik.hs-augsburg.de/elinux/kurs/memo-02.pdf
So stelle ich mir in etwa vor, wie Sie mit den praktischen Experimenten auf dem BBB vorgehen sollten: http://hhoegl.informatik.hs-augsburg.de/elinux/kurs/memo-03.pdf
Bitte die praktischen Versuche mit dem BBB laufend in Ihrem Bericht kommentieren! Aktuell habe ich noch keine solchen Einträge im Bericht gesehen.
A4 - 17.4.2020
Start für die Pflichtversuche: https://moodle.hs-augsburg.de/mod/forum/discuss.php?d=24308
A3 - 6.4.2020 (bis Fr. 10.4.)
(1) Die Repositories habe ich nun den einzelnen TeilnehmerInnen zugeordnet. Sie sollten eine Nachricht bekommen haben von Gitlab. Hier nochmal im Überlick (M = Master Informatik):
1 Fassnacht 2 Gehrke (M) 3 Ziegler
4 Lautenbacher (M) 7 Kostas 8 Mirbaha
9 Forro (M) 10 Tiganus
Die Repos liegen unter https://r-n-d.informatik.hs-augsburg.de:8080/elinux/kurs.
(2) Jede TeilnehmerIn sollte einen leeren Sphinxbericht in ihrem Repository anlegen. Am besten
dazu einen Ordner Bericht
anlegen. Im Abschnitt „Der Bericht“ steht wo die Sphinx Vorlage ist.
(3) Beregnungssteuerung für Embedded Linux (kurzer Text als Motivation - bitte lesen): http://hhoegl.informatik.hs-augsburg.de/elinux/kurs/memo-01.pdf. Die Fragen über den Text stehen nun am Ende des Textes.
Sollten Sie irgendwelche Fragen zum Ablauf haben, dann bitte in das Forum schreiben.
A2 - 5.4.2020
Nachricht zur Versendung der Beagleboards https://moodle.hs-augsburg.de/mod/forum/discuss.php?d=22614 Bitte beantworten!
A1 - 3.4.2020
Startschuss Embedded Linux https://moodle.hs-augsburg.de/mod/forum/discuss.php?d=22202
Umfrage zum Beagle Board https://moodle.hs-augsburg.de/mod/forum/discuss.php?d=22518 abgeschlossen
1.6 Sonstiges¶
1.6.1 Lieferanten von Bauteilen¶
Antratek https://www.antratek.de (A)
Eckstein https://eckstein-shop.de (E)
Reichelt https://www.reichelt.de (R)
Watterott https://watterott.com (W)
Exp-Tech https://exp-tech.de (X)
AZ-Delivery https://www.az-delivery.de (Z)