9. Fragensammlung

CMSIS Bibliothek

Lit.: [YIUDG] und [MARTIN]

Scheduling, OS-Basics, State Machines, Interrupts

  1. 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. Beschreiben Sie die einzelnen Evolutionsstufen der Anwendung mit ihren Vor- und Nachteilen, die er in seinem Artikel beschreibt.

    Lit.: https://learn.adafruit.com/multi-tasking-the-arduino-part-1

  2. Wie entsteht bei Tasks eine race condition und wie vermeidet man sie?

    Lit.: [WHITE], Kapitel 5: Managing the Flow of Activity. Hier sind hauptsächlich die Abschnitte “Scheduling and Operating System Basics” und “State Machines” wichtig.

  3. Welche Möglichkeiten gibt es, eine Zustandsmaschine zu implementieren? (White).

  4. (Für Fortgeschrittene) Statt Tasks in einem RTOS kann man eine Anwendung auch als Zustandsmaschine mit quasi-parallelen Zustandsübergängen beschreiben. Welche Vorteile hat das? Sehen Sie sich den Foliensatz von Miro Samek über das “QP Framework” an und suchen Sie die Vorteile heraus.

    Lit.: Miro Samek, “Quick Introduction to QP State Machine Framework” und “Modern Embedded Systems”. Siehe auch die Homepage der Firma https://www.state-machine.com.

    https://hhoegl.informatik.hs-augsburg.de/es2/prog/QP_quick_intro.pdf

Allgemeine Fragen zu [BARRY]

  1. Welches Konstrukt der Sprache C kann zu einer Task gemacht werden?

  2. Wie macht man in FreeRTOS eine Task? (1.2, Task Functions)

  3. Welche Zustände kann eine Task haben? (1.6, Full task state machine)

  4. Wie kann man eine Task verzögern? (vTaskDelay(), S. 21)

  5. Welche Prioritäten kann eine Task haben?

  6. Was ist eine “Idle Task”?

  7. Kann man die Priorität einer Task zur Laufzeit ändern, und wenn ja, wie? (1.8 Changing the priority of a task)

  8. Welchen Scheduling-Algorithmus verwendet FreeRTOS? (Kap. 1.10)

  9. Was ist eine “Queue”? (Kap. 2)

  10. Wann blockiert eine Queue?

  11. Kann eine Queue mehrere Sender und/oder mehrere Empfänger haben?

  12. Was bedeutet “deferred interrupt processing”? (Kap. 3.2)

  13. Was ist eine “Binary Semaphore”?

  14. Was ist eine “Counting Semaphore”? (Kap. 3.3)

  15. Was ist ein “Mutex”? (Kap. 4.3, S. 105)

  16. Was ist “Priority Inversion”? (S. 111)

  17. Gibt es in FreeRTOS eine so komfortable Heap-Speicherverwaltung wie in der libc? Nennen Sie die in FreeRTOS implementierten Verfahren (siehe [BARRY], Kap. 2.2 Example Memory Allocation Schemes).

Fragen zu [BARRY2]

Lesen Sie 1.1 bis 1.6.

  1. Beschreiben Sie knapp die geplante Anwendung in eigenen Worten.

  2. Welche Vor- und Nachteile hat die Programmierung ohne RTOS? (“Why use an RTOS Kernel?”)

  3. Welche Vor- und Nachteile hat die Programmierung mit einem preemptiven RTOS?

Low-Power Programmierung

Fragen zu [WHITE], Kap. 10

  1. Wie lauten die physikalischen Formeln für Spannung (Ohm’sches Gesetz), Leistung und Energie? Schreiben Sie auch die Einheiten hin.

    P = ...
    W = ...
    
  2. Auf welche verschiedene Arten kann man die Stromaufnahme eines Mikrocontrollers messen?

  3. Wie kann man ein Programm möglichst stromsparend programmieren? Machen Sie eine Aufstellung aller Techniken aus den Abschnitten “Turn Off the Light When You Leave the Room” und “Putting the Processor to Sleep”.

  4. Wie lange läuft ungefähr das Gnublin 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 zu [KEIL]

  1. Welche Betriebsarten zum Stromsparen hat ein moderner Mikrocontroller? Gerne in die Antwort eine Tabelle aufnehmen.

  2. Mit welchem Trick bei der Programmierung kann man ein Gerätt mehrere Jahre aus einer kleinen Batterie betreiben? Zeichnen Sie die Leistungsaufnahme über der Zeit hin.

  3. Ist es besser, zum Stromsparen einen langsamen oder einen schnellen Mikrocontroller zu nehmen? (Hinweis: Die Stromaufnahme erhöht sich proportional mit der Taktfrequenz!)

Programmiersprachen

  1. Welche Programmiersprachen bzw. Programmierumgebungen beschreibt Joseph Yiu in seinem Artikel [YIUWAYS]?

  2. Vergleichen Sie die Projekte Micropython und Espruino.

    • Welche Programmiersprache wird verwendet?

    • Welche Hardware wird benötigt?

    • Welche Peripherie wird unterstützt?

    • Welchen Umfang hat die Bibliothek?

Links

Mbed Projekt

https://www.mbed.com

Lit.: Rob Toulson, Tim Wilmshurst, Fast and Effective Embedded Systems Design. Applying the ARM mbed, 2nd Edition, Newnes 2016.

https://learning.oreilly.com/library/view/fast-and-effective/9780081009031/