ZBW
-
- 1 / 9
-
Cartes-fiches
Was ist ein Trap?
Ein Trap ist ein synchroner Interrupt, weil sie direkt ins Programm geschrieben werden und ihr Vorkommen also genau so bekannt ist.
Was unterscheidet ein Trap von einem von einem indirekten Jump-Subroutine Befehl?
und was ist gleich?
Im gegensatz zur Jump-Soubroutine wird auch noch das Statusregister im Stack abgelegt und das Supervisorbit gesetzt.Ein weitere Vorteil ist der gleichbleibende Programmeinsprungpunkt ,auch über verschiedene Programmversiionen. Zum zurückehren wird der RTE Befehl verwendet (Return from Exception) nicht RTS.
Gleich ist jeder Trap Befehl hat eine genau defienierte Speicherstelle ( vier Byte) in der eine Adresse zu stehen hat wo das Soubroutinen Programm beginnt. Rücksprungadresse wird auf dem Stack abgelegt sodass aus dem Trap-Programm wieder an die Stelle im Programm zurückkehren kann.
Für was wird der Trap benutzt?
Es ist ein Werkzeug um aus dem Usermodus in den Supervisormodus zu gelangen.
Unterschied Trap und Interrupt?
Im gegesatzt zum Trap tritt der Interrupt völlig asynchron zum Programmfluss auf man weiss nie wan er kommt.
Der klassische Anwendungsfall von Traps?
Das Betriebsystem ist eigentlich anderes als eine Sammlung von ausgetesteten Funktionen zur Steuerung eines Coomputers die gesammelt geordnet und durchnummeriert wurden.
Wie läuft der Trap beim 68k ab?
-Der uP stösst auf den Befehl Trap #n
-Das Statusregister wird in ein uP-internes Temporäres-Register versorgt
-Es wird in den Supervisor Modus geschalten d.h. Stackpointer ist nun der SSP
-Der PC wir auf dem Stack gesichert
-Das SR aus dem Temporär-Register kommt ebenfalls auf den Stack
-Der PC wird mit dem Vektor aus der Vektortabelle geladen.
-Nun zeigt der PC hoffentlich auf die Trap-Routine (BS) und das Programm kann weiter gehen.
Wie kann man Peripherien kontrollieren ohne Interrupts?
Immer periodisch nachschauen ob ein ereignis aufgetreten ist.Das Problem dabei ist das man so schnell nachschauen muss das keine Zeichen verloren gehen.
Was machd man bei einer Interrupt-Initialiesierung mit
Prozessor
Peripherie
Prozessor auf Interruptereigniss vorbereiten typ. Adresse der Interrupt-Service-Routine an hersteller-vorgegebenen Ort hinterlegen. 68k in Vektortabelle
Peripherie Register so initialisieren, das bei beabsichtigtem Ereignis ein Interrupt flag gesetzt wird
Zu allerletzt der Initialiesierung, das Interrupt Enable Register.setzen damit das Interrupt Flag bis zum Prozessor durchschaltet.
Wie sieht eine Interrupt-Service-Routine ISR aus?
Der uP erkennt den Interrupt, speichert Rücksprungadresse und Statusregister auf dem Stack und setzt den Programmcounter auf die Interrupt Service Routine.
Die ISR prüft als erstes das Interruptflag der Peripherie, ist dieses Flag nicht aktiv muss wihl ein anderes Ereigniss den Interrupt ausgelöst haben
Ist das aktive Interruptflag gefunden worden. Muss es zurückgesetzt werden! Somit ist der Peripheriebaustein wieder scharf das nächste Ereigniss zu melden
Sie können endlich den Programmcode abarbeiten, der die eigentliche Aufgabe ausführt
Zurückkehren zu dem Hauptprogramm