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

Slides:



Advertisements
Ähnliche Präsentationen
Wake on LAN.
Advertisements

Object Relational Mapping
Powerpoint-Präsentation
Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
IO - Hardwarestruktur, allgemein
1 Was ist ein klassischer Prozess? A eine exe-Datei B log. Adressraum, Ablaufumgebung für genau einen Thread C log. Adressraum, Ablaufumgebung für eine.
C Tutorium – Fehlerbehandlung – Knut Stolze. 2 Grundsatz Also ist auch nach jedem Funktionsaufruf auf Fehler zu prüfen!! Jeder(!) Funktionsaufruf kann.
C Tutorium – Semaphoren –
Mu - Linux.
1 Spezielle Packages des Java SDK (1.4) java.nio.
Indexed Sequential Access Method
Enno Rehling und Roger Butenuth, Uni-GH Paderborn: Arminius: Software für Linux-basierte SCI-Cluster Arminius: Software für Linux-basierte SCI-Cluster.
Kapitel 6.1 Nebenläufigkeit und wechselseitiger Ausschluss
10 Streams JavaHS Merseburg WS 05/06 E/A - Ströme (Streams) in Java.
Sortierverfahren Richard Göbel.
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Tiny TP Tiny TP gehört zwar zu den optionalen Komponenten wird aber dringend empfohlen. Tiny TP erfüllt folgende Aufgaben: 1.Zerlegung von großen Nachrichten.
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Universität zu Köln Kurs Dedizierte Systeme
SoundManager oe, ab, rpn awp.sound.* Klassen-Konzept SoundXXXRoom SoundFxProcessor SoundCommonRoom Seite 1 SoundDistributor SoundA3D a3dtools.
1 Linux Paging, Caching und Swapping. 1 Vortragsstruktur Paging – Das Virtuelle Speichermodell –Die Page Table im Detail –Page Allocation und Page Deallocation.
Internet und seine Dienste
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
Verkettete Liste Visualisierung. New-Operator Mit dem New-Operator kann zur Laufzeit (dynamisch) Speicherplatz reserviert und angelegt werden Vorteil:
Einführung in die Netzwerktechnik 1 Der ARP-Prozess
Martin MauveUniversität Mannheim1 3.6 User Datagram Protocol (UDP) RFC 768. J. Postel. User Datagram Protocol unzuverlässiges Transportprotokoll.
Fli4l Der Ein-Disketten-Router von Sebastian Röhl von Sebastian Röhl.
Linux-HA-Cluster – Heartbeat mit DRBD
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
SMS über Festnetz Teil2 praktische Realisierung
Wismar Business School
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
RS232 Register und ihre Bits
Netzwerkkomponenten (Hardware)
Einführung in die Benutzung des Einkaufportals der Eckelmann AG
Seite 1 1 \\ Tracking Information System - Aufragsmanagement -
1 Welche Maßnahmen muss man treffen, um sowohl unter BORLAND als auch unter KEIL kompilieren zu können? Eliminieren der zusätzlichen Schlüsselwörter Programmieren.
TCP/IP-Ethernet.
P060 - IFI-Pflegedialogsystem - Termine und Nachrichten Ingenieurbüro für Informationssysteme Konzepte und Marketing Gerade Straße Buchholz i.d.N.
Passwörter.
OMRON 1 FINS Befehle schicken mit CX – Server Lite Aufgabe :
Aufbau eines von-Neumann- Rechners Marcel Waldvogel.
PSI - Überblick und Szenarien
P040 - Pflegedialog-Informationssystem - Schichtwechsel Ingenieurbüro für Informationssysteme Konzepte und Marketing Gerade Straße Buchholz i.d.N.
Bs Gemeinsame Datensegmente am Beispiel Solaris [Beachte: Unix/Linux setzen keine Hardware-Segmentierung voraus und sprechen daher statt von.
Netzwerke.
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Objectives Verstehen was unterDelegate verstanden wird
Allgemeine Funktionalitätsbeschreibung
DATEISPEICHER in der S P S
Betriebssysteme Übung Tutorium „TLB & Virtual Memory“
iMAS Schnittstellen - Übersicht
Programmiervorkurs WS 2014/15 Instanzmethoden
System zur Videokompression Simone Buzzi Simon Häne Giuseppe Schiavello.
Die Vereinsverwaltung unter Windows 2000 Anhand der folgenden Präsentation werden Sie mit der Verwaltung des Vereins unter Windows 2000 vertraut gemacht.
Musterlösung Regionale Fortbildung © Zentrale Planungsgruppe Netze am Kultusministerium Baden-Württemberg (ZPN) Die Firewall in der Musterlösung Teil 4:
Spezifikation der Module / Programme
User Mode Linux Sven Wölfel 1. Juni User Mode Inhalt  Was ist UML?  Wofür kann man UML benutzen?
Vs Objektpufferung (caching) = dynamische, ad-hoc-Replikation einer Primärkopie: Zugriffswilliger beschafft sich temporär eine lokale Kopie cache.
Lisa Huber DHBW Mannheim
1 Servlets Stephan Baldes. 2 Was ist ein Servlet? S E R V L E T = Eine auf Java-Technologie basierte Web-Komponente, die von einem Container.
J Walk/GUI400 für Einsteiger License Manager Installationsvorgang © NewServ AG, Uitikon.
Multiprocessing mit OpenMPI Marius Albath. Vorlesung Betriebssysteme, Was ist OpenMPI Was ist OpenMPI OpenMPI Standard Setup OpenMPI Standard.
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
S INGLETON P ATTERN IN M ATLAB By Giuseppe
Tutorium Software-Engineering SS14 Florian Manghofer.
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
1. Die rekursive Datenstruktur Liste 1.5 Das Entwurfsmuster Kompositum
Fotos per senden Computeria Wallisellen / Opfikon Erst Rev Bruno Widmer.
 Präsentation transkript:

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

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

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

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

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)

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)

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

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

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

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

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

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

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

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

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.

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