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
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?
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..
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.
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.
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....
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?
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?
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.