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 …

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

  1. Startschuss Embedded Linux https://moodle.hs-augsburg.de/mod/forum/discuss.php?d=22202

  2. 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