Herunterladen Inhalt Inhalt Diese Seite drucken

Priorisierung Der Interrupts; Triggermodi; Maskierung Der Interrupt-Eingänge; Software-Interrupts Für Irq - Siemens ERTEC 200 Handbuch

Enhanced real-time ethernet controller
Inhaltsverzeichnis

Werbung

2.9.1

Priorisierung der Interrupts

Die Prioritäten der IRQ- und FIQ-Interrupts sind einstellbar. Bei den IRQ-Interrupts sind die Prioritäten 0 – 15 und bei den
FIQ-Interrupts sind die Prioritäten 0 – 7 parametrierbar. Bei beiden Interruptebenen ist 0 die höchste Priorität. Nach
Reset sind alle IRQ-Interrupt-Eingänge auf Priorität 15 und alle FIQ-Interrupt-Eingänge auf Priorität 7 gesetzt. Zu jedem
Interrupt-Eingang gehört ein Prioritätsregister. Für die IRQ-Interrupts sind das PRIOREG0 – PRIOREG15 und für die FIQ
FIQPR0 bis FIQPR7. Es darf keine Priorität mehrfach vergeben werden. Eine Überprüfung bezüglich der Vergabe
identischer Prioritäten findet in der ICU-Logik nicht statt. Durch Vorgabe einer Priorität im Register LOCKREG können im
IRQ-Prioritäts-Resolver jederzeit alle Interrupt-Request mit kleiner oder gleicher Priorität gesperrt werden. Tritt
gleichzeitig mit dem Schreibzugriff auf das LOCKREG-Register ein Interrupt-Request eines zu sperrenden Interrupts auf,
so verursacht dieses Ereignis die Ausgabe eines IRQ-Signals. Das Signal wird jedoch nach zwei Takten wieder
zurückgenommen. Sollte dennoch ein Acknowledge generiert werden, so ist der übergebene Interrupt-Vector der
Default-Vector.
2.9.2

Triggermodi

Es stehen für jeden Interrupt-Eingang die Betriebsarten „Flankengetriggert" oder „Pegelgetriggert" zur Verfügung.
Die Triggerart wird über das zugeordnete Bit im Register TRIGREG festgelegt. Bei Einstellung der Betriebsart
„Flankengetriggert" kann zwischen positiver und negativer Flankenauswertung unterschieden werden. Dies wird im
Register EDGEREG vorgenommen. In der Betriebsart „Pegelgetriggert" ist der aktive Pegel der Interrupt Request
Signale high aktiv. Defaultmäßig sind die IRQ-Interrupts wie in Kapitel 2.9.7 und die FIQ-Interrupts wie in Kapitel 2.9.8
beschrieben, parametriert.
Bei der Betriebsart „Flankengetriggert" muß das Interrupt-Eingangssignal mindestens eine Taktperiode lang anstehen. In
der Betriebsart „Pegelgetriggert" muß das Eingangssignal bis zur Bestätigung der ARM946E-S CPU anstehen. Kürzere
Signale führen zum Verlust des Ereignisses.
2.9.3
Maskierung der Interrupt-Eingänge
Jeder IRQ-Interrupt kann einzeln freigegeben oder gesperrt werden. Dafür steht das Register MASKREG zur Verfügung.
Die Interrupt-Maske wirkt erst nach dem Interrupt-Request-Register IRREG. Das heißt, dass ein aufgetretener Interrupt
trotz Sperrung im MASKREG-Register ins IRREG-Register eingetragen wird. Nach RESET sind alle Maskenbits gesetzt
und somit alle Interrupts gesperrt. Übergeordnet kann per Befehl eine globale Sperre aller IRQ-Interrupts durchgeführt
werden. Eine globale Freigabe der IRQ-Interrupts per Befehl gibt nur die IRQ-Interrupts frei, die durch das
entsprechende Maskenbit im Register MASKREG freigegeben sind.
Für die FIQ-Interrups ist nur die selektive Maskierung durch die Maskenbits im Register FIQ_MASKREG möglich. Nach
RESET sind alle FIQ-Interrupts gesperrt. Ein erkannter FIQ-Interrupt-Request wird ins FIQ-Interrupt-Request-Register
eingetragen. Ist der Interrupt im Maskenregister freigegeben, so erfolgt eine Verarbeitung in der Prioritätslogik. Bei
Annahme des Interrupt-Requests durch die ARM946-CPU und der Eintragung in das In-Service-Request-Register (ISR)
wird das entsprechende Bit im IRREG-Register zurückgesetzt. Es kann auch jedes gesetzte Bit im IRREG-Register per
Software gelöscht werden. Hierzu wird dem Interrupt-Controller die Nummer des zurückzusetzenden Bits im IRCLVEC-
Register übergeben.
2.9.4
Software-Interrupts für IRQ
Jeder IRQ-Interrupt-Request kann durch Setzen des dem Eingangskanal entsprechenden Bit im Software.Interrupt-
Register SWIRREG ausgelöst werden. Es können auch mehrere Requests in das 16-Bit SWIRREG – Register
eingetragen werden. Die Software-Interrupt-Requests werden direkt in das IRREG-Register übernommen und somit wie
ein Hardware-IRQ behandelt. Software-Interrupts können nur vom ARM946E-S Prozessor ausgelöst werden, da nur
dieser Zugriffsrechte auf den Interrupt-Controller besitzt.
2.9.5

