Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

22.3.2004NE2000: Hardware und Design eines Treibers 1 AKBPII: Abschlusspräsentation NE2000: Hardware und Design eines prototypischen Treibers bearbeitet.

Ähnliche Präsentationen


Präsentation zum Thema: "22.3.2004NE2000: Hardware und Design eines Treibers 1 AKBPII: Abschlusspräsentation NE2000: Hardware und Design eines prototypischen Treibers bearbeitet."—  Präsentation transkript:

1 NE2000: Hardware und Design eines Treibers 1 AKBPII: Abschlusspräsentation NE2000: Hardware und Design eines prototypischen Treibers bearbeitet von Manuel Götz, Stefan Gabriel

2 NE2000: Hardware und Design eines Treibers 2 Übersicht: Aufbau einer NE2000-kompatiblen Karte -Allgemeines -Speicherlayout -Puffer -Register Design des Treibers -Allgemeines -Klassen -Starten des Treibers und Initialisieren der Karte -Versenden von Paketen -Empfangen von Paketen Beschreibung des erstellten Treibers

3 NE2000: Hardware und Design eines Treibers 3 Aufbau einer NE2000-Karte: Allgemeines Bei der Entwicklung nie als Standard gedacht gewesen Kein Shared Memory Zugriff über den IO-Port möglich Zugriff nur auf Speicher möglich Interner Zwischenpuffer: FIFO Für Lesezugriff auf Speicher: 9 Zugriffe auf Register nötig Schreiben: 7 Zugriffe auf Register Netz FIFO Speicher BS

4 NE2000: Hardware und Design eines Treibers 4 Aufbau einer NE2000-Karte: Speicherlayout PROM: Ethernet-Adresse Puffer: - eingehende Pakete - zu sendende Pakete PROM Aliased PROM Puffer 0x0000 0x001F 0x4000 0x8000 0xC000 0xFFFF Aliased PROM Aliased Puffer

5 NE2000: Hardware und Design eines Treibers 5 Aufbau einer NE2000-Karte: Puffer Puffer sowohl für zu versendende als auch für eingehende Pakete Zugriff durch Treiber über den IO-Port möglich (und nötig) Adressen zwischen 0x4000 und 0x8000 Unterteilt durch Register (TPSR, PSTART, PSTOP); gesetzt beim Initialisieren TPSR PSTART PSTOP Zu versendende Pakete Eingehende Pakete (Ringpuffer)

6 NE2000: Hardware und Design eines Treibers 6 Aufbau einer NE2000-Karte: (Ring-)Puffer Current Pointer: Zeiger auf nächste zu schreibende Seite Boundary Pointer: Zeiger auf letzte gelesene Seite (256 Byte) Auf Umbruch ist beim Boundary Pointer selbst zu achten Innerhalb von PSTART und PSTOP Struktur des Headers eines eingehenden Pakets: Status Next Page Length (L) Length (H)

7 NE2000: Hardware und Design eines Treibers 7 Aufbau einer NE2000-Karte: Register Wichtigste Register: -Command Register: Wahl von Registerseiten, Remote DMA aktivieren oder abschalten -Interrupt Status Register: Auslesen der Art der Interrupts

8 NE2000: Hardware und Design eines Treibers 8 Design des Treibers: Allgemeines Ebene des Treibers (im TCP-IP-Schichtenmodell) TCP IP Ethernet Treiber Hardware (spezifisch)

9 NE2000: Hardware und Design eines Treibers 9 Design des Treibers: Klassen NE2000Finder.java NE2000.java Register.javaMessage.java Meldet Karte im System an Ruft richtigen Konstruktor auf Hilfsklasse zum Lesen und Hilfsklasse zum Speichern Schreiben von Speicher von ein- und aus- und Registern gehenden Paketen

10 NE2000: Hardware und Design eines Treibers 10 Design des Treibers: Starten des Treibers NE2000Finder.java wird über boot.rc aufgerufen Suche nach NE2000-kompatiblen Karten im Rechner Erkennen der speziellen Karte Prüfen, ob PCI- oder ISA-Karte gestartet wird Starten des benötigten Konstruktors Aufruf der open-Methode zum Initialisieren der Karte Anmeldung der Karte im System

11 NE2000: Hardware und Design eines Treibers 11 Design des Treibers: Initialisieren der Karte 13 initiale Schritte nötig Die Wichtigsten sind: -Hardware-Reset -Einstellungen für DMA im DCR (Data Configuration Register) -Spezifizieren der anzunehmenden Pakete im RCR (Receive Configuration Register) -Konfigurieren des Ringpuffers (BNRY, CURR, PSTART, PSTOP) -Vorbereiten des Empfangs der gewünschten Interrupts durch Löschen von ISR (Interrupt Status Register) und Setzen von IMR (Interrupt Mask Register) -Schreiben der Ethernet-Adresse in PAR0-5 (Physical Address Register) -Setzen des Start-Mode im Command-Register

12 NE2000: Hardware und Design eines Treibers 12 Design des Treibers: Versenden von Paketen 2 Methoden: transmit(...) und transmit1(...) Prüfen, ob noch ein Versendevorgang aktiv ist Schreiben der Anfangsadresse des Pakets im Puffer der Karte in das TPSR (Transmit Page Start Register) Schreiben der Länge des Pakets in die TBCR0/1 (Transmit Byte Count Register) Schreiben des Pakets in den Puffer Starten des Versendevorgangs mit dem Command-Register Vorsicht: Synchronisieren von -transmit untereinander -Schreiben in den Puffer

13 NE2000: Hardware und Design eines Treibers 13 Design des Treibers: Empfangen von Paketen Auslesen aus dem Ringpuffer: Nach Ankommen eines Pakets im Ringpuffer: Interrupt Auslesen des Pakets aus dem Ringpuffer Speichern in MultiThreadList Wenn weitere Pakete: Schleife bis alles ausgelesen Freigeben der Interupts Nochmal Prüfen, ob Paket angekommen ist Übergeben an höhere Schicht: Thread meldet sich beim Treiber an Wird bei Ankommen eines Pakets geweckt Liefert die gesamte Liste an die höhere Schicht Legt sich wieder schlafen

14 NE2000: Hardware und Design eines Treibers 14 Beschreibung des erstellten Treibers Verwirklicht: -Treiber läuft (getestet) für 2 Netzwerkkarten (Winbond und Realtek), trotz leichter Unterschiede in den Karten -Anwendung in PCI- und ISA-Modus möglich, hängt nur von den Startparametern in der boot.rc ab Noch zu Realisieren: -Auslesen der Pakete nicht mehr im Interrupthandler, sondern in einem eigenen Thread: Interruptlatenzzeit wird gesenkt

15 NE2000: Hardware und Design eines Treibers 15 Beschreibung des erstellten Treibers Größte Schwierigkeit: Ringpuffer, Setzen des Boundary Pointers Problem: Boundary Pointer muss auf Seite vor Beginn des Pakets zeigen. Grund: Sind Current Pointer und Boundary Pointer gleich, schließt Karte auf Pufferüberlauf.

16 NE2000: Hardware und Design eines Treibers 16 Vielen Dank für ihre Aufmerksamkeit!


Herunterladen ppt "22.3.2004NE2000: Hardware und Design eines Treibers 1 AKBPII: Abschlusspräsentation NE2000: Hardware und Design eines prototypischen Treibers bearbeitet."

Ähnliche Präsentationen


Google-Anzeigen