Eingebettete Systeme (Vorlesung mit Übungen) - Exam.pdf

Eingebettete Systeme (Vorlesung mit Übungen) - Exam
Eingebettete Systeme (Vorlesung mit Übungen) - Exam Aufgabe 1) Ein eingebettetes System ist ein spezialisiertes Computersystem, das in ein größeres System integriert ist und spezifische Kontrollfunktionen ausführt. Eingebettete Systeme sind für Aufgaben wie Steuerung, Überwachung oder Assistenzfunktionen konzipiert und unterscheiden sich von allgemeinen Computersystemen durch ihre spezifische Anwe...

© StudySmarter 2024, all rights reserved.

Eingebettete Systeme (Vorlesung mit Übungen) - Exam

Aufgabe 1)

Ein eingebettetes System ist ein spezialisiertes Computersystem, das in ein größeres System integriert ist und spezifische Kontrollfunktionen ausführt. Eingebettete Systeme sind für Aufgaben wie Steuerung, Überwachung oder Assistenzfunktionen konzipiert und unterscheiden sich von allgemeinen Computersystemen durch ihre spezifische Anwendungsorientierung und ihre besondere Architektur.

  • Merkmale: spezialisierte Hardware und Software, Echtzeitfähigkeit, Zuverlässigkeit, Energieeffizienz
  • Beispiele: Medizingeräte, Industriesteuerungen, Unterhaltungselektronik
  • Typische Komponenten: Mikrocontroller, Sensoren, Aktoren
  • Einsatzgebiete: Automobilindustrie, Telekommunikation, Hausgeräte

a)

Angenommen, Du arbeitest in einem Team, das ein eingebettetes System für ein Medizingerät entwickelt. Beschreibe die grundlegenden Schritte des Entwicklungsprozesses für dieses System, von der Anforderungsanalyse bis zur Validierung und dem Deployment. Gehe dabei auch auf die Merkmale ein, die dieses System erfüllen muss, und begründe Deine Entscheidungen.

Lösung:

Die Entwicklung eines eingebetteten Systems für ein Medizingerät erfordert einen strukturierten und sorgfältigen Ansatz, um sicherzustellen, dass das System alle medizinischen Standards erfüllt und zuverlässig funktioniert. Im Folgenden beschreibe ich die grundlegenden Schritte des Entwicklungsprozesses:

  • Anforderungsanalyse: In dieser Phase werden die Anforderungen und Spezifikationen des Systems gesammelt und dokumentiert. Dazu gehört die Definition der Funktionen, die das Medizingerät ausführen soll, sowie die Festlegung der Leistungsanforderungen, Zuverlässigkeitskriterien und Sicherheitsstandards. Spezifische Merkmale, die berücksichtigt werden müssen, sind:
    • Echtzeitfähigkeit: Das System muss in der Lage sein, sofort auf Eingaben zu reagieren, um eine zuverlässige und sichere Behandlung zu gewährleisten.
    • Zuverlässigkeit: Das System muss extrem zuverlässig sein, da Fehlfunktionen lebensbedrohlich sein können.
    • Energieeffizienz: Da Medizingeräte oft batteriebetrieben sind, muss das System energieeffizient sein, um lange Betriebszeiten zu gewährleisten.
  • Design und Architektur: In dieser Phase wird die Systemarchitektur entworfen, inklusive der Auswahl der Hardware-Komponenten wie Mikrocontroller, Sensoren und Aktoren. Es wird ebenfalls entschieden, welche Software-Plattform und Betriebssysteme verwendet werden sollen. Die besondere Architektur des Systems muss folgende Aspekte berücksichtigen:
    • Separate Module für Steuerung, Überwachung und Kommunikationsfunktionen, um die Wartbarkeit zu erhöhen.
    • Redundante Systeme für kritische Funktionen zur Erhöhung der Zuverlässigkeit.
  • Implementierung: Nach der Designphase beginnt die eigentliche Entwicklung. Die Hardware wird zusammengestellt und getestet, die Software wird programmiert und integriert. Für ein Medizingerät ist es wichtig, dass die Entwicklung ständigen Tests und Überprüfungen unterliegt, um Fehler frühzeitig zu erkennen und zu beheben.
  • Test und Verifikation: In dieser Phase wird das System umfassend getestet, um sicherzustellen, dass es den Anforderungen entspricht und zuverlässig funktioniert. Dazu gehören Unit-Tests, Integrationstests, Systemtests und End-zu-End-Tests. Besondere Aufmerksamkeit liegt auf:
    • Funktionssicherheit: Überprüfen, dass alle Systeme wie vorgesehen arbeiten, besonders unter Extrembedingungen.
    • Sicherheitsstandards: Validierung nach medizinischen Normen und Standards wie ISO 13485.
  • Validierung: Dies umfasst die endgültige Überprüfung, dass das System in der realen Umgebung wie erwartet funktioniert. Klinische Tests und Benutzerstudien sind hierbei besonders wichtig, um sicherzustellen, dass das Gerät sicher und effektiv ist.
  • Deployment: Nach erfolgreicher Validierung wird das System für die Produktion vorbereitet und in den Markt eingeführt. In dieser Phase werden auch Schulungen für Benutzer und Wartungspersonal durchgeführt, sowie die notwendigen Dokumentationen erstellt.

