www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik HDD am uC: PIO oder DMA ?


Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie lest ihr die Festplatten mit einem uC von einer Festplatte aus ?
Ganz normal über den Datenport, oder hat es schonmal jemand mit DMA
versucht ?
Bei PIO habe ich nämlich das Problem, dass ich nach jedem Sektor einen
falschen Wert bekomme, da die Festplatte anscheinend eine gewisse Zeit
braucht um neue Daten zu laden. Daher muss ich vor jedem Datenwert Busy
abfragen, was leider alles ziemlich ausbremst.
Mit DMA müsste ich ja diese Probleme nicht haben, oder ?

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Statt Busy zu pollen könntest Du auch einen Interrupt auswerten; die
IDE-Schnittstelle sieht das vor.

DMA wirst Du ohne zusätzliche (aufwendige) Hardware nicht realisieren
können. Auch wird der µC schlichtweg nicht schnell genug sein, als daß
das interessant wäre - mit dem klassischen 16-Bit-PIO-Modus lassen sich
16 MByte/sec übertragen. Welcher µC kann -ernsthaft- eine höhere
Datenrate verarbeiten?

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der M16C könnte das.
Bei 24MHz und DMA wären es theoretisch 12MB/s.
Im Moment läuft er eh nur mit 1/4 der 18MHz, da ansonsten das Timing
für das LCD zu schnell wird.

Wie funktioniert das genau mit dem Interrupt ? Irgendwie werde ich aus
den ganzen Diagrammen in den Specs nicht so recht schlau.
Bzw. wann wird ein Interrupt ausgelöst ?

Autor: Hannes Hering (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

> Bzw. wann wird ein Interrupt ausgelöst?
Soweit ich weiss, wird der Sektor in den Festplattencache geladen und
dann ein Interrupt ausgelöst. Wie hier das Timing ist, weiss ich aber
nicht. Ich würd versuchen, den HDD-IRQ Ausgang mit nem IRQ-Eingang des
Controllers zu verbinden und die Datenabfrage in ner IRQ-Routine
abzuwickeln. Vielleicht gehts ja ...

MFG

Hannes

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Der M16C könnte das.
> Bei 24MHz und DMA wären es theoretisch 12MB/s.

Also ist DMA nicht nötig, da im PIO-Mode bei 16-Bit-Zugriffen (die der
AVR übrigens nicht beherrscht) bereits 16 MByte/sec erreicht werden
können.

Die 12 MByte/sec werden aber auch nur erzielt, wenn die Daten ohne
weitere Verarbeitung weggeworfen werden.
Erscheint mir wenig sinnvoll.

Hannes' Beschreibung des Interrupt-Betriebs ist gar nicht so schlecht.

Autor: Hannes Hering (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hannes' Beschreibung des Interrupt-Betriebs ist gar
> nicht so schlecht.
Danke! verbeug Ist zumindest nach der Theorie so ... praktisch hab
ich's noch net ausprobiert bzw. ausprobieren können. Aber ich werd's
noch tun! ;)

MFG

Hannes

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich übertrage immer 4 Sektoren (=1 Cluster) auf einmal.
Ich sende also den Read Sector Befehl, warte bis ein Interrupt kommt
und übertrage dann 1 Sektor, warte dann wieder auf einen Interrupt und
übertrage dann wieder 1 Sektor usw. ?

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sollte in der Tat so gehen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.