Forum: PC-Programmierung USB 2.0 Festplattengehäuse -> integrierter Festplattencontroller


von Unbekannt (Gast)


Lesenswert?

Hallo zusammen,
wüsste jemand von Euch, wie ich unter Linux ein externes USB 2.0 IDE 
Festplattengehäuse.....besser gesagt den integrierten Controller 
ansprechen kann?

Selbst ansteuern wird wahrscheinlich schwer, aber die verbauten 
Festplatten, ob sie per LBA oder CHS angesprochen werden, haben ja 
Befehle, die in verschiedene Register geschrieben werden und dann 
entweder Daten gelesen/geschrieben werden beim Datenbus.

Eigendlich müsste ich nur wissen, mit was für einer Bibliothek "dachte 
da an libusb 1.0" ich die Befehle und Daten schreiben kann.
Natürlich unter c/c++ programmieren


Cu Unbekannt

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Linux unterstützt von sich aus die USB-Standardgeräteklasse "USB Mass 
Storage Device" - und das ist die Geräteklasse, die von 
USB-zu-IDE-Bridges verwendet wird.

Die Kommunikation mit der Platte selbst bleibt Dir verborgen, die wird 
von der internen Firmware der USB-IDE-Bridge abgewickelt und auf das 
MSD-Protokoll umgesetzt.

Was hast Du nun genau vor, was möchstes Du erreichen?

von Unbekannt (Gast)


Lesenswert?

Ganz vergessen zu sagen.....ich will die Pins des Controllers für andere 
Zwecke nutzen

von Unbekannt (Gast)


Lesenswert?

Was möchte ich erreichen?
Es gibt USB to seriell Modelle....diese sind aber total langsam.....wenn 
ich den Controller im USB Festplattengehäuse ansprechen könnte, wäre 
dies doch die einfachste, kostengünstigste Lösung mit viel mehr 
Geschwindigkeit..

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Unbekannt schrieb:
> Ganz vergessen zu sagen.....ich will die Pins des Controllers für andere
> Zwecke nutzen

Vergiss es. No way. Dazu müsstest Du die Firmware der USB-IDE-Bridge 
ändern.

von Unbekannt (Gast)


Lesenswert?

Wieso verändern???

Du hattest selbst folgendes geschrieben:
Linux unterstützt von sich aus die USB-Standardgeräteklasse "USB Mass
Storage Device" - und das ist die Geräteklasse, die von
USB-zu-IDE-Bridges verwendet wird.

ist schon klar, das ich jede einzelne Pins nur durch Änderung der 
Firmware im Controller ansteuern kann....

Aber es müsste doch möglich sein, die Standartbefehle, die jeder von den 
Controllern beherbergt zu benutzen. Diese werden ja dann an den Pins des 
Controllers ausgegeben und somit wird ja auch die Festplatte 
angesteuert.

Ich meine damit die Befehle die zur Ansteuerung der IDE Festplatte 
genutzt werden. Diese werden ja in die Register geschrieben....und 
soviel ich weis, kann der Datenbus dann lesen oder schreiben.

Das müsste 100 % möglich sein, nur wie?

Und wenn ja dann die Befehle an den Pins des Controllers anliegen, kann 
ich ja einen Mikrocontroller hinten dranschalten, der wiederum andere 
Zwecke erfüllt.

von Christian R. (supachris)


Lesenswert?

Nee, das geht so nicht. Die Befehle die über USB Mass Storage gehen, 
sind schon ziemlich abstrahiert und auf Datenträger zugeschnitten. Du 
könntest höchstens ein ATA-Slave nachbauen (mit CPLD oder FPGA), den an 
den Controller klemmen und dann darüber kommunizieren. Unter Windows 
geht das auf jeden Fall, CreateFile(...) kann auch BlockDevices auf 
niedriger Ebene öffnen.

Aber wieso so kompliziert? Es gibt doch USB 2.0 HighSpeed Controller, 
wie den Cypress FX2 und den FTDI FT2232H, die machen das viel einfacher 
mit passendem API und erlauben 40MB/s Übertragungsrate....

von Unbekannt (Gast)


Lesenswert?

Ich glaube, das ich mal auf die schnelle ein paar Grafiken zeichnen 
werde, sonst wird es nix. Es ist auch schwer zu erklären. In max. 2 
Stunden sind die Grafiken dann auf meinem Server

Warum so kompliziert?
Ich denke mal, dass dies die beste Lösung wäre, da mir hierdurch noch 
ein schönes Gehäuse für die Elektronik zur Verfügung steht.
Und so teuer sind diese USB 2.0 IDE Gehäuse nicht.

@Christian R. könntest du mir ein gutes Tutorial nennen, bei dem es 
erklärt wird, was du mir vorgeschlagen hast?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Unbekannt schrieb:
> Aber es müsste doch möglich sein, die Standartbefehle, die jeder von den
> Controllern beherbergt zu benutzen. Diese werden ja dann an den Pins des
> Controllers ausgegeben und somit wird ja auch die Festplatte
> angesteuert.

Ist es nicht. Das Protokoll sieht Operationen auf Sektorebene vor, d.h. 
es werden immer größere Informationsblöcke übertragen. Daß da 
irgendwelche Register der Festplatte angesteuert werden, ist zwar 
korrekt, darum aber kümmert sich der in der USB-IDE-Bridge enthaltene 
Controller. Auf USB-Protokoll-Ebene werden ganze Datenblöcke übertragen, 
und nicht sehr viel mehr anderes.

Ich habe aber den Verdacht, daß Du Dich mit Deinem Vorhaben verrennst, 
weil Du von einer falschen Prämisse ausgehst:

Unbekannt schrieb:
> Es gibt USB to seriell Modelle....diese sind aber total langsam.

Genau das sind sie nicht, wenn man sie für den Zweck nutzt, für den sie 
vorgesehen sind. Serielle Datenübertragung, kein "bitbanging". Wenn das 
serielle Protokoll mit ausreichend großen Datenblöcken operiert, hat so 
ein USB-Seriell-Adapter keine Probleme damit, effektive 
Datenübertragungsraten im (niedrigen einstelligen) MBit-Bereich zu 
erreichen.

Wenn Du an irgendwelchen Pins wackeln willst, weil Du was ganz anderes 
anstellen möchtest als serielle Datenübertragung, dann ist die Nutzung 
einer USB-Seriell-Bridge ein Designfehler, der aber nicht der 
USB-Seriell-Bridge vorzuwerfen ist. Möglicherweise sind hier die 
softwareseitig identisch anzusteuernden parallelen Varianten (FT245) 
schon genügend, vielleicht lässt sich Dein Pinwackeln aber auch mit der 
MPSSE des FT2232 erschlagen.

Also: Was willst Du eigentlich erreichen? Was möchtest Du ansteuern?

von Christian R. (supachris)


Lesenswert?

Unbekannt schrieb:
> @Christian R. könntest du mir ein gutes Tutorial nennen, bei dem es
> erklärt wird, was du mir vorgeschlagen hast?

Tutorial kenn ich keins. Einfach hier im Forum lesen, die beiden Chips 
tauchen regelmäßig auf. Beim FTDI hast du den Vorteil, dass du keine 
Firmware schreiben musst, der FX2 will eine Firmware für den 
integrierten 8051, ist aber auch recht simpel,,gibts von Cypress jede 
Menge Beispiele.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.