Durch das Beachten und sorgfältige Umsetzen dieser Schritte wird sichergestellt, dass das entwickelte Medizingerät alle Anforderungen erfüllt und sicher betrieben werden kann.

b)

Für das Medizingerät sollen Sensoren verwendet werden, um die Vitalparameter der Patienten zu überwachen. Erläutere die Auswahl- und Integrationskriterien für diese Sensoren im Hinblick auf die Merkmale Echtzeitfähigkeit und Zuverlässigkeit. Gehe auch auf mögliche Herausforderungen ein und wie diese gelöst werden können.

Lösung:

Die Auswahl und Integration von Sensoren für ein Medizingerät zur Überwachung der Vitalparameter erfordert sorgfältige Berücksichtigung verschiedener Kriterien, insbesondere hinsichtlich der Merkmale Echtzeitfähigkeit und Zuverlässigkeit. Hier sind die wesentlichen Schritte und Überlegungen:

  • Auswahlkriterien:
    • Echtzeitfähigkeit: Die Sensoren müssen in der Lage sein, die Vitalparameter kontinuierlich und ohne Verzögerung zu erfassen. Dies ist entscheidend, um sofort auf kritische Zustände des Patienten reagieren zu können. Wichtige Echtzeitanforderungen sind:
      • Hohe Messfrequenz: Sensoren sollten in der Lage sein, Daten in Echtzeit oder nahezu in Echtzeit zu erfassen und weiterzuleiten.
      • Schnelle Datenverarbeitung: Die Daten müssen schnell verarbeitet und an das zentrale System weitergeleitet werden.
    • Zuverlässigkeit: Die Zuverlässigkeit der Sensoren ist entscheidend, um genaue und konsistente Messwerte zu gewährleisten. Dies beinhaltet:
      • Ständige Kalibrierung: Sensoren sollten regelmäßig kalibriert werden, um Genauigkeit und Präzision zu gewährleisten.
      • Lange Lebensdauer und Robustheit: Die Sensoren müssen unter verschiedenen Bedingungen zuverlässig arbeiten und langlebig sein.
  • Integrationskriterien:
    • Kompatibilität: Sensoren müssen sowohl hardware- als auch softwareseitig kompatibel mit dem eingebetteten System sein.
    • Stromverbrauch: Sensoren sollten energieeffizient sein, um die Gesamtlaufzeit des Medizingeräts zu maximieren.
    • Größe und Ergonomie: Sensoren sollten kompakt und für den Patientenkomfort geeignet sein.
  • Mögliche Herausforderungen und Lösungen:
    • Interferenzen und Rauschen: Externe elektromagnetische Interferenzen können die Messwerte der Sensoren beeinträchtigen. Lösung: Verwendung von abgeschirmten Kabeln und Gehäusen, sowie geeignete Filtertechniken zur Rauschunterdrückung.
    • Kalibrierung: Unzureichende oder inkonsistente Kalibrierung kann zu ungenauen Messwerten führen. Lösung: Implementierung automatisierter Kalibrierungsprozesse und regelmäßige Wartung der Sensoren.
    • Ausfallzeiten: Ausfälle der Sensoren können die Funktion des Medizingeräts beeinträchtigen. Lösung: Redundanz durch den Einsatz von Backup-Sensoren, sowie regelmäßige Überprüfung und Wartung.
    • Datenverarbeitung und -speicherung: Große Mengen an Sensordaten können die Leistungsfähigkeit des Systems beeinträchtigen. Lösung: Effiziente Algorithmen zur Datenverarbeitung und -kompression, sowie ausreichender Speicherplatz.

Durch sorgfältige Auswahl und Integration der Sensoren unter Berücksichtigung der genannten Kriterien und durch Implementierung geeigneter Lösungen für die Herausforderungen kann ein zuverlässiges und echtzeitfähiges Medizingerät zur Überwachung der Vitalparameter entwickelt werden.

c)

Ein zentrales Merkmal eines eingebetteten Systems ist die Energieeffizienz. Berechne den Energiebedarf eines Mikrocontrollers, der in dem Medizingerät verwendet wird, und zeige mögliche Optimierungsstrategien auf. Nehme dabei an, dass der Mikrocontroller 1.2V Spannung und 20mA Stromstärke im Betrieb benötigt und dass das System 24 Stunden am Tag betrieben wird.

Lösung:

