Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: Snake707 am 06. April 2007, 21:08
-
Hi,
es hieß, es gäbe massenweise tutorials darüber wie man treiber programmieren könnte. Ich habe mich mal hingesetzt, bestimmte dinge zu abstrahieren und komme auf ca. 10 Interrupts die ich im PM brauche. Allerdings finde ich kein Tutorial über die Ports. Soweit ich weiß muss man im Protected mode versuchen, da man das BIOS ja nicht mehr hat, über Ports an die Hardware zu kommen. Tastatur ist soweit ich weiß 0x60 und 0x64. Also kennt jemand ein Tutorial über Hardware ports.
mfg Snake707
-
Ein wirkliches tutorial kenn ich nicht, aber in
Ralf Brown's Interrupt Liste (http://www.cs.cmu.edu/~ralf/files.html) sind auch dir ports erklärt.
-
Hehe...du brauchst eigentlich kein Tut über Ports, sondern eher eins über einen bestimmten Treiber...
Also was für einen Treiber willst du zuerst machen? Fang z.B. mit Tastatur an, dann würde ich Grafik machen usw...
In der schnelle habe ich das gefunden zur Tastatur...http://www.osdev.org/osfaq2/index.php/Getting%20Keyboard%20Input.
Kannst auch mal im Wiki usw. schauen.
Gruss
Noooooooooos
-
Nun ich denke, dass das ganz gut ist, wenn ich mir tutorials über treiber durchlese. Trotzdem sollte ich zumindest wissen, was die einzelnen Ports machen, sodass ich selbst in der Lage wäre mir Treiber aus der Nase zu ziehen ;) (mein Ausdruck mal wieder -.-)
mfg Snake707
-
Naja...eben Tuts über alle Ports gibts nicht....Weil das dann sicher etwa 60'000 Seiten hätte (wenn pro Port nur eine Seite gebraucht würde)...
Deshalb kannst du dir nur Tuts oder auch Docs zu allen möglichen Treibern lesen...Da werden auch die entsprechenden Ports behandelt.
Gruss
Noooooooooooooos
-
Nun, Ports kann man am besten mit dem Arbeistspeicher vergleichen. Es ist ein Adressraum von 16Bit.
Über die einzelnen Ports kann man die hardware ansprechen.
Auch einige Berreiche des Adressraumes vom Arbeistspeicher werden verwendet um mit bestimmter Hardware zu kommunizieren.
Einige Ports sind fest vergeben (z.B. Tastertur) andere nicht.
Es gibt im Internet einige Listen wo die Standardverwendungen vieler Ports beschrieben sind, aber um einen Treiber zu schreiben reichen diese offt nich aus.
Wenn du also einen Treiber schreiben möchtest, solltest du dir ein Tutorial genau für das zu programmierende Gerät suchen.
-
Genau. Zudem haben verschiedene Geräte nicht nur verschiedene Portadressen, sondern teilweise auch ganze Bereiche. Beispielsweise findest du den Parallelport auf Port 0x378 für die Daten und auf Port 0x37A für die Steuerleitungen/Einstellungen.
Also - wie schon gesagt - musst du dich exakt mit der Hardware beschäftigen. Der PCI-Bus gibt dir zu den Geräten auch die Port-Bereiche vor (PnP) zu denen du dann relativ vorgehen musst.
Gruß,
Svenska
-
Hi,
schau mal da:
http://gd.tuwien.ac.at/languages/c/programming-bbrown/advcw1.htm#portaccess
http://heim.ifi.uio.no/~stanisls/helppc/ports.html
Cheebi