#format rst #language de ============================= Embedded Systems II (WS17/18) ============================= **Vorlesung** Mi, 14-15:30 in M1.02 +++ **Praktikum** Mi, 15:40-18:50 in G2.16 Skript: http://hhoegl.informatik.hs-augsburg.de/es2/skript .. contents:: Inhalt .. sectnum:: Neuigkeiten =========== * In Fritzing habe ich das STM32 Nucleo Board und ein kleines Steckbrett nebeneinander platziert: - Fritzing Datei (.fzz): http://hhoegl.informatik.hs-augsburg.de/es2/img/es2-template.fzz - PNG Bild: http://hhoegl.informatik.hs-augsburg.de/es2/img/es2-template_bb.png Diese Vorlage dürfen Sie gerne in Ihrem Bericht verwenden. * Nucleo STM32L476RG Arduino Pins http://hhoegl.informatik.hs-augsburg.de/es2/img/nucleo_l476rg_arduino.png Organisatorisches ================= **Ablauf** Die Veranstaltung *Embedded System II* findet wöchentlich am Mittwoch Nachmittag ab 14 Uhr statt. Am Anfang ist eine 90-minütige Vorlesung, danach finden zwei Blöcke Praktikum statt. **Wöchentliches Praktikum** Für das Praktikum werden die TeilnehmerInnen der Veranstaltung in zwei Gruppen G1 und G2 geteilt, die im wöchentlichen Wechsel im Praktikum sein werden. In jeder Gruppe werden Teams gebildet mit zwei bis drei TeilnehmerInnen. Die Aufgaben sollen in der zweiwöchigen *Vorbereitungszeit* gründlich vorbereitet werden, so dass beim Praktikumstermin die Aufgaben fertiggestellt werden können. In der zweiwöchigen *Nachbereitungszeit* soll der Bericht aktualisiert werden. Die Bewertung der Aufgaben erfolgt nach den Ampelfarben: Grün steht für die erfolgreiche Abgabe, gelb steht für Nacharbeit und rot gibt es für fehlende Abgaben. Das Praktikum ist nicht bestanden bei zwei oder mehr roten Abgaben. Zwei mal gelb steht für einmal rot. Im Praktikum herrscht Anwesenheitspflicht! **Quelltext** Jede Gruppe pflegt ein Gitlab Repositorium mit allen Abgaben (Quelltexte für jeden Versuch, Bericht). **Bericht** Jedes Team schreibt von Anfang an einen Bericht über das Praktikum. Bei jedem Praktikumstermin wird der Fortschritt des Berichtes kontrolliert. Am Ende der Veranstaltung wird der komplette Bericht abgegeben. Damit eine individuelle Notenvergabe erfolgen kann, müssen die von den jeweiligen Teammitglieder geschriebenen Abschnitte im Bericht kenntlich gemacht werden. Es gibt ein Gerüst für den Bericht im Format Restructured Text bzw. Sphinx. Der Bericht hat ein einheitliches Deckblatt. Der Bericht ist auch im Gitlab Repositorium enthalten. **Finale Abgabe** Der Bericht muss spätestens am **20.12.2017 bis Mitternacht** von allen Teams in elektronischer Form abgeschickt werden an . Der Bericht enthält einen Link auf das Gitlab Repositorium. **Klausur** Die erfolgreiche Teilnahme am Praktikum ist die Bedingung für die Teilnahme an der Klausur. Vergangene Klausuren finden Sie unter http://hhoegl.informatik.hs-augsburg.de/es2/Klausuren Kursmaterial ============ * Skript http://hhoegl.informatik.hs-augsburg.de/es2/skript * Auszüge aus Datenblättern http://hhoegl.informatik.hs-augsburg.de/es2/stm32l4/Auszuege * `ESIDE Dokumentation `_ (mit Installationsanleitung) * Praktikum mit Aufgaben: http://www.andreas-tschirner.de * Anleitung "Einfache Berichte mit Sphinx schreiben" http://hhoegl.informatik.hs-augsburg.de/dva/sphinxbericht/ ESIDE Kurzanleitung zur Installation ==================================== :: git clone https://r-n-d.informatik.hs-augsburg.de:8080/hubert.hoegl/eside.git cd eside sudo python3 -m pip install --upgrade . (evtl. vorher noch python3-setuptools und python3-pip installieren) wget http://hhoegl.informatik.hs-augsburg.de/es2/tools/openocd-0.10.0.tar.bz2 tar jxvf openocd-0.10.0.tar.bz2 cd openocd-0.10.0 # Achtung: hier evtl. Pakete "pkg-config" und "libusb-1.0-0-dev" nachinstallieren ./configure --enable-stlink --prefix=/opt/openocd-0.10.0/ make sudo make install # PATH Umgebungsvariable in ~/.bashrc erweitern # Udev Regel installieren cp `eside -p`/etc/49-stlinkv2-1.rules /etc/udev/rules.d/ cp `eside -p`/etc/99-openocd.rules /etc/udev/rules.d/ cp `eside -p`/etc/100-saleae-logic.rules /etc/udev/rules.d/ # Pruefen, ob alle Vorbedingungen erfuellt sind eside -c # Demo-Projekt holen git clone https://r-n-d.informatik.hs-augsburg.de:8080/es2-nucl476/starter.git cd starter # eside starten eside -s **Berichtete Fehler beim Installieren** - Fehler: OpenOCD erkennt Nucleo STM32L476 Board nicht. Abhilfe: OpenOCD muss unbedingt Version 0.10 oder neuer sein. - Fehler: ``libusb-1.0-0-dev`` ist nicht installiert. Abhilfe: ``apt-get install libusb-1.0-0-dev`` - Fehler: arm-none-eabi-gdb hat nicht Python eingebaut. Abhilfe: Download des Binaerpaketes von https://launchpad.net/gcc-arm-embedded/. Dabei ist ein ``arm-none-eabi-gdb-py``. Nachtrag: Aktueller Download der 64-Bit Version von https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads Wöchentliche Termine ==================== - Mittwoch, 14:00 bis 18:50 - Allerheiligen 1.11.2017 ist frei .. - Buss- und Bettag 22.11.2017 ist frei 11.10.2017 ---------- **Vorlesung:** Einfuehrung **Praktikum:** Es gibt eine Einfuehrung in git, sphinx, tmux und weiteren wichtigen Programmen. *Findet nur an diesem Tag auch im M1.02 statt!* 18.10.2017 ---------- **Vorlesung:** Organisation des Hauptspeichers, "Sections", Abbildung der Bestandteile eines C Programmes auf die Sections, Debuggen mit GDB, haeufig verwendete Funktionsbloecke im STM32L4. Vorfuehrung des Beispielprogrammes "starter": https://r-n-d.informatik.hs-augsburg.de:8080/es2-nucl476/starter **Praktikum:** Gruppe 1 beginnt mit Versuch 1 im G2.16. 25.10.2017 ---------- **Vorlesung:** Gegenueberstellung "bare metal" und Programmierung mit CubeL4 + libc. Aufbau der Cube Bibliothek (HAL, LL, BSP, Beispiele, CMSIS). Tags erzeugen von allen Quelltexten mit ``eside -t`` (Konfiguration in ``.eside/tagsconf.py``). Standard C Bibliothek benoetigt syscalls.c, da kein Betriebssystem-Kernel vorhanden ist. Projekte in stm32cubel4/examples/ in Vim betrachtet. Navigation mit tags. Startup-Code in Assembler ``startup_stm32l476xx.s`` (von CMSIS), Interrupt-Handler ``stm32l4xx_it.c``, System-Initialisierung in ``system_stm32l4xx.c``. Hausaufgabe: Yiu, Kap. 1, 2, 17 **Praktikum:** Gruppe 2 beginnt mit Versuch 1 8.11.2017 --------- **Vorlesung:** Es geht haupsächlich um die Funktionsblöcke im Mikrocontroller, die wichtig bei der Initialisierung sind: RCC, PWR, GPIO/Alternate Functions. Zusätzlich bei Interrupts: NVIC, SCB, SYSCFG, EXTI. **Praktikum:** Gruppe 1 gibt Versuch 1 ab und beginnt mit Versuch 2. 15.11.2017 ---------- **Vorlesung:** Kommentar zum bisherigen Stand der Praktikumsberichte; Demonstration des Beispielprojektes ``gpio-intr-cmsis``: Praktisches Beispiel zu den eher theoretischen Erläuterungen vom 8.11.2017. Das Programm ist auf der CMSIS Abstraktionsebene geschrieben. Es erzeugt einen Interrupt beim Drücken der User-Taste. Der Interrupt führt zum Umschalten der grünen LED. https://r-n-d.informatik.hs-augsburg.de:8080/es2-nucl476/gpio-intr-cmsis **Praktikum:** Gruppe 2 gibt Versuch 1 ab und beginnt mit Versuch 2. 22.11.2017 ---------- **Vorlesung:** System handler, SysTick, bus fault, usage fault, hard fault, integer division by zero, FPU division by zero interrupt, SVC handler. https://r-n-d.informatik.hs-augsburg.de:8080/es2-nucl476/syshandler-cmsis **Praktikum:** Gruppe 1 gibt Versuch 2 ab und beginnt mit Versuch 3. 29.11.2017 ---------- **Vorlesung:** Hier ging es hauptsaechlich um Parallelitaet: - 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 **Praktikum:** Gruppe 2 gibt Versuch 2 ab und beginnt mit Versuch 3. 6.12.2017 --------- **Vorlesung:** Low-power Lit.: - http://hhoegl.informatik.hs-augsburg.de/es2/prog/keil_grobe_energyeff.pdf - Elecia white, *Making Embedded Systems*, chap. 10 "Reducing Power Consumption" (siehe Lit. in Skript) **Praktikum:** Gruppe 1 gibt Versuch 3 ab. 13.12.2017 ---------- **Vorlesung:** **Praktikum:** Gruppe 2 gibt Versuch 3 ab. 20.12.2017 ---------- **Vorlesung:** **Praktikum:** Zeit fuer Nachholer. Abgabe der Berichte bis spaetestens 24 Uhr.