# Einführung ## Anwendungsgebiete * ES werden in unterschiedlichen Bereichen verwendet: * Autos * Flugzeuge * Züge * Mobiltelefone * Gesundheitssektor * Sicherheit * TVs * Fabriken * Intelligente Gebäude * Logistik (RFID) - Tracking von Objekten * Robotik ## Wichtige Eigenschaften * dependable * Reliability - Probability that system will not fail * Maintainability - Probability that failing system can be repaired within certain timeframe * Availability - Probability that system is available * Safety - System will not cause any harm * Security - confidential data remains confidential and authentic communication is guaranteed * efficient * Energie * Laufzeiteffizienz * Codegröße * Gewicht/Masse der Hardware * Kosten ES müssen oftmals Echtzeitbedingungen umsetzen. Zwei Arten: * harte Bedingungen - Nicht-Einhalten führt zu Katastrophe * weiche Bedingungen - alle anderen Zeitbedingungen weitere Eigenschaften * reaktiv * hybrid - analoge und digitale Bestandteile * DUI - dedicated user interface ## Herausforderungen im Design von ES * Software muss auf Hardware abgestimmt werden * ¬funktionale Bedingungen müssen eingehalten werden * Echtzeitbedingungen * Energieeffizienz * Dependability - Verlässlichkeit * Zeitmanagement ist eine der größten Herausforderungen * Concurrency (Nebenläufigkeit) ist essentiell * Kombinieren von Komponenten ist wichtig für Design * traditionelle sequentielle Prog.Sprachen sind nicht ideal ## Designflow * rounded boxes - stored info * rectangles - transformations on data * application knowledge -> specification -> HW components -> system software => design repository -> design -> [test] | | [application mapping] * [optimization] * [evaluation & validation] * [test] * Figure 1.6 page 13 * unbedingt die raw-Version ansehen hier # Spezifikationen und Modellierung ## Bedingungen * Model: Simplification of another entity, which can be a physical thing or another model. The model contains exactly those characteristics and properties of the modeled entity that are relevant for a given task. A model is minimal with respect to a task if it does not contain any other characteristics than those relevant for the task. Modelle werden in Sprachen beschrieben. Sprachen sollten folgende Eigenschaften aufweisen (Wunschliste): * Hierarchie * Verhaltshierarchien - enthalten für Beschreibung des Systemverhaltens notwendige Objekte, z.B. Zustände, Events * Strukturhierarchien - beschreiben physische Komponenten des Systems * Komponenten-basiertes Design - Verhalten des Systems muss von Verhalten der Komponenten ableitbar sein * Nebenläufigkeit * Synchronisation und Kommunikation * Zeitverhalten (timing behavior) * elapsed time (vergangene Zeit) seit X * Verzögern von Prozessen für spezifizierte Zeit * being able to specify timeouts * Fähigkeit Deadlines und Schedules zu spezifizieren * Zustandorientiertes Verhalten * Eventhandling * Ausnahmeorientiertes Verhalten * Vorhandensein von Programmierelementen * Ausführbarkeit * Support für Design großer Systeme * Support für Anwendungsdomain * Lesbarkeit * Portabilität und Flexibilität * Termination - feasible to identify processes which will terminate from the specification * Support für ¬Standard I/O-Devices * ¬funktionale Eigenschaften * Support für Design von verlässlichen (dependable) Systemen * keine Hindernisse für Generierung effizienter Implementierungen * angemessenes MoC (Model of Computation) ## Models of computation (Berechnungsmodelle) * MoCs definieren: * Komponenten * Kommunikationsprotokolle Beziehungen zwischen diesen Punkten können in Graphen festgehalten werden. Models of Communication: * shared memory * message passing * async message passing - non-blocking communication * sync message passing - blocking communication, rendez-vous based communication * extended rendez-vous, remote invocation Organisation von Berechnungen innerhalb der Komponenten * Von-Neumann Modell * discrete event model * endliche Automaten * Differentialgleichungen Kombinierte Modelle: Tatsächliche Sprachen kombinieren normalerweise ein Kommunikationsmodell mit einer Organisation von Berechnungen innerhalb der Komponenten. Beispiele: * StateChart - kombiniert endliche Automaten mit shared memory * SDL - kombiniert asynchrones message passing mit endlichen Automaten * ADA, CSP - kombinieren von-Neumann mit synchronem message passing Figure 2.7 page 34 ## Diskrete Event-basierte Sprachen ### VHDL * kann in die 1980er Jahre zurückverfolgt werden * im VHSIC Programm entwickelt (vom DoD) * VHSIC hardware description language * IEEE standard Elemente: * Entitäten * Architekturen definieren von Verhalten und Struktur ### SystemC * erlaubt Spezifikation von Hardwarestrukturen in Software # Hardware ## Input Sensoren: * Beschleunigungssensoren * Regensensoren * Bildsensoren (charge-coupled devices und CMOS) * biometrische Sensoren * künstliche Augen * RFID * andere Sensoren Sensoren erzeugen Signale. Diskretisierung von Zeit: Sample-and-hold circuits * messen eines Wertes aus dem kontinuierlichen Zeitspektrum * gemessener Wert wird für bestimmte Zeitdauer weitergeleitet * danach zurück zur Messung des Wertes * Output gleicht damit diskreten Werten (gleicher Wert für bestimmte Zeitdauer) Diskretisierung von Werten: A/D Konverter * Flash A/D converter * large number of comparators * each comparator has two inputs (+ and -) * if voltage at + larger than at - -> logical 1, otherwise logical 0 * first comparator returns 1, if h(t) exceeds 3/4 Vref * second returns 1, for h(t) > 2/4 Vref * third returns 1, for h(t) > 1/4 Vref * encoder tries to identify most significant '1' * successive appriximation ## Processing Units * Energie"verbrauch" ist wichtigste Beschränkung in ES ### ASICs (Application-specific circuits) * hohe Kosten * sehr gute Performance für sehr kleinen Anwendungsbereich * keine Flexibilität ### Prozessoren * Flexibilität * Energieeffizienz ist wichtig - Compiler müssen so effizient sein wie möglich * müssen nicht kompatibel mit PC-Prozessoren sein * Dynamic power management * power saving states (idle and sleep) * changes between states * Dynamic voltage scaling * decreasing supply voltage reduces power quadratically * only linear increase of runtime of algorithms * Code-size efficiency * CISC machines (Complex Instruction Set Processors) * Kompressionstechniken * Laufzeiteffizienz ### Reconfigurable Logic application areas: * fast prototyping * low volume applications * realtime systems ### Memories * großer Geschwindigkeitsunterschied zw. Prozessoren und Memories * kleinere Memories wichtig, da sie schnellere Zugriffszeiten bieten * mehrere kleine Speicher für häufig genutzte Instruktionen und Daten plus ein größerer Speicher für restliche Daten und Instruktionen bieten i.A. höhere Energieeffizienz * Scratch Pad memories (SPMs) als Alternative zu Caches ## Communication * Informationen können durch Kanäle transportiert werden * physische Entitäten, die Kommunikation ermöglichen heißen Kommunikationsmedien * wichtige solche Medien: * drahtlose Medien (Infrarot, RFID) * optische Medien (Glasfaser) * Kabel ### Requirements * Echtzeitverhalten * Effizienz * angemessende Bandbreite und Kommunikationsverzögerung * Support für eventbasierte Kommunikation * Robustheit * Fehlertoleranz * Wartbarkeit, Diagnosefähigkeit * Datenschutz ### Elektrische Robustheit * single-ended signaling * single ground wire * affected by external noise * difficult to establish high-quality ground signals * differential signaling * two wires for data transport * noise can be effectively removed * logic value only depends on polarity of voltage between two wires, magnitude can be affected without effect * quality of ground wire unimportant * no common ground wire required * larger throughput than single-ended signaling * used in standard Ethernet-based networks ### Echtzeitverhalten garantieren * Nutzung von time division multiple access (TDMA) * jeder Kommunikationspartner bekommt festen Zeitslot * innerhalb dieses Slots darf gesendet werden * Zeit wird in Frames unterteilt * jedes Frame startet mit Synchronisierung und einem Gap, um dem Sender das ausschalten zu ermöglichen carrier-sense multiple access/collision detect (CSMA/CD) * wenn mehrere Partner zur gleichen Zeit kommunizieren, wird für jeden eine zufällige Wartezeit bestimmt * sehr unwahrscheinlich, dass sich Szenario nach Wartezeit wiederholt * kann nicht für ES benutzt werden, da Laufzeit nicht bestimmt werden kann carrier-sense multiple access/collision avoidance (CSMA/CA) * jeder Partner bekommt Priorität zugewiesen * dies geschieht in Verhandlungsphasen * wenn Partner einen Partner mit höherer Priorität erkennt, muss Ersterer seine NUtzungsabsicht sofort zurückziehen * daher vorhersehbare Laufzeit für Partner mit höchster Priorität * für andere auch, wenn Partner mit höchster Prio nicht dauerhaft Zugang verlangt * Ethernet mit über 1GBit vermeidet ebenfalls Kollisionen ### Beispiele * Sensor/actuator buses * field buses * Controler Area Network * Time-Triggered-Protocol (TTP) * FlexRay * LIN * MAP * EIB * Kabelgebundene Multimedia-Kommunikation * drahtlose Kommunikation ## Output * Displays * Elektromechanische Geräte * analog input zu analog output: AA -> Sample & hold -> A/D conv. -> Verarbeitung -> D/A conv. -> filter ### D/A Konverter * wandeln digital in analog um * benutzen Kirchhoffs Regeln ### Sampling theorem * mithilfe der Shannon-Wittaker interpolation kann das ursprüngliche analoge Signal approximiert werden * ebenso wird die Fourier Transformation benutzt * ansonsten sehr viel Mathe # System Software ## Embedded Operating Systems ### Allgemeine Bedingungen * muss flexibel für Anwendungsbereich angepasst werden können * Konfigurabilität (configurability) * OO * Aspect-oriented Programming * konditioniertes Kompilieren * fortgeschrittene Kompilierzeit Evaluation * Linker-basiertes Entfernen von nicht genutzten Funktionen * Treiber sind vom OS getrennt * keine Schutzmechanismen (wie privilegierter Zugang) notwendig, da ungetestete Software nicht geladen wird * interrupts können mit jedem Prozess verbunden werden * viele ES sind Echtzeitsysteme und daher muss deren OS ein RTOS sein ### Echtzeit OS * Zeitverhalten des OS muss vorhersagbar sein * OS muss das Scheduling der Tasks managen * einige Systeme erfordern Zeitmanagement durch das OS * OS muss schnell sein vorhandene RTOS können in drei Kategorien eingeteilt werden: * schnelle proprietäre Kernel * Echtzeiterweiterungen zu Standard-OS * Forschungssysteme Kernunterschied zu Standard OS: * es wird für den Worst Case optimiert ### Resources access protocols #### Priority Inversion * Prozess mit geringerer Priorität blockt Prozess mit höherer Priorität #### Priority Inheritance * T1 hat Prio 1 * T2 hat Prio 2 * T3 hat Prio 3 * T2 verlangt Zugang zu S * T1 verlangt Zugang zu S - wird blockiert * T2 erbt Prio von T1 ## Hardware abstraction layers * accessing hardware through hardware-independent API ## Middleware * add communication functionality on top of OS ### OSEK * für Autobranche benutzt ### Corba (Common Object Request Broker Architecture) * standardisierter Zugriff auf Remote-Objekte * standardmäßig nicht für RTOS geeignet * separater Standard RT-CORBA für RTOS definiert ### MPI (Message passing interface) * Alternative zu CORBA * Kommunikation zwischen Prozessoren ### POSIX Threads (Pthreads) * API für Threads auf der OS-Ebene ### OpenMP * explizite Parallelität * implizite Kommunikation, Synchronisation, etc. ### UPnP, DPWS, JXTA * Universal Plug-and-Play * Erweiterung von PnP für Netzwerke * Devices Profile for Web Services (DPWS) allgemeiner als UPnP * JXTA ist eine OpenSource Peer-to-Peer Protokollspezifikation # Evaluation und Validierung * Validierung überprüft, ob ein Design alle Restriktionen erfüllt, wie erwartet funktionieren wird und für den Zweck angemessen ist * Validierung mit mathematischer Genauigkeit wird formale Validierung genannt * sehr wichtig während Designprozess * Evaluation ist Prozess des Berechnens von quantitativen Informationen von einigen Kern-Charakteristika eines bestimmten Designs Kopetz' Designprinzipien: * Safety muss möglicherweise als der zentrale Aspekt gesehen werden, von dem alles abhängt * präzise Spezifikationen von Designhypothesen müssen gleich zu Beginn gemacht werden (inklusive erwarteten Fehlern und deren Wahrscheinlichkeit) * "Fault containment regions" müssen erwogen werden * Fehler in einer solchen Region beeinflussen keine andere solche Region * konsistente Vorstellung von Zeit und Zustand muss etabliert werden * wohldefinierte Schnittstellen müssen die Interna von Komponenten verstecken * Komponenten müssen unabhängig voneinander versagen (kein Einfluss auf andere Komponenten) * Komponenten müssen sich selbst als korrekt annehmen bis mindestens zwei andere Komponenten das Gegenteil annehmen * Fehlertoleranz darf es nicht schwerer machen das Verhalten des Systems zu erklären; Fehlertoleranz Mechanismen sollten von der regulären Funktionalität entkoppelt sein * das System muss für Diagnose designed werden * man-machine interface muss intuitiv und vergebend sein; safety sollte trotz Fehler des Menschens weiter gewährleistet sein * jede Anomalie sollte aufgezeichnet werden; Aufzeichnung sollte auch interne Effekte beinhalten * provide never-give up strategy # Application mapping ## Classification of scheduling algorithms * soft and hard deadlines * periodic vs. aperiodic tasks * preemptive vs. non-preemptive scheduling * static vs. dynamic scheduling * independent vs. dependent tasks * mono- vs. multi-processor scheduling * centralized vs. distributed scheduling ## Scheduling algorithms ### Aperiodic scheduling without precedence constraints * Earliest Due Date (identical arrival times) * Earliest Deadline First (different arrival times with preemption) * Least Laxity (deadline interval - execution time) ### Aperiodic Scheduling with precedence constraints * LatestDeadlineFirst * ASAP * ALAP (as late as possible) * list scheduling * force-directed scheduling * goal: balanced utilization of resources * based on spring model * originally proposed for high-level synthesis ### Periodic scheduling without precedence constraints * rate monotonic scheduling * Earliest deadline first