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

Wie sieht die Typische Embedded Software-Architektur mit RTOS au

 Siehe Bild:

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)