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?
Ganz vergessen zu sagen.....ich will die Pins des Controllers für andere Zwecke nutzen
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.