Um den Energiebedarf eines Mikrocontrollers zu berechnen, der in einem Medizingerät verwendet wird, gehen wir schrittweise vor:

  • Berechnung des Energiebedarfs:
    • Leistungsaufnahme: Die Leistung (P) des Mikrocontrollers kann mit der Formel \( P = V \times I \) berechnet werden, wobei V die Spannung und I die Stromstärke ist.
      • Gegeben: V = 1.2V, I = 20mA = 0.02A
      • Berechnung: \( P = 1.2V \times 0.02A = 0.024W \)
    • Energieverbrauch pro Stunde: Die Energie (E) in Wattstunden (Wh) kann berechnet werden, indem die Leistung mit der Zeit multipliziert wird.
      • Berechnung: \( E = 0.024W \times 1h = 0.024Wh \)
    • Energieverbrauch pro Tag: Da das System 24 Stunden am Tag betrieben wird, multiplizieren wir die Energie pro Stunde mit 24.
      • Berechnung: \( E_{24h} = 0.024Wh \times 24 = 0.576Wh \)

Der tägliche Energiebedarf des Mikrocontrollers beträgt also 0.576Wh.

  • Optimierungsstrategien zur Energieeffizienz: Einige Möglichkeiten, die Energieeffizienz des Mikrocontrollers zu optimieren, umfassen:
    • Sleep-Modus: Den Mikrocontroller in einen Energiesparmodus versetzen, wenn er nicht aktiv ist, um den Stromverbrauch zu reduzieren. Zum Beispiel könnte der Mikrocontroller einen Sleep-Modus haben, der nur 1mA anstelle von 20mA verbraucht.
    • Frequenzskalierung: Die Taktfrequenz des Mikrocontrollers reduzieren, wenn hohe Verarbeitungsgeschwindigkeiten nicht benötigt werden. Dies senkt sowohl die Betriebsspannung als auch den Stromverbrauch.
    • Effizientere Algorithmen: Optimierte Softwarealgorithmen verwenden, die weniger Rechenzeit benötigen und somit den Mikrocontroller für kürzere Zeiträume aktiv halten.
    • Hardware-Optimierung: Auswahl eines Mikrocontrollers mit besserer Energieeffizienz oder spezielles Design des Medizingeräts, um den Gesamtenergieverbrauch zu minimieren.

Durch Implementierung dieser Strategien kann der Energieverbrauch des Mikrocontrollers erheblich reduziert werden, was die Betriebszeit des Medizingeräts verlängert und die Notwendigkeit häufiger Batteriewechsel reduziert.

d)

Stelle einen Vergleich zwischen den Komplexitäten der Softwareentwicklung für eingebettete Systeme und allgemeine Computersysteme an. Verwende spezifische Beispiele aus der Entwicklung des Medizingeräts und gehe auf die besonderen Herausforderungen ein, die bei der Entwicklung eingebetteter Systeme auftreten können.

Lösung:

Die Softwareentwicklung für eingebettete Systeme unterscheidet sich erheblich von der Entwicklung für allgemeine Computersysteme, sowohl in Bezug auf die Komplexität als auch auf die spezifischen Herausforderungen. Im Folgenden werden einige dieser Unterschiede anhand spezifischer Beispiele aus der Entwicklung eines Medizingeräts erläutert:

  • Hardware-Abhängigkeit: Eingebettete Systeme sind stark an die verwendete Hardware gebunden, weshalb die Softwareentwicklung eng auf die Hardwarekomponenten abgestimmt sein muss.
    • Beispiel:
    • Der Mikrocontroller eines Medizingeräts muss bestimmte Sensoren ansteuern und Daten von diesen lesen. Hardwaretreiber und Protokolle müssen speziell für diese Sensoren entwickelt werden. Bei allgemeinen Computersystemen ist die Hardwareabstraktion durch das Betriebssystem und Standardtreiber oft bereits vorhanden.

  • Systemressourcen: Eingebettete Systeme haben oft begrenzte Speicher- und Rechenressourcen, was die Entwicklung effizienter und optimierter Software erfordert.
    • Beispiel:
    • Die Software eines Medizingeräts muss in der Lage sein, Vitalparameter in Echtzeit zu überwachen und zu verarbeiten, ohne die begrenzte Speicherkapazität und Rechenleistung des Mikrocontrollers zu überlasten. Bei allgemeinen Computersystemen sind typischerweise mehr Ressourcen verfügbar, sodass Software weniger stringent optimiert werden muss.

  • Echtzeitfähigkeit: In eingebetteten Systemen ist es oft erforderlich, dass die Software in Echtzeit auf Ereignisse reagiert.
    • Beispiel:
    • Ein Medizingerät muss in der Lage sein, sofort auf Herzfrequenzänderungen zu reagieren und gegebenenfalls Alarm auszulösen. Die Entwicklung erfordert hier spezielle Echtzeit-Betriebssysteme (RTOS) und sorgfältige Zeitplanung. Im Gegensatz dazu sind Aufgaben auf allgemeinen Computersystemen oft weniger zeitkritisch.

  • Zuverlässigkeit und Sicherheit: Eingebettete Systeme, insbesondere in der Medizintechnik, müssen extrem zuverlässig und sicher sein, da Fehler fatale Folgen haben können.
    • Beispiel:
    • Die Software eines Medizingeräts muss umfassend getestet und zertifiziert werden, um sicherzustellen, dass keine Fehler auftreten, die die Patienten gefährden könnten. Sicherheitsfunktionen wie Watchdogs und redundante Systeme sind notwendig. Bei allgemeinen Computersystemen stehen oft Benutzerfreundlichkeit und Funktionserweiterungen im Vordergrund, und das Risiko von Fehlern hat meist geringere Konsequenzen.

  • Energiemanagement: Eingebettete Systeme müssen häufig energieeffizient sein, um lange Betriebszeiten zu gewährleisten.
    • Beispiel:
    • Die Software eines Medizingeräts muss so entwickelt werden, dass der Mikrocontroller und andere Komponenten effizient arbeiten und in Energiesparmodi wechseln können, wenn sie nicht benötigt werden. Energiemanagement ist bei allgemeinen Computersystemen, wie PCs oder Laptops, weniger kritisch, da sie in der Regel kontinuierlich mit Strom versorgt werden können.

  • Spezialisierte Entwicklungswerkzeuge: Die Entwicklung eingebetteter Systeme erfordert oft spezialisierte Werkzeuge und Entwicklungsumgebungen.
    • Beispiel:
    • Für ein Medizingerät werden spezielle Debugger und Emulatoren benötigt, um die Funktion und Zuverlässigkeit des Mikrocontrollers und der angeschlossenen Sensoren zu überprüfen. Allgemeine Computersysteme nutzen meist Standard-IDE's und Debugger.

Zusammenfassend lässt sich sagen, dass die Softwareentwicklung für eingebettete Systeme, insbesondere für kritische Anwendungen wie Medizingeräte, komplexer und restriktiver ist als für allgemeine Computersysteme. Diese Komplexität erfordert eine spezielle Expertise und sorgfältige Planung, um den hohen Anforderungen an Echtzeitfähigkeit, Zuverlässigkeit, Sicherheit und Energieeffizienz gerecht zu werden.

Aufgabe 2)

  • Schaltplan: Logische Darstellung der Schaltung, zeigt Verbindungen und Komponenten.
  • PCB-Design: Physische Umsetzung des Schaltplans auf einer Leiterplatte, unter Berücksichtigung von Platzierung und Routing der Bauteile.
  • Designregeln beachten: Abstände, Breite der Leiterbahnen, elektrische Sicherheit.
  • CAD-Software: Programme wie EAGLE, KiCAD werden verwendet.
  • Simulation: Überprüfung des Designs vor der Fertigung.
  • Fertigungsdaten: Gerber Dateien, Bohrpläne für die Produktion der PCB.

a)

  • Entwirf einen einfachen Schaltplan einer LED-Leuchte, gesteuert durch einen Mikrocontroller (bspw. ATtiny85). Der Schaltplan soll vollständige Verbindungen inklusive Widerständen, Kondensatoren und einem Taster enthalten.
  • Erstelle eine Designregel für die minimale Breite der Leiterbahnen und den minimalen Abstand zwischen zwei Leiterbahnen auf der Leiterplatte für dieses Schaltplanbeispiel. Begründe Deine Entscheidungen unter Bezug auf elektrische Sicherheitsbedenken und Produktionsmöglicheiten.

Lösung:

Subexercise-Lösung

  • Schaltplan der LED-LeuchteErstelle einen einfachen Schaltplan für eine LED-Leuchte, gesteuert durch einen ATtiny85 Mikrocontroller. Der Schaltplan enthält die Hauptkomponenten und deren Verbindungen:
    • Mikrocontroller: ATtiny85
    • LED: Eine einfache LED
    • Widerstände: Ein Widerstand zur Strombegrenzung für die LED
    • Kondensatoren: Zwei Bypass-Kondensatoren (einer zwischen VCC und GND, ein anderer zwischen RESET und GND)
    • Taster: Ein Taster zur Steuerung des Mikrocontrollers
    • Stromversorgung: VCC und GND
    '.code'each line coded here (Example):'ATtiny85 Pin 4 (GND) -> GNDATtiny85 Pin 8 (VCC) -> VCCATtiny85 Pin 5 (Reset) -> Kondensator (C1) 10uF -> GNDATtiny85 Pin 2 (PB3) -> Widerstand (R1) 220 Ohm -> LED AnodeLED Kathode -> GNDATtiny85 Pin 7 (PB2) -> Taster -> GNDZwischen VCC und GND: Kondensator (C2) 100nF'
  • Designregel für die Breite und den Abstand der Leiterbahnen
    • Minimale Breite der Leiterbahnen: 0,25 mm
    • Minimaler Abstand zwischen zwei Leiterbahnen: 0,25 mm
    Begründung
    • Elektrische Sicherheitsbedenken: Für den Betrieb bei niedrigen Spannungen (z.B. 5 V) und Strömen (z.B. <100 mA) sind mindestens 0,25 mm breite Leiterbahnen ausreichend, um Überhitzung und Unterbrechung zu vermeiden.
    • Produktionsmöglichkeiten: Die gängigen Produktionsverfahren für PCB's können problemlos Leiterbahnen mit einer Breite und einem Abstand von 0,25 mm realisieren. Diese Werte sind eine gute Balance zwischen Fertibarkeit und Zuverlässigkeit.