Nested Interrupt Struktur

Ein aufgetretener IRQ-Interrupt-Request verursacht bei Freigabe durch die Interrupt-Prioritätslogik die Ausgabe eines
IRQ-Signals. Entsprechend verursacht ein FIQ-Interrupt-Request die Ausgabe des FIQ-Signals an die CPU.
Bei Annahme des Requests durch die CPU wird das dem physikalischen Eingang entsprechende Bit im Register
ISRREG gesetzt. Das IRQ-/FIQ-Signal wird zurückgenommen. Das ISR-Bit des angenommenen Interrupts bleibt
gesetzt, bis die CPU ein „End-Of-Interrupt" Befehl an den Interrupt-Controller zurückgibt. Solange das ISR-Bit gesetzt ist,
werden Interrupts mit niedrigerer Priorität in der Prioritätslogik des Interrupt-Controllers gesperrt. Interrupts mit einer
höheren Priorität werden von der Prioritätslogik durchgelassen und erzeugen ein IRQ-/FIQ-Signal an die CPU. Sobald
die CPU diesen Interrupt annimmt, wird auch das entsprechende ISR-Bit im ISRREG-Register zusätzlich gesetzt. Die
CPU unterbricht dann die Interrupt-Routine mit der niedrigeren Priorität und arbeitet erst die höhere Interrupt-Routine ab.
Aufgetreten Interrupts mit niedriger Priorität gehen nicht verloren. Diese werden in das Register IRREG eingetragen und
zu einem späteren Zeitpunkt, wenn alle höherprioren Interrupt-Routinen abgearbeitet sind bearbeitet.
2.9.6

EOI End-Of-Interrupt

Ein gesetztes ISR-Bit wird durch den Befehl End-Of-Interrupt zurückgesetzt. Dies muß die CPU nach Bearbeitung der
entsprechenden Interrupt-Service-Routine an den Interrupt-Controller mit dem Befehl EOI mitteilen. Der EOI-Befehl wird
durch einen Schreibzugriff der CPU auf die Register IRQEND/FIQEND mit einem beliebigen Wert dem Interrupt-
Controller mitgeteilt. Der Interrupt-Controller entscheidet selbstständig, welches ISR-Bit mit dem EOI-Befehl
zurückgesetzt wird. Sind mehrere ISR-Bits gesetzt, so löscht der Interrupt-Controller das ISR-Bit des zum Zeitpunkt des
EOI-Befehl höchstprioren Interrupt-Requests. Der Interrupt-Zyklus gilt für den Interrupt-Controller für beendet, wenn alle
gesetzten ISR-Bits durch die entsprechende Anzahl an EOI-Befehlen zurüchgesetzt wurden. Danach können
Copyright © Siemens AG 2010. All rights reserved.
Änderungen vorbehalten
23
ERTEC 200 Handbuch
Version 1.1.2

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis