MC2

MC2

MC2


Kartei Details

Karten 61
Sprache Deutsch
Kategorie Elektrotechnik
Stufe Universität
Erstellt / Aktualisiert 06.03.2016 / 04.01.2018
Weblink
https://card2brain.ch/box/mc2
Einbinden
<iframe src="https://card2brain.ch/box/mc2/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

Woher kommen die Semaphore?

Das Verfahren wurde von Djikstra entwickelt. Der Begriff stammt aus der Schiffahrt (Semaphoren sind Signalisationsflaggen)

Wann werde anstelle von Semaphoren Spinnlocks verwendet?

Bei kurzen Code-Sequezen werden bei Multicore-Systemen Spinnlocks (polling) verwedet, da dies effizienter ist als resheduling.

Was sind die Anforderungen für die  verwendete Cross-Compiler-Toolchain?

CPU-Platform (ARM) unterstützen und MMU-lose Mikrocontroller geeignet sein.

Was heisst MMU und was macht MMU?

MMU = Memory Management Unit, eine Hardware-Einheit welche es ermöglicht, dass jedes Programm in einem eigenen Virtuellen Adressraum läuft. Die MMU übersetzt in diesem Fall die virtuellen Adressen unter Verwendung einer Page Table in die physikalischen Speicheradressen...

Wie heisst die unter Windows installierte Portierung welche iene POSIX-Umgebung vortäuscht?

Shellutils

Welche Tools werden neben Eclipse noch benötigt?

Eclipse setzt ein aktuelle Java Runtime Enciroment (JRE) voraus.

Eclipse CDT Plugin( C/C++ Development Tools) -> bei "Mars" integiert

Für was wird OpenOCD verwendet?

Zwecks Flashen des Program Memories sowie Remote-Debugging.

OpenOCD kann mit unterschiedlichen JTAG-Interfaces und jeweils zugehörigen Treibern verwendet werden.

Was macht FreeRTOSConfig.h  ?

Konfiguriert den FreeRTOS-Kernel

Welche Kette wurde beim Flashen des Target-Controllers durchlaufen?

Bild

Für was kann man OpenOCD auch noch verwenden?

als „Backend-Server“ für den GNU Debugger (GDB) dienen, wodurch ein „Remotedebugging“ aus Eclipse mit relativ wenig Zusatz-Aufwand möglich wird

Wie kann OpenOCD ein Programm starten/stoppen/inspizieren ?

Der GDB Debugger-Frontend kommuniziert mit dem „gdbserver“, also dem Debugger Backend wozu wir OpenOCD verwenden. OpenOCD steuert also via USB und die JTAG-Debug-Hardware die Debug- Register des Target-Controllers an

Die Kommunikation zwischen Debugger-Frontend (arm-none-eabi-gdb) und dem Debugger Backend (dem „gdbserver“ OpenOCD) erfolgt dabei via....?

TCP/IP über den Port 3333

Können Front-und Backend auf verschiedenen Rechnern laufen?

ja da Kommunikation über TCP/IP über den Port 3333

Ablauf Crossdebugging mit Eclipse, arm-none-eabi-gdb sowie OpenOCD:  (Bild)

Bild

Vor dem Debuggen muss unbedingt...

  • das Projekt ohne Optimierungen übersetzt worden sein

  • und das aktuelle Programm mittels External Command Flash Program Memory (make flash)

    auf den Target-Controller geflashed worden sein!!!

Was macht uxTaskGetStackHighWaterMark() ?

Mittels Aufruf von uxTaskGetStackHighWaterMark() kann in beliebigen Tasks überprüft werden, wie viel freier Platz im jeweiligen Taskstack bleibt.

Wieso darf aus einem Ablauf mehrerer GPIO-Portzugriffe erfolgen?

Diese Code-Sequenz darf nicht mittendrin unterbrochen und dann von einem anderen Task von Beginn an neu ausgeführt (so genannt „re-entered) werden. Ein Missachten könnte nebst Anzeigefehler sogar zum Absturz des Systems resp. zu einem „Deadlock“ führen

Wo wird die Semaphore initialisiert?

main() noch vor dem Starten des Schedulers (!) mittels Funktion vSemaphoreCreateBinary()

Wo wird der Datentyp xSemaphoreHandle deklariert und definiert?

Dieser Datentyp sowie die nachfolgend verwendeten Funktionen sind übrigens im Headerfile "semphr.h" deklariert resp. in „semphr.c“ definiert

Wie wird der kritische Abschnitt umkapselt?

if( xSemaphoreTake( xSemaphore, ( portTickType ) 10 ) == pdTRUE ) {

//Kritischer Abschnitt

xSemaphoreGive( xSemaphore ); //Freigabe

}

Welche Prio ist im RTOS auf dem Cortex M die höchste?

0

(7 ist die niedrigste)