3.4.4.3 Bereitstellen einer Schnittstelle zum Geräte-Controller

[gesichtete Version][gesichtete Version]
Keine Bearbeitungszusammenfassung
Zeile 71: Zeile 71:
# Abwarten, bis der Befehl ausgeführt wurde.
# Abwarten, bis der Befehl ausgeführt wurde.
# Auslesen der Statusinformationen und Daten zum ausgeführten Befehl aus dem Data Register.
# Auslesen der Statusinformationen und Daten zum ausgeführten Befehl aus dem Data Register.
# Interpretation der ausgelesenen Statusinformationen.
# Einleiten weiterer Schritte auf Basis der Interpretation.
</p>
</p>


Zeile 83: Zeile 85:


<br />
<br />
=== Aufgabe 2 ===
=== Aufgabe 2 ===
<p>
<p>

Version vom 19. November 2014, 15:27 Uhr

Bereitstellen einer Schnittstelle zum Geräte-Controller

Ein Treiber bildet die Schnittstelle zwischen der Geräteverwaltung und dem Controller des betreffenden Geräts. Insbesondere muss der Treiber deshalb wissen, welche Befehle oder Funktionen der Controller zur Verfügung stellt, wie diese anzusprechen sind, und in welcher Weise die Rückgabewerte zu interpretieren sind.


Beispiel aus alten Tagen

Tanenbaum 2009 hat in früheren Auflagen seines Buchs gerne ein Beispiel aus den guten alten Tagen des Computerzeitalters gegeben: Ein kurzer Blick in die Kommunikation mit einem Floppy Disk Controller.


Frage

In Zeiten von USB-Sticks, SSD-Festplatten und Cloud-Speicher weißt du doch noch, was eine Floppy und ein Diskettenlaufwerk war, oder?

Notfalls zeigt Wikipedia dir die Hintergründe:
http://de.wikipedia.org/wiki/Diskette


NEC PD765 Floppy Disk Controller Chip

Die Firma NEC Electronics U.S.A. Inc. hatte seit den 1970er Jahren mit dem NEC PD765 FDC Chip einen oft eingesetzen Controller für Diskettenlaufwerke am Markt. Im Zuge der üblichen Weiterentwicklung existierten verschiedene Versionen dieses Chips.


Aufgabe 1

Aufgabe

Finde über dieses NEC PD765 Data Sheet heraus, wieviele und welche Befehle der Controller bereitstellt.


Im NEC PD765 Data Sheet wird erläutert, dass der Controller zwei interne Register bereitstellt: ein Status Register und ein Data Register. Dazu heißt es im Absatz "Internal Registers" auf Seite 6:

"The 8-bit Data Register (actually consists of several registers in a stack with only one register presented to the data bus at a time), which stores data, commands, parameters, and FDD status information. Data bytes are read out of, or written into, the Data Register in order to program or obtain the results after a particular command."


Tätigkeiten des Treibers

Aus dieser Beschreibung lassen sich die Tätigkeiten des zugehörigen Treibers bei einer Kommunikation mit diesem Controller ableiten:

  1. Schreiben des Befehls mit allen nötigen Parametern und Daten in das Data Register.
  2. Abwarten, bis der Befehl ausgeführt wurde.
  3. Auslesen der Statusinformationen und Daten zum ausgeführten Befehl aus dem Data Register.
  4. Interpretation der ausgelesenen Statusinformationen.
  5. Einleiten weiterer Schritte auf Basis der Interpretation.


Wichtig

Unter diesen Tätigkeiten des Treibers versteht man die Bereitstellung einer Schnittstelle zum Geräte-Controller.


Aufgabe 2

Aufgabe

Im Zitat oben heißt es:
"The 8-bit Data Register (actually consists of several registers in a stack with only one register presented to the data bus at a time)..."

Angenommen:

  • Der Treiber möchte einen Befehl in das Data Register des Controllers schreiben. Dieser Befehl habe eine Gesamtlänge von insgesamt vier Byte.

  • Nach der erfolgreichen Befehlsausführung liefere der Controller insgesamt sieben Byte zurück, die vom Treiber über das Data Register ausgelesen werden müssen.

Beschreibe den Ablauf der Kommunikation zwischen Treiber und Data Register vor dem Hintergrund, dass das Data Register nur eine Breite von 8 Bit besitzt und aus "several registers in a stack" besteht.


Die Antwort auf diese Aufgabe zeigt, wie genau das Handeln des Treibers auf die Bedürfnisse und Gegebenheiten des Geräte-Controllers zugeschnitten sein muss.

Man kann sich auch vorstellen, dass Controller für andere Geräte, eine völlig unterschiedliche Kommunikation mit dem Treiber erfordern. Dies gilt umso mehr für Controller, die erst sehr viel später als der hier beispielhaft angesprochene NEC PD765 entwickelt wurden.

Die Schnittstelle ist eine andere.


Hinweis

Du verstehst spätestens jetzt, warum es - wie in der folgenden Abbildung angedeutet - für jedes Gerät (bzw. dessen Controller) einen eigenen Treiber geben muss, oder?


Geraeteverwaltung-3.jpg


Gut also, dass es die Gerätetreiber gibt.



Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecommons.org/l/by/3.0/80x15.png