MC2
MC2
MC2
Fichier Détails
Cartes-fiches | 61 |
---|---|
Langue | Deutsch |
Catégorie | Electrotechnique |
Niveau | Université |
Crée / Actualisé | 06.03.2016 / 04.01.2018 |
Lien de web |
https://card2brain.ch/box/mc2
|
Intégrer |
<iframe src="https://card2brain.ch/box/mc2/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Was sind die Anforderungen ein Realtime (Echtzeit) System?
anwendungsspezifisch rechtzeitig auf Ereignisse reagieren
Was ist der unterschied zwischen Soft-Realtime und Hard-Realtime
Hard-Realtime muss immer in der vorgegebenen Zeit reagieren.
Soft-Realtime kann die Vorgaben z.Bsp auch nur im Mittel einhalten. Einzele kurze überschreitungen müssen nicht als Versagen gewertet werden.
Wie ist die Latenzzeit definiert?
Zeit zwischen Eintreffen eines (Hardware-) Ereignisses bis zu dessen Behandlung
Sind Hard-Realtime-System schneller als Soft-Realtime?
Nein! Sie sind eher langsamer da mehr Verwaltungsaufwand nötig ist.
Wie funktionieren pollende Systeme?
Alle Ereignisquellen werden in einer Endlosschlaufe "gepollt" und bei Bedarf behandelt
Wie funktionieren ereignisgesteuerte Systeme (HW-Interrupts)
alle Ereignisbehandlung erfolgt direkt in der ISR; das Hauptprogramm dient nur zur Initialisierung
Wie funktionieren gemischte Systeme (Ereignisgesteuert + Pollend)?
Zeitkritische Verarbeitung in ISRs; zeitunkritische und lang andauernde im Hauptprogramm-Fluss
Wo werden Realtime Multitasking Operating Systeme (RTOS) eingesetzt?
Bei Echtzeitsystemen mit mittlerer bis hoher Komplexität
Vor- und Nachteile rein pollender Systeme
Vorteile:
- bei nur einem Ereignis recht schnell (kein Interrupt-Overhead)
- kaum Race-Probleme (Programmfluss wird nie unterbrochen)
- einfache Erweiterung mit wenig gegenseitiger Beeinflussung (nur zeitlich!)
Nachteile:
- Keine Priorisierung
- Reaktionszeit von Anzahl und Komplexität der Ereignisse abhängig
- Kurzzeitige ereignisse (puls am Eingang) können verloren gehen
- Ereignisse dürfen nicht Blockieren
- Kein Sleep-Mode möglich, da immer gepollt werden muss
- Zwingend mit Statemachine-Ansatz realisiert
Vor- und Nachteile rein interruptgesteuerter Systeme
Vorteile:
- Resourcensparend (Kein andauerndes pollen, Sleep-Mode möglich)
- Priorisierung möglich
Nachteile:
- evt. nicht alle Inputs interruptfähig
- Latenzzeit etwas höher als bei Polling eines einzelnen Ereignisses
- Prelllen am Input löst mehrere Interrupts aus
- keine Differenzierungsmöglichkeit zwischen dringlicheren und weniger dringlicheren Phasen einer Ereignissbehandlung
- Race-Conditions insbesondere bei priorisiertem "nested interrupt"
- ISR darf nicht blockieren => Nur mit Statemachine-Ansatz lösbar
=> Untauglich wenn viele Ereignisse mit unterschiedlichen Echtzeit-Anforderungen und/oder Verarbeitunsgszeit nahezu gleichzeitig eintreffen.
Vor- und Nachteile beim mix zwischen Interruptgesteuert und zeitunkritischer Verarbeitung im Hauptprogramm
Die meisten kostenoptimierten "low end" Mikrocontrollersysteme arbeiten so!
Vorteile:
- Schnelle Reaktion auf Ereignisse (sofern alle ISRs kurz sind)
- Keine grossen Anforderungen an Interrupt-Struktur (prellen im Hauptprogramm oder Timer-ISR behandeln
Nachteile:
- Verarbeitung nicht ereignisspezifisch priorisierbar
- Moderate Gefahr von Race-Conditions (bei Entwurfsfehlern)
- Keine komplexe Projekte, da anspruchsvoll und unflexibel
Vor- und Nachteile beim Multitasking
Vorteile:
- Geeignet auch für sehr komplexe Projekte
- „Nebenläufigkeiten“ einfach realisierbar (quasigleichzeitige Abarbeitung)
- Auf Ereignisse bei Bedarf sehr schnell reagieren (ISR + hochpriorisierte Tasks)
- Wenig Anforderungen an Interrupt-Struktur (keine nested ISR benötigt )
Nachteile:
- Der Wechsel zwischen Tasks benötigt Zeit
- Grösserer Speicherressourcenbedarf
- Debugging ev. problematisch (nicht rein sequentiell, stack overflow)
- Shared Ressources sind heikel
Was ist der Unterschied von FreeRTOS zu eCos?
eCos liefert auch einen Bootloader, Treiber, Filesystems, Netzwer/USB-Stacks und Bibliotheken mit.
Welche nicht-technischen Kriterien müssen bei der RTOS-Wahl berücksichtigt werde?
Lizenzkoste/-bedingungen
Support/Community
Zertifizierung
- SIL 1..4 IEC 61508/IEC61511 (Auto, Medizin)
Was sind die technischen Kriterien zur RTOS-Wahl?
- CPU-Architektur unsterstützung
- Scheduler: Preemtive und/oder Cooperative Multitasking
- Realtime-Eigenschaften (Taskswitch-Zeit, Latenzzeit)
- Speicherbedarf, Fragmentierung und RT-Eigenschaften beim Allozieren
- Umfang und Kompatibilität von Treibern und Bibliotheken
Vergleich RTOS "General Purpose OS"
RTOS:
- Hard-Realtimefähig
- Speicherfragmentierung
- nur einfache Memory Protection
- Ethernet/USB/SPI ... nur eingeschränkt Nutzbar teils ohne RT
- Geeignet für 16..32bit ~50MIPS ohne MMU
GPOS:
- höchstens Soft-RT
- Virtual Memory Mapping (kaum Fragmentierung, komfortabel)
- Vollumfänglicher Speicherschutz
- Ethernet/UART ... Vollumfänglich implementiert
- Geeignet für 32/64bit mit MMU und Cache
Gängige RTOS Kernel
eCos
FreeRTOS
SafeRTOS
Linux RT-Preempt Patch
Real VMX
VxWorks
Windows CE
Zephyt OS
Welche heterogene RT Alternativen existieren?
- Linux Kernel Patch für RT optimierung
- Co-Kernel approach (OS als Task eines RTOS)
- Multicore-System (Zwei CPU-Cores: 1 Core RTOS + 1 Core GPOS )
In welchem FreeRTOS Verzeichnis ist das HAL
Source/Poratable/Compiler/Platform/{Port.c, ...}
Unter welcher Lizenz wird FreeRTOS veröffentlicht?
Modified GPL License
Was ist make (Makefile)?
make ist ein Build-Management-Tool, das Kommandos in Abhängigkeit von Bedingungen ausführt.
Wie ist ein Makefile aufgebaut?
Das Makefile enthält Variablen und Rules.
Wie sieht eine Makefile Rule aus?
Target: Dependencies
Commands
Targets und Dependencies können Dateien sein oder ein so gennantes "Phony Target" d.h. von einer anderen Rule abhängig sein. Command mit Tabulator einrücken!
Alle Rules sind im Makefile explizit zu definieren, die Built-in Rules sind nicht bei allen systemen geeignet.
Wie werden in einem Makefile Variablen verwendet?
Zuweisung
VAR = ...
Zuweisung (nicht erweiterbare Expansion)
VAR := ...
Ergänzen einer definierten Variable
VAR += ...
Referenzieren (auslesen):
$(VAR)
Hinweis: Exportierte Shell-Variablen werden übernommen
Weshalb werden Wildcard Rules in Makefiles angewendet?
Wildcard Rules ermöglichen allgemeingültige Regeln.
z. Bsp:
%.o: %.c
gcc -Wall -g -o $@ c $<
Alle .c-Dateien (Dependency: %.c) werden zu .o-Object-Dateien (Target: %.o) kompiliert.
Dazu wird der gcc mit dem Outfile '-o $@' wobei $@ der vollstädige Target-Wert enthällt und dem Infile '$<' welches den Dependency-Wert enthält
Wie können Wildcard-Regeln eingeschränkt werden?
$(OBJ) : %.o : %.c
%.o : %.c wird nur für Objektfiles verwendet welche in der Variablen $(OBJ) aufgeführt sind.
Wie müssen Phony Targets in Makefiles aufgeführt werden?
.PHONY: clean size ...
Welche nützlichen Funktionen bietet make?
SRC = $(OBJ:%.o=%.c) #Variable SRC wird aufgrund Var. OBJ entsprechend generiert
SOURCES := $(wildcard *.c) # Liste aller Files *.c im current directory
OBJS := $(patsubst %.c, %.o, $(SOURCES)) # Ergebnis gleich wie Kurzform oben
$(addprefix l,$(LIBS)) # jedem enth. Wort wird 'l' vorangestellt
FILES := $(foreach dir, $(DIRS), $(wildcard $(dir)/*)) # Liste aller Files *.c aus mehr. Dirs
Was ist die Gefahr bei Makefiles?
Makefiles verwenden existierende Dependency-Dateien falls sie nicht neuer als das Target sind.
Da Headerfiles nicht kompiliert werden müssen werden Änderungen an ihnen nur festgestellt wenn beim kompilieren Demendency-Files erzeugt werden (gcc -M) und diese mit -include $(wildcard dep/*) im Makefile aufgeführt werden.
Was geschieht beim Aufruf von make?
Das Makefile im aktuellen Verzeichnis wird aufgerufen und die erste Regel ausgeführt.
Ein bestimmtes Target kann mit 'make target' ausgeführt werden.
Weitere optionale Argumente:
-f <file> Explizite Angabe eines Makefiles (statt 'Makefile' im current directory)
-C <dir> Vor Ausführung, Wechsel ins Verzeichnis <dir>
-j <n> make interne Parallelverarbeitung (bei vielen Targets und <n> CPUs)
-p Anzeigen der „builtin rules“
Was ist gdb?
GNU Debugger (aus GCC Toolchain) mit einem rudimentären CLI.
Was bedeutet arm-none-eabi-[gcc/gdb/...]?
arm-none-eabi- ist das Toolchain-Prefix und gibt an für welches Zielsystem die toolchain geeignet ist. CPU-Platform: arm; OS: none (Kein OS); eabi = "embedded application binary interface"
Wie funktioniert Remote Debugging?
Beim gdb ist ein Debugger-Backend (gdbserver) vorhanden. Dieser wird auf dem Zielsystem (Cotroller) ausgeführt. Über die Serielle-Schnittstell oder via TCP/IP kann der gdb auf dem Hostsystem (PC/Notebook) das Backend steuern.
Damit der gdbserver auf dem Zielsystem läuft, muss dieses ein POSIX-konformes OS aufweisen.
Wie funktioniert GDB mit OpenOCD (Kein POSIX Target)?
Anstelle des gdbservers läuft auf dem HOST! das OpenOCD im gdbserver-Mode.
Der gdb verbindet sich via TCP/IP (Port 3333) mit dem OpenOCD, welches die Befehle via USB dem JTAG Programmer übergibt (z.Bsp. FT2232) welcher am uC angeschlossen ist.
Wie muss beim Debuggen eine Programmänderung vorgenommen werden?
OpenOCD stoppen (make killgdbserver)
Programm neu builden
Programm flashen
OpenOCD neustarten
Was bedeutet bare-metal?
Auf dem Controller läuft kein GPOS
Weshalb läuft der Debugger über JTAG?
Bei JTAG braucht es keinen Debug-Code auf dem Controller, da JTAG direkt Befehle injizieren kann.
Wie funktioniert ein preemptives Multitasking-System?
Jeder Task läuft während einer bestimmten Zeit (time slice).
Auf jedem CPU-Core wird ein Task als Running aktiv bearbeitet.
Nach ablauf der Zeit wird der nächste Task aus der Ready-Liste entnommen.
Wird ein Task Suspended oder ruft einen blocking Befehl auf, wird er erst in die Ready-Liste eingefügt wenn die Resume bedingung erfüllt ist.
Wozu werden Semaphores verwendet?
Task synchronisation ohne polling.
Es ist eine Betriebssystem-Funktionalität! (Scheduler-Funktkionalität)