ES2 Klausurvorbereitung¶
Welche Programmteile in C kommen in welchen Speicherbereichen zu liegen? Betrachten Sie Vektoren, Maschinencode, initialisierte globale Daten, nicht initialisierte globale Daten, globale read-only Daten, Stack und Heap. Das Bild am Anfang des folgenden Abschnittes im Skript dient zur Verdeutlichung: es2/skript/prog.html
Startup von RESET bis Eintritt von
main()
.Taktversorgung des F446 oder L476 (Übersichtsbild welche Taktquellen es gibt).
Yiu, Cortex M for Beginners, 2016 es2/Yiu-WP-Cortex-M-Beginner-2016.pdf
In welche Einheiten sind die Funktionsblöcke des F446 bzw. L476 aufgeteilt? Siehe Farben im Bild am Anfang von
J. Yiu, The Definitive Guide to ARM® Cortex®-M3 and Cortex®-M4 Processors, 3rd Edition, https://learning.oreilly.com/library/view/the-definitive-guide/9780124080829
Intro to embedded software development
Kap. 2.3, 2.4, 2.5 (vor allem 2.5 über Programmablauf)
CMSIS Core (Kap. 2.9)
GNU Compiler
Kap. 17.1 - 17.4
Retargeting und Semihosting
Ende von Kap. 2, Kap. 18
Debuggen mit GDB
Alle Versuche im Praktikum
https://gitlab.informatik.hs-augsburg.de/es2/es2-nucf446/
Starter Beispiel
GDB-Uebung
V1
V3
Was soll an einem Embedded Arbeitsplatz alles vorhanden sein? Nachdenken über Werkzeuge, Messgeräte, Rechner.
Wer möchte, kann auch mal in das Buch von Lacamera hineinschauen (nicht relevant fuer Prüfung): Kap. 1 und 2
https://learning.oreilly.com/library/view/embedded-systems-architecture/9781803239545/
In diesem Semester nicht:
Exceptions, Interrupts, Faults
Übersichtsblatt
Zweiteiliger Artikel von Bertolotti (Pflicht!)
Wie findet man die Exception-Nummer eines Interrupts heraus?
Wie programmiert man einen Systick Handler?
Welche Funktionsblöcke spielen eine Rolle, wenn man externe Interrupts verwenden will?
Beispiele
syshandler-cmsis
undgpio-intr-cmsis
in https://gitlab.informatik.hs-augsburg.de/es2/es2-nucf446.Yiu, Kap. 7, 8, 12 (freiwillig)
Low-Power Programmierung
Skript: es2/skript/lowpower.html
Wie lange läuft ein Board, das bei 5V etwa 80 mA Strom aufnimmt, an einem 3,7V Li-Polymer Akku mit 550 mAh Kapazität? Zum Anheben der 3,7V auf 5V wird ein Schaltwandler mit fast 100% Wirkungsgrad verwendet.
Fragen zum Artikel von R. Keil, F. Grobe, Designing energy efficient systems with Cortex-M Microcontrollers, 2009:
Welche Betriebsarten zum Stromsparen hat ein moderner Mikrocontroller? Gerne in die Antwort eine Tabelle aufnehmen.
Mit welchem Trick bei der Programmierung kann man ein Gerät mehrere Jahre aus einer kleinen Batterie betreiben? Zeichnen Sie die Leistungsaufnahme über der Zeit hin.
Ist es besser, zum Stromsparen einen langsamen oder einen schnellen Mikrocontroller zu nehmen? (Hinweis: Die Stromaufnahme erhöht sich proportional mit der Taktfrequenz!)
Nebenläufige Programmierung (Yiu, Kap. 19)
Der Artikel von Bill Earl, „Multi-tasking the Arduino“, beschreibt sehr anschaulich, wie man mehrere Sachen auf dem Mikrocontroller quasi-gleichzeitig erledigen kann, ohne einen echten Multi-Tasker zu haben. Wie funktionieren die einzelnen Evolutionsstufen der Anwendung mit ihren Vor- und Nachteilen?
Wie funktioniert der simple kooperative Multitasker in folgendem Beispielprogramm? https://gitlab.informatik.hs-augsburg.de/es2/es2-nucl476/taskswitch Wie kann man ihn erweitern, so dass ein präemptiver Multitasker entsteht?
Welches Problem verdeutlicht folgendes Beispiel? Auf welche Arten kann man es lösen? https://gitlab.informatik.hs-augsburg.de/es2/es2-nucl476/shared-data-problem
FreeRTOS/CMSIS-RTOS im Skript: es2/skript/rtos.html