Das war die Lösung für die gestellten Fragen, betrachte insbesondere die Schaltplanskizze sowie die Erläuterung der Designregeln für den sicheren und effektiven Betrieb der Schaltung.

b)

  • Implementiere den Entwurf in einer CAD-Software wie KiCAD. Generiere die Gerber-Dateien und den Bohrplan basierend auf Deinem Design.
  • Beschreibe den Verifikationsprozess durch Simulation, bevor die PCB in die Fertigung geht. Welche spezifischen Checks würdest Du durchführen und welche möglichen Fehler könnten entdeckt werden?

Lösung:

Subexercise-Lösung

  • Implementierung in einer CAD-Software wie KiCADUm den Entwurf in einer CAD-Software wie KiCAD umzusetzen, folge diesen Schritten:
  • Installiere KiCAD und eröffne ein neues Projekt.
  • Schaltplaneingabe: Benutze den Schematik-Editor von KiCAD, um den Schaltplan der LED-Leuchte zu erstellen. Verbinde dabei die einzelnen Komponenten wie folgt:
'ATtiny85 Pin 4 (GND) -> GNDATtiny85 Pin 8 (VCC) -> VCCATtiny85 Pin 5 (Reset) -> Kondensator (C1) 10uF -> GNDATtiny85 Pin 2 (PB3) -> Widerstand (R1) 220 Ohm -> LED AnodeLED Kathode -> GNDATtiny85 Pin 7 (PB2) -> Taster -> GNDZwischen VCC und GND: Kondensator (C2) 100nF'
  • Lege die Bauteile und Verbindungen auf der Leiterplatte im Layout-Editor fest.
  • Erstelle die Leiterbahnen gemäß den Designregeln: Mindestens 0,25 mm Breite und 0,25 mm Abstand zwischen den Bahnen.
  • Prüfe das Design auf elektrische Integrität und Designregelverletzungen.
  • Generiere die Gerber-Dateien und den Bohrplan:
'Datei -> Plot -> Wähle die gewünschten Layer und generiere die Gerber DateienDatei -> Drill -> Generiere den Bohrplan'
  • Verifikationsprozess durch SimulationBevor die PCB in die Fertigung geht, wird eine Simulation durchgeführt, um das Design zu verifizieren. Die Verifikation umfasst folgende Checks:
  • Elektrische Regeln: Überprüfung der Anschlüsse und Verbindungen. Sicherstellen, dass keine Kurzschlüsse oder offene Verbindungen vorliegen.
  • Designregel-Überprüfungen: Verifizieren, dass alle Mindestabstände und Breiten der Leiterbahnen eingehalten wurden.
  • Simulationschecks: Überprüfung der Funktionalität der Schaltung im Simulationsmodus. Besonderes Augenmerk liegt auf:
  • Stromfluss durch die LED und Widerstände - Verifizieren, dass die LED ordnungsgemäß leuchtet.
  • Betätigung des Tasters - Sicherstellen, dass der Mikrocontroller entsprechend auf Tastenbetätigung reagiert.
  • Überprüfung der Stromversorgung - Vergewissern, dass die Kondensatoren korrekt funktionieren und Stromspitzen ausgleichen.
  • Mögliche Fehler: Während der Simulation könnten folgende Fehler entdeckt werden:
  • Kurzschlüsse oder offene Verbindungen.
  • Falsche Bauteilwerte oder falsche Platzierung der Komponenten.
  • Signalprobleme - zum Beispiel, dass die LED aufgrund eines zu hohen Widerstandswerts nicht leuchtet.
  • Stromversorgungsschwankungen oder unzureichende Entstörung durch die Kondensatoren.

Betrachten wir insbesondere die Designregeln und die Verifikation durch Simulation sorgfältig, um mögliche Fehler zu identifizieren und zu korrigieren, bevor die PCB in die Fertigung geht.

Aufgabe 3)

In einem eingebetteten System kommunizieren Hardware und Software, um die gewünschten Funktionen auszuführen. Die Hardware-Komponenten beinhalten CPU, Speicher und I/O-Geräte, während die Software-Komponenten das Betriebssystem, Treiber und Anwendungen umfassen. Die Software sendet in Form von Maschinenbefehlen Anweisungen an die Hardware, die diese dann im Fetch-Decode-Execute-Zyklus ausführt. Wichtige Kommunikationsprotokolle in diesem Zusammenhang sind SPI, I2C und UART. Das Hardware-Software-Co-Design zielt darauf ab, die Systemleistung und -effizienz zu optimieren.

a)

Beschreibe detailliert den Fetch-Decode-Execute-Zyklus. Erkläre dabei die Rolle jedes Schrittes und wie er zur Ausführung eines Maschinenbefehls beiträgt.

Lösung:

