Praktikum: Entwicklung interaktiver eingebetteter Systeme - Cheatsheet
Gestaltung von Benutzeroberflächen
Definition:
Gestaltung von Benutzeroberflächen (UI) fokussiert sich auf die visuelle und interaktive Gestaltung von Software-Systemen, um eine benutzerfreundliche und effektive Nutzung sicherzustellen.
Details:
- Wichtige Prinzipien: Konsistenz, Feedback, Effizienz, Fehlertoleranz
- Visuelles Design: Farben, Layout, Typografie
- Interaktionsdesign: Navigation, Eingabeelemente
- Evaluierung: Usability-Tests, Heuristiken
Nutzerzentriertes Design
Definition:
Methode zur Gestaltung interaktiver Systeme, die den Nutzer und seine Bedürfnisse in den Mittelpunkt stellt.
Details:
- Iterativer Designprozess: Analyse, Design, Implementierung, Evaluation
- Wichtige Methoden: Kontextanalyse, Personas, Szenarien, Prototyping
- Ziele: Gebrauchstauglichkeit (Usability), Benutzerfreundlichkeit und positive Nutzererfahrung (User Experience)
- Evaluationsmethoden: Usability-Tests, Umfragen, Interviews
- Beachtung von ISO 9241 (Ergonomie der Mensch-System-Interaktion)
Architektur eingebetteter Systeme
Definition:
Architektur eingebetteter Systeme - beschreibt den strukturellen Aufbau und das Zusammenspiel der Hardware- und Softwarekomponenten eingebetteter Systeme.
Details:
- Komponenten: Mikrocontroller, Sensoren, Aktoren, Speicher, Kommunikationsschnittstellen
- Softwarearchitektur: Betriebssystem (RTOS vs. Bare Metal), Middleware, Anwendungsschicht
- Echtzeitfähigkeit: Anforderungen an Zeitverhalten und Reaktionszeiten
- Hardware-Software-Co-Design: Integration von Hardware- und Softwareentwicklungen
- Sicherheitsanforderungen: Zuverlässigkeit, Verfügbarkeit und Sicherheit
- Entwurfsstrategien: Top-Down und Bottom-Up
- Leistungsoptimierung: Energieverbrauch, Speicherplatz, Verarbeitungsgeschwindigkeit
Hardware-Software-Co-Design
Definition:
Kombinierter Entwurf von Hardware und Software, um optimale Systeme zu schaffen.
Details:
- Ziel: Maximierung der Leistung und Effizienz
- Iterativer Entwicklungsprozess
- Verwendet Modellierung und Simulation
- Enge Abstimmung zwischen Hardware- und Softwareteams
- Beispiele: eingebettete Systeme, SoC-Designs
- Wichtige Tools: Hardwarebeschreibungssprachen (HDLs) wie VHDL/Verilog, Softwareentwicklungstools
Energieeffiziente Programmierung
Definition:
Techniken zur Reduktion des Energieverbrauchs von Software auf eingebetteten Systemen.
Details:
- Algorithmen optimieren: Wahl energieeffizienter Algorithmen.
- Sleep-Modi nutzen: Prozessoren schlafen legen, wenn sie nicht aktiv sind.
- Spannungs- und Frequenzskalierung (DVFS): Dynamische Anpassung der Spannung und Frequenz des Prozessors an die jeweiligen Bedürfnisse.
- Memory Management: Geringerer Energieverbrauch durch effizientes Speichermanagement.
- Pareto-Effizienz: Gleichgewicht zwischen Energieverbrauch und Leistung finden.
- Messung und Monitoring: Energieverbrauch messen und analysieren.
- Hardware-Verständnis: Kenntnis der Hardware-Einschränkungen und -Möglichkeiten nutzen.
Mikrocontroller-Programmierung in C/C++
Definition:
Programmierung von Mikrocontrollern verwendet C/C++ für effiziente Hardwaresteuerung und Ressourcenmanagement.
Details:
- Direkter Zugriff auf Hardware-Register mit C
- Nutzung von speziellen Mikrocontroller-Bibliotheken
- Interrupt-Handling und zeitkritische Programmierung
- Energieeffiziente Code-Erstellung
- Integration von Peripheriegeräten (Sensoren, Aktoren)
- Debugging und Fehlersuche meistens über serielle Schnittstellen
- Hardware-Abstraktionsschichten (HAL) für Portabilität
Interrupt-Handling bei Mikrocontrollern
Definition:
Mechanismus zur Unterbrechung der normalen Programmausführung, um auf externe oder interne Ereignisse schnell zu reagieren.
Details:
- Interrupts können hardware- oder softwarebasiert sein.
- Unterbrechungen werden durch Interrupt-Service-Routinen (ISR) bearbeitet.
- Wichtige Register: Interrupt-Vektor-Tabellen, Statusregister.
- \text{ISR} sollte so kurz wie möglich sein, um die Reaktionszeit zu minimieren.
- Globale und lokale Interrupt-Enable/Disable-Flags kontrollieren die Interrupt-Aktivierung.
- Prioritätsmechanismen bestimmen Reihenfolge bei mehreren gleichzeitigen Interrupts.
Echtzeitbetriebssysteme und Task-Scheduling
Definition:
Echtzeitbetriebssystem (Real-Time Operating System, RTOS) ist ein Betriebssystem, das Aufgaben innerhalb einer definierten Zeitspanne erledigt. Task-Scheduling referiert auf das Planen und Koordinieren der Ausführung von Aufgaben im System.
Details:
- Determinismus: Garantierte Reaktionszeiten auf Ereignisse.
- Preemptive Scheduling: Höher priorisierte Aufgaben unterbrechen niedrig priorisierte.
- Deadline: Zeitrahmen, innerhalb dessen eine Aufgabe abgeschlossen sein muss.
- Ressourcenverwaltung: Optimale Verteilung und Nutzung von Ressourcen wie CPU und Speicher.
- Wichtige Algorithmen: Fixed Priority Scheduling, Round-Robin, Rate-Monotonic Scheduling (RMS), Earliest Deadline First (EDF).
- Prios: Aufgaben werden meist durch Prioritäten organisiert.