601
Kommentar:
|
← Revision 70 vom 2017-12-18 10:27:32 ⇥
9159
|
Gelöschter Text ist auf diese Art markiert. | Hinzugefügter Text ist auf diese Art markiert. |
Zeile 8: | Zeile 8: |
.. contents:: | **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 |
Zeile 11: | Zeile 17: |
Wöchentliche Themen =================== |
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 <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 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 <http://hhoegl.informatik.hs-augsburg.de/es2/eside/eside.html>`_ (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 ==================== |
Zeile 16: | Zeile 164: |
- Buss- und Bettag 22.11.2017 ist frei 4.10.2017 --------- |
.. - Buss- und Bettag 22.11.2017 ist frei |
Zeile 25: | Zeile 173: |
**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!* |
|
Zeile 28: | Zeile 181: |
**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. |
|
Zeile 31: | Zeile 192: |
**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 |
|
Zeile 36: | Zeile 204: |
**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. |
|
Zeile 39: | Zeile 213: |
**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. |
|
Zeile 43: | Zeile 234: |
**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. |
|
Zeile 47: | 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. |
|
Zeile 50: | Zeile 264: |
**Vorlesung:** Evaluierung (Ausfüllen der Formulare), Rückmeldung zu den Berichten, Werbung für Embedded Linux im Sommer 2018. **Praktikum:** Gruppe 2 gibt Versuch 3 ab. |
|
Zeile 53: | Zeile 273: |
10.1.2018 (?) ------------- |
**Vorlesung:** Besprechung der Evaluierung; Klausurvorbereitung. **Praktikum:** Zeit fuer Nachholer. Abgabe der Berichte bis spaetestens 24 Uhr. |
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.9 13.12.2017
Vorlesung: Evaluierung (Ausfüllen der Formulare), Rückmeldung zu den Berichten, Werbung für Embedded Linux im Sommer 2018.
Praktikum: Gruppe 2 gibt Versuch 3 ab.
5.10 20.12.2017
Vorlesung: Besprechung der Evaluierung; Klausurvorbereitung.
Praktikum: Zeit fuer Nachholer.
Abgabe der Berichte bis spaetestens 24 Uhr.