Der Fetch-Decode-Execute-Zyklus ist ein fundamentaler Ablauf in der Funktionsweise von CPUs. Hier ist eine detaillierte Beschreibung jedes Schrittes und seiner Rolle bei der Ausführung eines Maschinenbefehls:

  • Fetch (Holen): In diesem Schritt holt die CPU den nächsten Maschinenbefehl aus dem Hauptspeicher. Der Speicher wird durch den Programmzähler (Program Counter, PC) adressiert, der die Adresse des nächsten auszuführenden Befehls enthält. Die CPU überträgt diese Adresse auf den Adressbus, fordert die Anweisung an und speichert sie im Instruktionsregister (Instruction Register, IR). Anschließend wird der Programmzähler inkrementiert, sodass er auf die Adresse des nächsten Befehls zeigt.
  • Decode (Dekodieren): Im zweiten Schritt wird der im IR gespeicherte Maschinenbefehl dekodiert. Dies bedeutet, dass die Kontroll-Einheit (Control Unit) der CPU den Befehl analysiert, um herauszufinden, welche Operation durchgeführt werden soll und welche Operanden dafür notwendig sind. Die Dekodierung bestimmt auch, welche Schaltkreise in der ALU (Arithmetic Logic Unit) aktiviert werden müssen und welche Mikrooperationen ausgeführt werden sollen.
  • Execute (Ausführen): Im letzten Schritt wird der dekodierte Befehl tatsächlich ausgeführt. Dies kann eine arithmetische Operation, eine logische Operation, ein Datenübertragungsbefehl oder ein Sprungbefehl sein. Die ALU führt die entsprechenden Berechnungen oder Operationen durch, und das Ergebnis wird im Akkumulator oder einem anderen Register gespeichert. Falls notwendig, wird das Ergebnis auch in den Hauptspeicher zurückgeschrieben.

Durch die Wiederholung dieses Zyklus kann die CPU kontinuierlich Befehle aus dem Speicher abrufen, dekodieren und ausführen und so die gewünschte Funktionalität des Systems sicherstellen.

b)

Angenommen, du hast ein eingebettetes System, das Temperaturdaten über einen I2C-Sensor erfasst und diese Daten drahtlos via UART an einen Server sendet. Skizziere ein Hardware-Software-Design für diese Anwendung. Achte darauf, sowohl die Hardware-Komponenten als auch die Software-Module und ihre Interaktionen zu spezifizieren. Nutze konkrete Beispiele für Kommunikationsprotokolle und beschreibe, wie die effiziente Zusammenarbeit zwischen Hardware und Software sichergestellt wird. Wenn nötig, führe mathematische Berechnungen zur Datenübertragungsrate und Latenz durch.

Lösung:

Für das Design eines eingebetteten Systems, das Temperaturdaten über einen I2C-Sensor erfasst und diese Daten drahtlos via UART an einen Server sendet, müssen sowohl die Hardware- als auch die Software-Komponenten detailliert skizziert werden.

Hardware-Komponenten

  • Microcontroller (MCU): Ein wesentlicher Bestandteil des Systems, der digitale Verarbeitung ermöglicht. Beispiele: ATmega328P, ESP32.
  • I2C-Temperatursensor: Ein integrierter Schaltkreis, der die aktuelle Temperatur misst und über das I2C-Protokoll kommuniziert. Beispiel: LM75.
  • UART-Modul: Kann integriert im Microcontroller sein oder extern angeschlossen. Ermöglicht die serielle Übertragung von Daten. Beispiele: UART-Schnittstelle im ESP32.
  • Drahtloses Kommunikationsmodul: Modul für die drahtlose Datenübertragung, z.B. Wi-Fi oder Bluetooth. Beispiel: ESP8266 für Wi-Fi, falls ein einfacher MCU verwendet wird.
  • Energieversorgung: Eine Energiequelle, z.B. ein Akku oder eine direkte Stromversorgung.

Software-Module

  • Firmware: Die softwareseitige Kontrolle der Hardware, einschließlich der Treiber für den I2C-Sensor und das UART-Modul.
  • Betriebssystem (optional): Wenn es sich um ein komplexeres System handelt, kann ein leichtgewichtiges Echtzeitbetriebssystem (RTOS) wie FreeRTOS verwendet werden.
  • I2C-Treiber: Softwaremodul für die Kommunikation mit dem I2C-Sensor. Dieser Treiber sendet Anfragen an den Sensor und liest die Temperaturdaten aus.
  • UART-Treiber: Softwaremodul für die serielle Kommunikation. Stellt sicher, dass Daten effizient und zuverlässig über die UART-Schnittstelle gesendet werden.
  • Datenverarbeitungsmodul: Enthält Logik zur Verarbeitung der ausgelesenen Temperaturdaten und ggf. zum Filtern oder Formatieren.
  • Kommunikationsprotokoll: Definiert das Format der Datenpakete, die an den Server gesendet werden. Es kann eine einfache ASCII-basierte oder binäre Protokollspezifikation verwendet werden.

Effiziente Zusammenarbeit zwischen Hardware und Software

  • I2C-Kommunikation: Die I2C-Komponente sendet regelmäßig Anfragen an den Temperatursensor und liest die Messwerte aus. Dies wird effizient gestaltet, indem Interrupts und Puffer verwendet werden, um sicherzustellen, dass die CPU nicht ständig auf den Abschluss der Übertragung warten muss.
  • UART-Kommunikation: Die Datenübertragung über UART wird normalerweise durch einen FIFO-Puffer unterstützt, wodurch die CPU eventuell weitere Daten verarbeiten kann, während einige Daten noch übertragen werden. Der Microcontroller verwendet Interrupts, um die CPU zu benachrichtigen, wenn Daten empfangen oder gesendet wurden.
  • Datenübertragungsrate und Latenz: Die Geschwindigkeit der I2C-Übertragung wird durch den Takt des I2C-Busses bestimmt, der typischerweise bei 100 kHz oder 400 kHz liegt. Für die UART-Übertragung kann eine Standardrate von 9600 Baud oder höher verwendet werden, je nach Anforderungen. Beispielhafte Berechnungen:
    • Datenübertragungsrate I2C: Bei einem Takt von 100 kHz und einer Datenbreite von 8 Bit (ein Byte Daten und ein Acknowledge-Bit) ergibt sich die Übertragungszeit für ein Byte als \(\frac{8+1}{100000} = 90 \mu s\).
    • Datenübertragungsrate UART: Bei einer Übertragungsrate von 9600 Baud und 10 Bit pro Zeichen (Startbit, 8 Datenbits, Stop-Bit) ergibt sich die Zeit für ein Zeichen als \(\frac{10}{9600} = 1.04 \ms\).

Durch den Einsatz von Interrupts und Puffern kann die CPU effizient arbeiten, indem sie mehrere Aufgaben parallel ausführt und nur dann eingreift, wenn es notwendig ist.

Hierbei spielt das Hardware-Software-Co-Design eine wesentliche Rolle, da die Aufteilung der Aufgaben und die Optimierung der Schnittstellen zwischen Hardware und Software direkt die Effizienz und Leistung des Systems beeinflussen. Eine durchdachte Planung und Implementierung führt zu einem zuverlässigen und leistungsfähigen eingebetteten System.

Aufgabe 4)

Scheduling-Algorithmen und Prioritätenmanagement in Echtzeitbetriebssystemen: Ein eingebettetes System soll mit mehreren Prozessen umgehen, die unterschiedliche Prioritäten und Deadlines haben. Die Prozesse sind wie folgt definiert:

  • Prozess A: Periode (T_A) = 10ms, Ausführungszeit (C_A) = 2ms
  • Prozess B: Periode (T_B) = 20ms, Ausführungszeit (C_B) = 3ms
  • Prozess C: Periode (T_C) = 15ms, Ausführungszeit (C_C) = 1ms
Bestimme die Prioritäten der Prozesse unter verschiedenen Scheduling-Algorithmen sowie deren Machbarkeit und analysiere deren Verhalten im Betrieb.

a)

a) Feste Prioritäten und RMS: Berechne die Prioritäten der oben genannten Prozesse unter Anwendung des Rate-Monotonic Scheduling (RMS). Zeige die Formel und bestimme die Zuweisung. Berechne anschließend die CPU-Auslastung, um zu prüfen, ob alle Prozesse termingerecht ausgeführt werden können.

  • Formel für Prioritätszuweisung in RMS: \[ p_i = \frac{T_i}{T_{min}} \]
  • Nutze die CPU-Auslastungsformel: \[ U = \sum_{i=1}^{n}\frac{C_i}{T_i} \]

Lösung:

a) Feste Prioritäten und RMS:

Berechnung der Prioritäten:Im Rate-Monotonic Scheduling (RMS) wird die Priorität basierend auf der Periodendauer der Prozesse zugewiesen: Kürzere Perioden haben höhere Prioritäten.
  • Prozess A: Periode (T_A) = 10ms, Ausführungszeit (C_A) = 2ms
  • Prozess B: Periode (T_B) = 20ms, Ausführungszeit (C_B) = 3ms
  • Prozess C: Periode (T_C) = 15ms, Ausführungszeit (C_C) = 1ms
Da kürzere Perioden höhere Prioritäten erhalten, ergibt sich folgendes Ranking:
  • Priorität 1: Prozess A (T_A = 10ms)
  • Priorität 2: Prozess C (T_C = 15ms)
  • Priorität 3: Prozess B (T_B = 20ms)
CPU-Auslastungsberechnung:Mit der Formel zur CPU-Auslastung:
 U = \sum_{i=1}^{n} \frac{C_i}{T_i} 
berechnen wir die Auslastung:
  • Prozess A: \( \frac{C_A}{T_A} = \frac{2ms}{10ms} = 0.2 \)
  • Prozess B: \( \frac{C_B}{T_B} = \frac{3ms}{20ms} = 0.15 \)
  • Prozess C: \( \frac{C_C}{T_C} = \frac{1ms}{15ms} = 0.0667 \)
Die gesamte CPU-Auslastung beträgt also:
 U = 0.2 + 0.15 + 0.0667 = 0.4167 
Analyse der Machbarkeit:Da die CPU-Auslastung 41,67% beträgt und somit unter 100% liegt, ist das System in der Lage, alle Prozesse termingerecht auszuführen. Die RMS-Scheduling-Strategie ist somit machbar und gewährleistet die rechtzeitige Ausführung aller Prozesse.

