#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 | Jeden Mittwoch im Semester 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 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/rtlab-remote-kaefig.jpg Nucleo Board und ESP8266 (ERC - Embedded Remote Controller) http://hhoegl.informatik.hs-augsburg.de/es2/img/rtlab-remote-erc.jpg * 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 (3. Auflage) das Kapitel 17 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). 18.11., 14 Uhr -------------- Zur Aufzeichnung: http://hhoegl.informatik.hs-augsburg.de/video/ 25.11., 14 Uhr -------------- Motivation zur quasi-parallelen Programmierung - https://r-n-d.informatik.hs-augsburg.de:8080/es2-nucl476/taskswitch - https://r-n-d.informatik.hs-augsburg.de:8080/es2-nucl476/shared-data-problem `Aufgabe 4 `_ Zur Aufzeichnung: http://hhoegl.informatik.hs-augsburg.de/video/ 2.12., 14 Uhr ------------- Erläuterungen zur den FreeRTOS Aufgaben. Zur Aufzeichnung: http://hhoegl.informatik.hs-augsburg.de/video/ 9.12, 14 Uhr ------------- Umlenken der Ein- und Ausgabe auf den UART ("retargeting"). Aufgabe 5: https://r-n-d.informatik.hs-augsburg.de:8080/es2/es2-nucl476/retarget Der Aufgabentext ist im Repository enthalten. Es gibt ein paar `Tipps zur Lösung `_. Zur Aufzeichnung: http://hhoegl.informatik.hs-augsburg.de/video/ Abgespeicherte Zeichnungen: http://hhoegl.informatik.hs-augsburg.de/video/zoom-201209 Die Übersicht zur Cube Bibliothek benötigt man für die Teilaufgabe (a2). Damit wird es klarer, wie der UART bei der Cube Bibliothek initialisiert werden muss: http://hhoegl.informatik.hs-augsburg.de/es2/cube/cube_basics.pdf Ich empfehle auch, in das Beispiel ``cube-demos/PWR_ModesSelection`` zu schauen. Dort sieht man wie der UART Code funktioniert. In den ersten 47 Seiten des UM1884 ist eine gute Übersicht wie die Cube-Bibliothek strukturiert ist, diese Seiten habe ich aus dem mehr als 2700 starken Text herausgezogen: http://hhoegl.informatik.hs-augsburg.de/es2/stm32l4/Manuals/UM1884-HAL-Doku-1-47.pdf 16.12., 14 Uhr -------------- Vorlesung: Low-power Programmierung (leider nicht auf den Aufnahme-Knopf gedrückt) Siehe Skript http://hhoegl.informatik.hs-augsburg.de/es2/skript/lowpower.html Beispielprogramme: * https://r-n-d.informatik.hs-augsburg.de:8080/es2-nucl476/cube-demos/tree/master/PWR_ModesSelection Bei diesem Beispiel wurden folgende Stromaufnahmen gemessen: http://hhoegl.informatik.hs-augsburg.de/es2/Stromaufnahmen.txt * https://r-n-d.informatik.hs-augsburg.de:8080/es2/es2-nucl476/cube-demos/-/tree/master/FreeRTOS_LowPower Lit.: * http://hhoegl.informatik.hs-augsburg.de/es2/prog/keil_grobe_energyeff.pdf (S. 1-9) * STM32L4 ultra-low-power features overview (AN4621), 2017, siehe ``_ * STM32L4 Reference Manual (RM0351), chap. 5.3 "Low-power modes", siehe ``_ * Elecia White, Making Embedded Systems, chap. 10 "Reducing Power Consumption" (siehe Literaturangaben im Skript) Aufgabe 6: a. Schauen Sie sich den Quelltext für das Beispiel "PWR_ModesSelection" an und stellen Sie in einer Tabelle zusammen, was in den einzelnen Stromsparbetriebsarten jeweils zum Stromsparen angewendet wird. b. Falls Sie ein Multimeter zu Hause haben, dann finden Sie heraus, welche Auflösung dessen kleinster Strommessbereich (Gleichstrom) hat. Sollten Sie auch noch ein Nucleo Board zu Hause haben, dann können Sie selber die Stromaufnahme des Boards über die beiden IDD Anschlüsse ermitteln. c. Bestimmen Sie die Stromstärken für die LED-Ein und LED-Aus Zustände aus dem Oszilloskop-Bild im Skript, Abschnitt 6.10 ("Praktische Strommessung"). d. Welche Stromsparbetriebsarten kommen beim STM32L476 in Frage, wenn man einen Rauchmelder bauen möchte, der aus einer CR2032 Zelle (3,0V, 210mAh) gespeist werden soll und 10 bis 20 Jahre damit laufen soll? e. Quelltext von FreeRTOS_LowPower ansehen. Wie funktioniert es? 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 * Info zu Vim - http://hhoegl.informatik.hs-augsburg.de/pub/vim/vim-quickref/vim-quickref.pdf * Asciinema Casts - http://hhoegl.informatik.hs-augsburg.de/es2/sphinx-asciinema/_build/html/main.html * Git Spicker http://hhoegl.informatik.hs-augsburg.de/hhwiki/GitSpicker * FreeRTOS - Buch von Richard Barry, dem Autor von FreeRTOS (jetzt a:FreeRTOS, "a" fuer Amazon): Mastering the FreeRTOS™ Real Time Kernel, 399 Seiten, 2016. https://www.freertos.org/Documentation/RTOS_book.html Vom gleichen Autor gibt es online auch ein Tutorial: Real Time Application Design Tutorial - Using FreeRTOS in small embedded systems https://www.freertos.org/tutorial/ RTOS Konzepte: https://www.freertos.org/implementation/main.html - UM1722 - Developing Applications on STM32Cube with RTOS (2014, 26 Seiten) http://hhoegl.informatik.hs-augsburg.de/es2/stm32l4/Manuals/DM00105262.pdf - Yiu, Kap. 19 http://hhoegl.informatik.hs-augsburg.de/es2/prog/rtos/yiu-3e-ch19.pdf - Constantin Gonzalez, Mit Microcontrollern in die Cloud, Elektronik 24/2018 (4 Seiten). http://hhoegl.informatik.hs-augsburg.de/es2/prog/rtos/aFreeRTOS-Elektronik-24-2018.pdf * Alte Klausuren: http://hhoegl.informatik.hs-augsburg.de/es2/Klausuren/