#format rst #language de ============================= Embedded Systems II (WS20/21) ============================= .. contents:: Inhalt .. sectnum:: .. `Skript `_ | `ESTOOL Dokumentation `_ | `Alte Klausuren `_ Bitte melden Sie sich im Moodle Kurs an: https://moodle.hs-augsburg.de/course/view.php?id=4116 | Am Mittwoch um 14 Uhr ist unser Zoom Meeting: :: Zoom Meeting: https://hs-augsburg.zoom.us/j/98633783218?pwd=V1JncHJZT21aUmtwaDNoUHVnMEJyZz09 Meeting-ID: 986 3378 3218 | Kenncode: 925295 7.10., Vorbesprechung --------------------- 7.10.2020, 14 Uhr * Ziele - Mikrocontroller in C programmieren - Wie läuft ein C Programm auf unterster Ebene ab? (Zusammenhänge klar machen) - Elementares Debuggen eines C Programms mit GDB (`Link `_) - Verwendung eines Logikanalysators (Saleae Logic https://www.saleae.com) - Exceptions und Interrupts - Programmieren mit Bibliotheken (CMSIS und Cube) - Umlenken der Ein-/Ausgabe - Quasi-parallele Programmierung mit RTOS (FreeRTOS) - Low-power Programmierung * Skript (leider nicht vollständig) http://hhoegl.informatik.hs-augsburg.de/es2/skript * Arbeitsumgebung - Linux, Kommandozeile, freie Werkzeuge - Virtuelle Maschine http://ti-wiki.informatik.hs-augsburg.de/doku.php?id=rt-labor_rtvm - estool - Hilfsprogramm zum Flashen, Debuggen, ... https://r-n-d.informatik.hs-augsburg.de:8080/hubert.hoegl/estool * Experimentierboard "Nucleo STM32L476" https://www.st.com/en/evaluation-tools/nucleo-l476rg.html - ARM Cortex M4 - Bild: http://hhoegl.informatik.hs-augsburg.de/es2/img/NUCLEO-L476RG.webp - Preis nur ca. 12 Euro * "Board Server" (wg. Covid-19), vier Nucleo Boards hängen mit allen Schnittstellen an einem Server an der Hochschule. Einloggen per ssh, Board reservieren - arbeiten - freigeben. Man kann einige Pins lesen, setzen, sowie mit einem Logikanalysator betrachten (Saleae Logic). Die Bedienung erfolgt über das "estool". http://hhoegl.informatik.hs-augsburg.de/es2/img/Aufbau-im-Kaefig.jpg Nucleo Board und ESP8266 (ERC - Embedded Remote Controller) http://hhoegl.informatik.hs-augsburg.de/es2/img/Nucleo-und-ESP.jpeg * Praktikum - Teamarbeit - 6 Versuche (auch im gitlab, z.B. https://r-n-d.informatik.hs-augsburg.de:8080/es2/v1) - Alle zwei Wochen ein Versuch. Vorbereitung und Nachbereitung nötig. - Berichte mit Sphinx schreiben. Abgabe mit Code in Gitlab. Sphinx Vorlage: https://r-n-d.informatik.hs-augsburg.de:8080/es2/ws2020_21/team_demo - Wegen Covid-19 können wir nicht wie gewohnt im Labor G2.16 arbeiten. Maximal 7 Personen plus 2 Betreuer. Hoffnung: Manche Experimente aus der Ferne mit dem Board-Server machen. Möglich wäre auch, dass nur ein Team-Mitglied im Labor ist, und die anderen über Video teilnehmen. * Gitlab Repositories - Ausarbeitung jedes Teams (Bericht, Bilder, Videos, Code, ...) https://r-n-d.informatik.hs-augsburg.de:8080/es2/ws2020_21/ - Issues - Beispielprogramm, z.B. "starter" https://r-n-d.informatik.hs-augsburg.de:8080/es2/es2-nucl476/starter * Lesestoff - Joseph Yiu, The Definitive Guide to ARM® Cortex®-M3 and Cortex®-M4 Processors, 3rd Edition, Newnes 2013. https://learning.oreilly.com/library/view/the-definitive-guide/9780124080829/ * Hausaufgabe bis 14.10. - Rechner/Notebook für Linux startklar machen. Z.B. obige virtuelle Maschine installieren. - Einarbeiten in Sphinx - Einarbeiten in Gitlab (https://r-n-d.informatik.hs-augsburg.de) - Öffentlichen ssh Schlüssel in Gitlab anlegen: http://hhoegl.informatik.hs-augsburg.de/hhwiki/GitSpicker#git-im-www-gitlab - Sphinx Demobericht klonen, kompilieren nach HTML, lesen https://r-n-d.informatik.hs-augsburg.de:8080/hubert.hoegl/sphinxbericht http://hhoegl.informatik.hs-augsburg.de/dva/sphinxbericht - Die Sphinx Vorlage "team_demo" für Ihr Team anpassen und in das Team Repository aufnehmen. 14.10., 14 Uhr -------------- * "RTLAB-Remote" ``_ * Beispiel "starter": https://r-n-d.informatik.hs-augsburg.de:8080/es2/v1 * Hausaufgaben - Im Buch von Yiu das Kapitel 19 lesen (Getting Started with the GNU Compiler Collection). https://learning.oreilly.com/library/view/the-definitive-guide/9780124080829/xhtml/CHP017.html#CHP017tit oder hier: http://hhoegl.informatik.hs-augsburg.de/es2/gnu/DGCM3-2e-ch19.pdf - Heutige Vorfuehrung nachvollziehen und in Bericht aufnehmen (siehe ``_, Abschnitt "RTLab-Remote") - Versuch/Aufgabe 1: https://r-n-d.informatik.hs-augsburg.de:8080/es2/v1 Aufgabenteile 1.1 und 1.2 bearbeiten, auch in Bericht aufnehmen! Die Beispielprogramme darin (blinky, startupcode und serial) haben noch Zeit! 21.10., 14 Uhr -------------- * Ausführliche Besprechung des "starter" Beispiels und der drei Programme von Versuch/Aufgabe 1. Siehe das Vorlesungs-Video ``es2-21-oct-20.mp4`` unter http://hhoegl.informatik.hs-augsburg.de/video. Als Hausaufgabe ist die Aufgabe 1 bis 28.10 auf. 28.10., 14 Uhr -------------- * Die zweite Aufgabe besteht aus drei Teilen: 1. https://r-n-d.informatik.hs-augsburg.de:8080/es2/es2-nucl476/starter-cmsis 2. https://r-n-d.informatik.hs-augsburg.de:8080/es2/es2-nucl476/syshandler-cmsis 3. https://r-n-d.informatik.hs-augsburg.de:8080/es2/es2-nucl476/gpio-intr-cmsis In jedem Teil ist ein Aufgabentext mit dem Dateinamen ``Aufgaben.rst``. Beim Versuch ``gpio-intr-cmsis`` muss man den User-Button B1 auf dem Nucleo Board drücken. Wenn man den Versuch auf dem RTlab-Remote Server macht, dann sieht man hier, wie die Ansteuerung des Nucleo-Boards mit dem ERC gemacht wurde: http://hhoegl.informatik.hs-augsburg.de/es2/stm32l4/rtlab-remote-nucleo-signals.svg 4.11., 14 Uhr ------------- * Aufgabe 1 ist bei den meisten fertiggestellt. * Aufgabe 2 ist bis naechste Woche (11.11.) auf. * Lesestoff: - STM32 Exception Processing `stm32_exc_prog.svg `_ | `stm32_exc_prog.pdf `_ - Hervorragender Artikel von I.C. Bertolotti zum Cortex-M Exception Handling (10 Seiten, nicht Pflicht, aber wer es genauer wissen mag, sollte ihn lesen) http://hhoegl.informatik.hs- augsburg.de/es2/exceptions/bertolotti/ - Yiu, Kap. 2 (Introduction to Embedded Software Development) https://learning.oreilly.com/library/view/the-definitive-guide/9780124080829/xhtml/CHP002.html 11.11., 14 Uhr -------------- TODO: V2 heute zu Ende bringen und den Bericht updaten. Die Aufgabe 3 beschäftigt sich mit der ST Micro "Cube" Bibliothek an Hand der zwei Beispiele GPIO_IO_TOGGLE und GPIO_EXTI. Beide Verzeichnisse sind im Repository :: https://r-n-d.informatik.hs-augsburg.de:8080/es2/es2-nucl476/cube-demos enthalten. Die Aufgaben finden Sie jeweils in der README.md. Damit man diese Beispiele kompilieren kann, muss die Cube Bibliothek installiert sein. Auf dem RTLab-Remote Server ist das in ``/opt/stm32cubel4/``. Wichtig ist, dass Sie die Umgebungsvariable ``CUBE_HOME`` auf das Cube Installationsverzeichnis setzen. Nehmen Sie dazu auf dem RTLab-Remote Server in ``~/.profile`` noch die Zeile :: export CUBE_HOME=/opt/stm32cubel4 Danach müssen Sie die Datei neu einlesen mit ``source ~/.profile``. In der virtuellen Maschine (Xubuntu) finden Sie die Cube Bibliothek an der Stelle ``/opt/rtlab/share/stm32cubel4``. Prüfen Sie auch hier den korrekten Wert von ``CUBE_HOME``. Wie die Installation erfolgte, entnehmen Sie dem Text http://ti-wiki.informatik.hs-augsburg.de/doku.php?id=rt-labor_rtvm (nur mit VPN Verbindung). Zum Nachschlagen ---------------- * Alle relevanten Handbücher/Manuals/Datenblätter sind hier: ``_ * Zum GDB - GDB Quickref `quickref.txt `_, `quickref.pdf `_ - GNU Debugger Text User Interface `main.svg `_ | `main.pdf `_ - GDB Anleitung/Übung https://r-n-d.informatik.hs-augsburg.de:8080/es2/es2-nucl476/gdb-uebung (siehe Aufgaben.rst) * Info zu tmux - Eine Seite mit den wichtigsten Kommandos http://hhoegl.informatik.hs-augsburg.de/pub/tmux/tmux-quickref/tmux-quickref.pdf - Guter Artikel vom Linux Journal (2016) http://hhoegl.informatik.hs-augsburg.de/pub/tmux/tmux-lj-3-2016.pdf - http://hhoegl.informatik.hs-augsburg.de/hhwiki/tmux * Git Spicker http://hhoegl.informatik.hs-augsburg.de/hhwiki/GitSpicker