b)

b) Dynamische Prioritäten und EDF: Analysiere dasselbe Szenario mit dem Earliest Deadline First (EDF) Scheduling-Algorithmus. Erkläre, wie die Prioritäten während der Laufzeit dynamisch angepasst werden. Überprüfe, ob alle Prozesse innerhalb ihrer Deadlines ausgeführt werden. Zeige eine beispielhafte Ausführung und erkläre die Veränderungen der Prioritäten. Vergleiche dies mit den Ergebnissen aus Teil a.

Lösung:

b) Dynamische Prioritäten und EDF:

Analyse des Szenarios mit EDF:Der Earliest Deadline First (EDF) Scheduling-Algorithmus weist Prozessen temporäre Prioritäten basierend auf ihren Deadlines zu: Der Prozess mit der nächstliegenden Deadline erhält die höchste Priorität. Bei EDF werden die Prioritäten während der Laufzeit dynamisch angepasst.Prozessinformationen:
  • Prozess A: Periode (T_A) = 10ms, Ausführungszeit (C_A) = 2ms
  • Prozess B: Periode (T_B) = 20ms, Ausführungszeit (C_B) = 3ms
  • Prozess C: Periode (T_C) = 15ms, Ausführungszeit (C_C) = 1ms
Dynamische Prioritätsanpassung:In EDF ändert sich die Priorität eines Prozesses dynamisch während der Laufzeit basierend auf seiner verbleibenden Zeit bis zur Deadline. Die Priorität ist umgekehrt proportional zur verbleibenden Zeit bis zur nächsten Deadline.Beispielhafte Ausführung:Um zu illustrieren, wie die Prioritäten in EDF dynamisch angepasst werden, nehmen wir an, dass alle Prozesse gleichzeitig starten.
  • Startzeit: 0ms
  • Prozess A hat eine Periode und Deadline von 10ms
  • Prozess B hat eine Periode und Deadline von 20ms
  • Prozess C hat eine Periode und Deadline von 15ms
Ein möglicher Ablauf könnte wie folgt aussehen:
  • 0ms: Alle Prozesse starten. Da Prozess A die nächstliegende Deadline hat (10ms), wird Prozess A zuerst ausgeführt.
  • 2ms: Prozess A ist abgeschlossen. Nun hat Prozess C die nächstliegende Deadline (15ms), daher wird Prozess C ausgeführt.
  • 3ms: Prozess C ist abgeschlossen. Jetzt wird Prozess B ausgeführt, da er die nächstliegende Deadline (20ms) hat.
  • 6ms: Prozess B läuft weiter, da es die einzige Aufgabe ist, die noch zu erledigen ist.
  • 9ms: Prozess B wird unterbrochen, um Prozess A erneut auszuführen, da Prozess A eine Deadline bei 10ms hat.
  • 11ms: Prozess A ist abgeschlossen. Prozess B wird nun fortgesetzt.
  • 14ms: Prozess B wird abgeschlossen.
  • 15ms: Prozess C startet, da es seine Periode erreicht hat.
Überprüfung der Deadline-Einhaltung:Um zu überprüfen, ob alle Prozesse innerhalb ihrer Deadlines ausgeführt werden, berechnen wir die CPU-Auslastung:
 U = \sum_{i=1}^{n} \frac{C_i}{T_i} 
Berechnung der Nutzung:
  • Prozess A: \( \frac{2ms}{10ms} = 0.2 \)
  • Prozess B: \( \frac{3ms}{20ms} = 0.15 \)
  • Prozess C: \( \frac{1ms}{15ms} = 0.0667 \)
Die gesamte CPU-Auslastung beträgt:
 U = 0.2 + 0.15 + 0.0667 = 0.4167 
Da die CPU-Auslastung 41,67% beträgt und somit unter 100% liegt, können alle Prozesse innerhalb ihrer Deadlines ausgeführt werden.Vergleich mit den Ergebnissen aus Teil a:
  • Beide Scheduling-Algorithmen (RMS und EDF) ermöglichen es, dass alle Prozesse termingerecht ausgeführt werden, da die CPU-Auslastung unter 100% bleibt.
  • RMS verwendet feste Prioritäten basierend auf den Perioden der Prozesse: Kürzere Perioden erhalten höhere Prioritäten.
  • EDF verwendet dynamische Prioritäten basierend auf den Deadlines der Prozesse: Kürzere Deadlines erhalten höhere Prioritäten während der Laufzeit.
  • EDF bietet mehr Flexibilität bei sich ändernden zeitlichen Anforderungen, da es die Prioritäten dynamisch anpasst. Dies kann besonders nützlich sein, wenn die Deadlines der Prozesse variieren oder verändert werden müssen.
Sign Up

Melde dich kostenlos an, um Zugriff auf das vollständige Dokument zu erhalten

Mit unserer kostenlosen Lernplattform erhältst du Zugang zu Millionen von Dokumenten, Karteikarten und Unterlagen.

Kostenloses Konto erstellen

Du hast bereits ein Konto? Anmelden