Herunterladen Inhalt Inhalt Diese Seite drucken

Phoenix Contact IBS PCI DDK UM Anwenderhandbuch Seite 94

Device driver development kit zu anschaltbaugruppen für pc-systeme mit pci-bus
Inhaltsverzeichnis

Werbung

IBS PCI DDK UM
Node 1
Node 0 (Interrupt-
Routine)
Node 0 (Routine zum
Auslesen der Nach-
richt)
4-10
Detaillierter Ablauf beim Übertragen einer Nachricht von Node 1 an
Node 0:
1. Node 1 prüft, ob das Send-Vector-Register SVR[1][0] frei ist. Dazu liest
er das MPM-Handshake-Register A aus und prüft, ob das Bit HS_A1
gleich Null ist. Ist das Bit gesetzt, ist das SVR belegt und kann nicht
verwendet werden.
2. Die Adresse (Offset) der Mailbox wird im MPM in das SVR eintragen.
3. Das Set-HS-A1-Register wird mit dem Wert 8000hex beschrieben (und
löst damit einen Interrupt beim Node 0 aus).
1. Node 0 erkennt anhand des gesetzten Bits HS_Int_0 im MPM-Status-
Register1, dass die Ursache des Interrupts ein Mailbox-Handshake-
Protokoll-Interrupt ist.
2. Er liest das Handshake-Register A aus, um festzustellen welcher Node
den Interrupt auslöste. Anhand des dort gesetzten Bits HS_A1 erkennt
der Empfänger (Node 0), dass es sich um eine Nachricht vom Node 1
handelt. Gleichzeitig erkennt er damit auch, dass es sich um ein „Nach-
richt vorhanden"-Ereignis handelt (siehe auch Bild 2-18 auf
Seite 2-27).
3. Node 0 bestimmt die SVR-Adresse des Senders (SVR[1][0]), liest das
Register aus und „merkt" sich dessen Inhalt, der die Adresse der Mail-
box mit der Nachricht darstellt. (Die Adresse liegt im Motorola-Format
vor.)
4. Er setzt das Bit im Handshake-Register A wieder zurück, indem er in
das Set-HS-A1-Register den Wert 0000hex schreibt.
5. Der Empfänger (Node 0) kann nun die Mailbox auslesen, da er sich die
Adresse der Mailbox „gemerkt" hat. Sobald die Nachricht aus der Mail-
box kopiert ist, muss er dem Sender (Node 1) mitteilen, dass die Mail-
box frei ist und wieder verwendet werden kann.
1. Node 0 stellt fest, ob das Acknowledge-Vector-Register frei ist. Dazu
liest er das Handshake-Register A aus und prüft, ob das Bit HS_A12
gleich Null ist. Ist das nicht der Fall, wartet er bis das Bit HS_A12 zu-
rückgesetzt wurde bzw. er gibt eine Fehlermeldung aus. Ansonsten
fährt er fort mit Schritt 2.
2. Node 0 trägt die Adresse der Mailbox in das AVR (AVR[0][1]) ein, aus
der die Nachricht gelesen wurde.
3. Node 0 beschreibt das Set-HS-A12-Register mit dem Wert 8000hex
und löst damit einen Interrupt beim Node 1 aus. Damit wird dem Node
1 angezeigt, dass die Mailbox wieder frei ist.
6189A

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis