7117
Kommentar:
|
8988
|
Gelöschter Text ist auf diese Art markiert. | Hinzugefügter Text ist auf diese Art markiert. |
Zeile 11: | Zeile 11: |
Skript: http://hhoegl.informatik.hs-augsburg.de/es2/skript |
|
Zeile 17: | Zeile 20: |
* In Fritzing habe ich das STM32 Nucleo Board und ein kleines Steckbrett nebeneinander platziert: |
* In Fritzing habe ich das STM32 Nucleo Board und ein kleines Steckbrett nebeneinander platziert: |
Zeile 21: | Zeile 23: |
- PNG Bild: http://hhoegl.informatik.hs-augsburg.de/es2/img/es2-template.png | - 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 |
Zeile 104: | Zeile 112: |
(evtl. vorher noch python3-setuptools und python3-pip installieren) | |
Zeile 187: | Zeile 196: |
Hausaufgabe: Yiu, Kap. 1, 2, 17 |
|
Zeile 193: | Zeile 204: |
**Vorlesung:** | **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. |
Zeile 200: | Zeile 213: |
**Vorlesung:** | **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 |
Zeile 207: | Zeile 225: |
**Vorlesung:** | **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 |
Zeile 214: | Zeile 235: |
**Vorlesung:** | **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 |
Zeile 222: | Zeile 247: |
**Vorlesung:** Low-power Beispielprogramm: https://r-n-d.informatik.hs-augsburg.de:8080/EmbSys2/stm32cubel4/tree/master/examples/PWR/PWR_ModesSelection Lit.: - http://hhoegl.informatik.hs-augsburg.de/es2/prog/keil_grobe_energyeff.pdf (S. 1-9) - Elecia white, *Making Embedded Systems*, chap. 10 "Reducing Power Consumption" (siehe Lit. in Skript) - STM32L4 ultra-low-power features overview (AN4621), 2017 - STM32L4 Reference Manual, chap. 5.3 "Low-power modes" **Praktikum:** Gruppe 1 gibt Versuch 3 ab. 13.12.2017 ---------- |
|
Zeile 224: | Zeile 266: |
**Praktikum:** Gruppe 1 gibt Versuch 3 ab. 13.12.2017 |
**Praktikum:** Gruppe 2 gibt Versuch 3 ab. 20.12.2017 |
Zeile 231: | Zeile 273: |
**Praktikum:** Gruppe 2 gibt Versuch 3 ab. 20.12.2017 ---------- **Vorlesung:** |
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
Inhalt
1 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
2 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 <Hubert.Hoegl@hs-augsburg.de>. 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
3 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/
4 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
5 Wöchentliche Termine
- Mittwoch, 14:00 bis 18:50
- Allerheiligen 1.11.2017 ist frei
5.1 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!
5.2 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.
5.3 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
5.4 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.
5.5 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.
5.6 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.
5.7 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.
5.8 6.12.2017
Vorlesung: Low-power
Beispielprogramm: https://r-n-d.informatik.hs-augsburg.de:8080/EmbSys2/stm32cubel4/tree/master/examples/PWR/PWR_ModesSelection
Lit.:
- http://hhoegl.informatik.hs-augsburg.de/es2/prog/keil_grobe_energyeff.pdf (S. 1-9)
- Elecia white, Making Embedded Systems, chap. 10 "Reducing Power Consumption" (siehe Lit. in Skript)
- STM32L4 ultra-low-power features overview (AN4621), 2017
- STM32L4 Reference Manual, chap. 5.3 "Low-power modes"
Praktikum: Gruppe 1 gibt Versuch 3 ab.
5.10 20.12.2017
Vorlesung:
Praktikum: Zeit fuer Nachholer.
Abgabe der Berichte bis spaetestens 24 Uhr.