3220
Kommentar:
|
34
|
Gelöschter Text ist auf diese Art markiert. | Hinzugefügter Text ist auf diese Art markiert. |
Zeile 4: | Zeile 4: |
| Hochschule Augsburg | Fakultät für Informatik | Embedded Systems II Aufgaben zu FreeRTOS ==================== (von Andreas Tschirner, nachbearbeiten von H. Högl) .. contents:: Inhalt .. sectnum:: Allgemeine Fragen ----------------- Beantworten Sie die folgenden Fragen: 1. Allgemeines - Was sind typische Aufgaben eines Betriebssystems und welche davon werden von FreeRTOS unterstützt, gerne auch in Form einer Tabelle. - Reichen die *Ressourcen* des STM32L476 aus, um FreeRTOS darauf laufen zu lassen? Denken Sie an Speicher für Programm/Daten und die CPU. - Wann eignet sich FreeRTOS in einem Projekt (oder Teilprojekt) und wann nicht? Bzw. was sind Kriterien die gegen bzw. für FreeRTOS in einem Projekt sprechen. - Was ist der Unterschied zwischen Prozessen, Threads und Tasks? 2. Unterschied zu Linux Gehen Sie kurz auf die Unterschiede von Linux und FreeRTOS ein (Betriebsart, Scheduler, Schutz, Echtzeit). 3. Synchronisationsmechanismen - Was versteht man unter Multitasking und welche Arten unterstützt FreeRTOS? - Wofür werden Semaphore typischerweise verwendet? - Was versteht man unter dem Begriff *Gatekeeper Task* und welches Problem wird damit entschärft? FreeRTOS_ThreadCreation ----------------------- 1. Erweitern Sie das Beispiel um einen vierten Thread und lassen Sie innerhalb des Threads die vierte LED jede Sekunde toggeln. 2. Ändern Sie die Priorität eines Threads z.B. auf ``osPriorityRealtime``. Was hat sich nun geändert? Machen Sie sich das an Hand des Zustandsdiagramms klar. Dafür reichen die beiden Zustände ``Ready`` und ``Running``. FreeRTOS_Semaphore ------------------ 1. Erweitern Sie das Beispiel um einen vierten Thread und lassen Sie innerhalb des Threads die vierte LED jede Sekunde ``toggeln``. 2. Erklären Sie das Verhalten an Hand des Zustandsdiagramms. Welche Aufgabe hat nun der dritte Zustand ``Blocked`` und welche Ereignisse sorgen dafür, dass der Thread von ``Blocked`` zu ``Ready`` wechselt? FreeRTOS_SemaphoreFromISR ------------------------- 1. Erweitern Sie das Beispiel um einen weiteren Thread (LED1). Bei dem ersten Tastendruck soll nur die LED2 aufleuchten und beim zweiten nur die LED1. Jeder Tastendruck bewirkt also, dass die eine LED aufleuchtet und die andere erlischt. Gatekeeper Task --------------- Studieren Sie zunächst die weiteren Beispiele: - FreeRTOS_Mail - FreeRTOS_Signal Erstellen Sie nun ein Projekt mit fünf Threads. Einer stellt den anderen die serielle Schnittstelle (USART2) zur Verfügung. Diese Funktion soll nicht blockieren, sondern den Inhalt, der über die serielle Schnittstelle ausgegeben werden soll, entgegennehmen und entsprechend umkopieren. Nach einem Tastendruck (User Button) sollen die anderen vier Threads eine Ausgabe (über den vierten Thread) provozieren. Hinweise: - Welchen Synchronisationsmechanismus Sie verwenden ist Ihnen überlassen. Zur Auswahl stehen Semaphore, Signal und Mail. - Sie können das entsprechende Beispiel kopieren, umbenennen und anpassen. |
XXX |
XXX