USB host to host

Hallo Leute!

Gerade versuche ich in dem Wust von Informationen die mir Google zum Thema USB liefert das ben=F6tigte zu finden - leider bislang erfolglos, so da=DF ich denke evtl. weiss einer von euch was:

Gesucht ist ein USB Mass storage device (z.B. Flash), welches sich von zwei Hosts gleichzeitig schreiben und lesen l=E4sst. Hintergrund: Ein PC soll Daten =FCber USB auf dem Speicher ablegen, welches ein ebenfalls angeschlossenes Ger=E4t (embedded mit USB support f=FCr (ausschliesslich) Mass storage devices) dann lesen soll. Also eine Kommunikation Host-

Host. Der PC w=FCrde nur schreiben, der embedded controller nur lesen.

Es gibt zahlreiche host-to-host bridge Kabel, welche dies zu tun versprechen, leider kommen die aber mit propriet=E4ren Treibern und einer eigenen Applikation f=FCr den Datentransfer daher. Auf dem embedded Controller kann man jetzt dummerweise keine Windowstreiber installieren...

N=E4chster Gedanke war eine USB/Ethernet Festplatte zu verwenden. PC schreibt =FCber Ethernet, Controller liest =FCber USB. Die Dinger scheinen aber den Ethernetport zu deaktivieren, sobald man =FCber USB einen Host anschlie=DFt. Mist!

Oder gibt es eine PC-Software (m=F6gl. Windows, ggf. auch Linux) welches =FCber USB ein Mass Storage device simuliert, welches dann von einem zweiten Host als solches erkannt wird? In diesem Fall w=FCrde ja ein einfaches Kabel gen=FCgen...

Kennt jemand ein Produkt, welches sich f=FCr den beschriebenen Anwendungsfall eignen w=FCrde? Ein gewisses Ma=DF an Eigenentwicklung (Hard- und Software) w=E4re durchaus denkbar, im gegebenen Zeitrahmen allerdings etwas kritisch.

F=FCr jeden Hinweis dankbar, Andi

Reply to
andreasbeermann
Loading thread data ...

Das sind ja auch (bestenfalls) nur 2 USB-Ethernet-Wandler mit "eingebautem" Cross-Kabel, üblicherweise aber sogar "vendor specific" devices.

Verständlich, da man die Dateizugriffe ja koordiniert bekommen muß, per USB wird auf das gesamte Blockdevice zugegriffen, per Ethernet auf Dateiebene.

Dazu bedürfte es spezieller Hardware, ein Host ist ein Host und ein Device ist ein Device. Es gibt Developmentboards für USB-Device-Bausteine als PC-Einsteckkarten, siehe z.B.http://www.nxp.com/pip/ISP1582_6.html, aber das ganze wird dann wohl eine proprietäre Nischenlösung.

Du weißt schon, daß bei USB (anders als z.B. bei Firewire) Host und Device nicht gleichberechtigt sind?

In dieser Hinsicht sehe ich schwarz. Es gibt zwar sogenannte "USB Gadget"-Treiber im Linuxkernel, z.B. für den NetChip 2280 / 2282, aber eine PCI-Karte mit solch einem Chip aufzutreiben, dürfte aussichtslos ein.

Gruß Henning

Reply to
Henning Paul

Das wird schwierig. Sowas ist schon in Konfigurationen schwierig in denen der simulatane Zugriff auf das Speicherger=C3=A4t an sich kein Problem darstellt: SCSI. Man kann da durchaus mehrere Host-Controller an einem Bus haben. Allerdings m=C3=BCssen sich dann diese Controller beim Zugriff auf die Platten synchronsisieren und vor allem das verwendete Dateisystem muss f=C3=BCr sowas ausgelegt sein.

Ich w=C3=BCrde es ja eher so machen, dass man dem Embedded-Ger=C3=A4t selbst die USB-Funktionalit=C3=A4t, inkl. Mass-Storage verleiht. FAT ist einfach genug, dass man das auch in Echtzeit soz. als ein virtuelles Dateisystem implementieren kann. Oder man zwackt einen Teil des Speichers tats=C3=A4chlich f=C3=BCr Storage ab. Anstatt = FAT ginge auch irgend ein anderes einfaches FS, aber FAT kann ja jedes OS.

Wolfgang Draxinger

--=20 E-Mail address works, Jabber: snipped-for-privacy@jabber.org, ICQ: 134682867

Reply to
Wolfgang Draxinger

Hallo

[...]

Das einzige, was mir dazu auf die schnelle einfaellt waere ein Linux Mobile Geraet (z.B. ) zu verwenden. (Kosten dann schlussendlich normalerweise

Reply to
loitsch

Tun nicht alle... Bei denen die es nicht tun gibt es Datenmuell und moegliche Hardwareschaeden. Was haelt dich davon ab so eine Festplatte von beiden Seiten ueber Ethernet anzusprechen?

Gerrit

Reply to
Gerrit Heitsch

nen

Hmmm... dachte irgendwie, das w=E4re mit herk=F6mmlicher Harw=E4re zu l=F6s= en. Beide Seiten Ethernet sind leider nicht m=F6glich, da das embedded Ger=E4t eben nur genau eines kann: =DCber USB ein Mass-storage device lesen (nicht mal schreiben). Ein Ethernet NIC ist nicht vorhanden. Die Software auf dem device ist zudem "m=F6glichst" unver=E4ndert zu lassen - zumindest sollte im USB-Stack nicht arg rumgepfuscht werden. Synchronisation zwischen PC und device w=E4ren im gegebenen Fall kein Problem: Der PC w=FCrde Daten schreiben, dann ein Signal (=FCber eine UART- Verbindung, die sich allerdings aus Geschwindigkeitsgr=FCnden und dem darauf implementierten Protokoll nicht f=FCr die eigentliche Daten=FCbertragung eignet) an das device senden, da=DF die Daten jetzt zu lesen sind. M=F6glicherweise w=E4re es am einfachsten den USB-Port eines handels=FCblichen USB-Sticks zwischen PC und device hin und her zu schalten. Nachteil w=E4re dann aber wieder die Geschwindigkeit, da der Stick nach jeder Umschaltung neu gemountet werden mu=DF...

Andi

Reply to
andreasbeermann

OK, Leute,

hab nochmal intensiver gegoogelt und mir vor allem die Manuals der diversen USB link-Kabel angeschaut. Es scheint mit, da=DF zumindest einige der handels=FCblichen USB-link Kabel m=F6glicherweise doch die gew=FCnschte Funktionalit=E4t haben: In einer Bedienungsanleitung zu einem solchen Produkt (siehe

formatting link
ul13.doc) fand ich den Hinweis, da=DF das Kabel auf beiden Seiten (in dem Fall 2 PCs) als mass-storage device erscheint. In diesem Mass-storage device liegt dann eine EXE, welche eine Anwendung zum Datenaustausch beinhaltet.

Da alles ohne Treiberinstallation funktionieren soll, ist meine Vermutung, da=DF beide Seiten einen Ihre Daten jeweils auf dieses Mass- storage device schreiben. Die andere Seite pollt regelm=E4=DFig das Dateisystem und nimmt die Datei entgegen. Gr=F6=DFere Dateien m=FCssen so freilich in kleinere St=FCcke aufgeteilt werden und h=E4ppchenweise =FCbertragen werden. Daher die =FCbergeordnete Applikation, welche genau das erledigt.

Wenn meine Vermutung zutrifft, w=E4re das f=FCr mich wohl genau das richtige - bleibt nur zu kl=E4ren, wie gro=DF der Pufferspeicher bemessen ist - ich sollte schon etwa 5-10 kByte zur Verf=FCgung haben, ansonsten mu=DF ich meine Dateien ebenfalls in kleinere Teile hacken, was zus=E4tzlichen SW-aufwand bedeuten w=FCrde.

Hat zuf=E4lligerweise jemand solch ein PC-link kabel rumliegen und kann testen, ob man da von einer Seite eine kleine Datei reinschreiben kann, welche sich von einem anderen PC lesen l=E4=DFt? Und zudem wie gro=DF diese Datei sein darf...

Ich werd wohl einfach mal eines kaufen!

Gru=DF, Andi

Reply to
andreasbeermann

Habe hier ein "USB Host Link", keine weitere Bezeichnung. idVendor=0402, idProduct=5632 "USB 2.0 Data Link"

Das Ding verhält sich leider nicht wie ein Laufwerk. Linux legt paar usbdev1.11_epxx an, WinXP findet neues Device, hat aber keine eigenen Treiber. Braucht also die Treiber-CD.

Am besten ein anders ;-)

Gru3 Uli

Reply to
Uli Wannek

snipped-for-privacy@lycos.de schrieb:

formatting link

Das klingt sehr interessant und sollte sich für andere Anwendungen auch mißbrauchen lassen. Berichte mal!

- Henry

--
www.ehydra.dyndns.info
Reply to
Henry Kiefer

Hallo Andi,

formatting link

Das kannst Du wieder vergessen, dieses mass-storage-device ist für beide Seiten Read-Only und dient nur dem starten der Daten-Austausch-Applikation. Der eigentliche Datenaustausch findet über ein weiteres spezial USB-Devie oder weitere Endpunkte im mass-storage-device statt.

Die Lösung von Christian Loitsch erscheint mir die einzigst mögliche.

Grüße Erik

Reply to
Erik

snipped-for-privacy@lycos.de schrieb:

nach etwas nachdenken klingt das eigentlich gar nicht so übel

FAT16 einzumounten ist nicht so aufwendig wenn Du auf Unterverzeichnisse verzichtest und den Stick als Superfloppy (also ohne Partitionierung) formatierst. Mann könnte noch drauf achten das nur eine FAT (und nicht zwei) vorhanden ist damit das beschreiben etwas schneller geht. Dann bräuchte das Einmounten nur etwa 5 Sektoren zu lesen (1 Boot-Sektor + 1 bis 2 FAT Sektoren und das Stammverzeichnis das man auch künstlich klein halten kann). Dann solltest Du Dich aber auf wenige Dateien im 8.3-Namens-Schema beschränken. (Wenn Du das derartige präparieren eines FAT16-Systems nicht selber kannst schicke ich Dir gerne ein Image-File das Du unter Linux mit 'dd' oder einem vergleichbaren Windows-Tool aufspielen kannst)

Zum Umschalten brauchst Du IMHO 5 FETs : 2 für D+ und D- zu Deinem Target, 2 für D+ und D- zum Host-PC und 1 für die 5V-Versorgung des USB-Stick. Zu den Auswahlkriterien können Dir andere bestimmt mehr sagen. Beim Umschalten solltest Du auch immer die Versorgung des Stick für einige Millisekunden mit unterbrechden damit er beim nächsten "einstecken" wieder im Reset-Zustand ist und eine neue Verbindung aushandelt.

Falls auf dem Host-PC Windows läuft könnte die Treiber-Suche und der ganze andere Windows-Kram am meisten Zeit fressen aber die Device-Enumeration sollte doch mit 2.0-High-Speed in kurzer Zeit machbar sein. Bei Deinem Target kannst Du die Enumeration sicher etwas abkürzen wenn Du Zugriff auf den Source-Code des USB-Stack hast.

Kann Dein Host-PC den Stick softwaregesteuert entmounten ohne eine Benutzer-Aktion?

Grüße Erik

Reply to
Erik

[...]

Welche Datenmenge? Welche Zugriffszeiten? Wieviel Geräte/ Einzelstück? Welcher Gerätepreis?

Saludos Wolfgang

--
Meine 7 Sinne:
Unsinn, Schwachsinn, Blödsinn, Wahnsinn, Stumpfsinn, Irrsinn, Lötzinn.
 Click to see the full signature
Reply to
Wolfgang Allinger

wenige Kilobyte ( Welche Zugriffszeiten? vergleichweise egal da wenig Daten transferiert werden

momentan mehr ein Hobby-Projekt ("Vorrausentwicklung"): M=F6glicherweise zun=E4chst 10 Exemplare um das Funktionieren zu demonstrieren.

Im ersten Ansatz auch egal...

Reply to
andreasbeermann

klingt eigentlich machbar.

er-Aktion? Naja, der Wunsch ist hier Windows zu verwenden. Aber das d=FCrfte man auch irgendwie hinbekommen denke ich.

Andi

Reply to
andreasbeermann

snipped-for-privacy@lycos.de schrieb:

freud mich, wie oft soll den etwa hin und her "gestöpselt" werden?

Die "

Reply to
Erik

ausend tolle und unn=F6tige Sachen mit dem Stick bzw. dem Dateisystem darau= f macht.

ich denke auch Windows wir am ehesten rumzicken! Das embedded device soll sich ohnehin nach Bedarf anst=F6pseln lassen, neue Daten bekommen und damit dann wieder spazieren gehen. Da mu=DF also ohnehin gemountet werden. W=E4rend das device abgest=F6pselt ist, kann der PC in aller Ruhe das device wieder mounten und auf den n=E4chsten Durchgang warten. Gut w=E4re eben, wenn der Vorgang vom Anst=F6pseln bis zu den geschriebenen Daten im Bereich weniger Sekunden bliebe, sonst w=E4re es f=FCr den geplanten Anwendungszweck eher hinderlich.

Bleibt nur die Frage wie man Windows dazu bringt das halbwegs zu verdauen. Sieht mir momentan doch mehr nach Linux aus...

Die Idee gef=E4llt mir immer besser!

Andi

Reply to
andreasbeermann

snipped-for-privacy@lycos.de schrieb:

Nur so zum überlegen :

Da gibts für 250 Dollar 10 Chips und ein Handbuch das bestimmt gut erklärt wie der Chip arbeitet. Da ist ein 8051 drin (falls er frei programmierbar ist) mit dem Du für Dein Target ein Mass-Storage-Device simulieren könntest (falls genug RAM) und zur Host-PC-Seite fällt Dir bestimmt ein geeignetes Protokoll ein. Oder Du machst was ganz anderes draus.

Kannst dem Hersteller ja mal Dein Vorhaben erklären und fragen ob der Chip dafür geeignet ist. Als Stückzahl solltest Du etwa 10'000 bis 50'000 pro Jahr andenken, das ist genug damit es interessant ist (und man Dir eventuell einen richtigen Zugang zum 8051 verschafft falls nicht schon vorhanden) aber nicht so viel das man das komplett selber (eventuell mit einem extra Spezial-ASIC) übernehmen will. ;-)

Grüße Erik

Reply to
Erik

snipped-for-privacy@lycos.de schrieb:

Also ich wiederhole mal so wie ich das verstanden hab:

  1. Speicher wird an PC angedockt (das kann und darf etwas dauern)
  2. Target wird an Speicher (aber ohne diesen zu übernehmen) und PC (per RS232 o.ä.) angekoppelt
  3. Target meldet sich bei PC (über RS232 o.ä.), geht bestimmt recht schnell
  4. PC überspielt die richtigen Daten auf den Speicher (dauert bei 50kByte nicht lange)
  5. Speicher wird vom PC entmountet
  6. Speicher wird von PC zum Target gewechselt
  7. Target holt die Daten vom Speicher (geht bestimmt in weniger als 1 Sekunde)
  8. Target meldet sich beim PC ab und entmountet den Speicher
  9. Target wird abgezogen und der Speicher wird von Windows wieder in Betrieb genommen (darf bestimmt länger dauern da bis zum nächten Target-Besuch wieder etwas Zeit vergeht)

Stimmt das so in etwa?

Ich denke die Punkte 2 bis 8 sollten in wenigen Sekunden machbar sein, es sind keine aufwendigen (Windows-lastigen) Aktionen drin.

Unter Linux dürfte auch das Syncronisieren (tatsächliches Schreiben der Daten auf den Stick) einfacher sein, ein umfangreiches unmount könnte dann vielleicht entfallen.

sehr gut ;-)

Grüße Erik

Reply to
Erik

Dann würde ich entweder ein dualported RAM an 2 USB controllern nehmen, oder noch besser gleich einen kompletten uC mit 'nem passenden RAM. Spart jede Menge externer HW...

Guck mal bei silabs nach, die sollten etliches bis 64kB RAM haben. Mit USB gibbet auch welche für Deine uC Seite. Und für die PC Seite gibts auch sicher was passendes.

Saludos Wolfgang

--
Meine 7 Sinne:
Unsinn, Schwachsinn, Blödsinn, Wahnsinn, Stumpfsinn, Irrsinn, Lötzinn.
 Click to see the full signature
Reply to
Wolfgang Allinger

=E4rt wie der Chip arbeitet.

Dein Target ein Mass-Storage-Device simulieren k=F6nntest (falls genug RAM)= und zur Host-PC-Seite f=E4llt Dir bestimmt ein geeignetes Protokoll ein. O= der Du machst was ganz anderes draus.

hip daf=FCr geeignet ist. Als St=FCckzahl solltest Du etwa 10'000 bis 50'00=

0 pro Jahr andenken, das ist genug damit es interessant ist (und man Dir ev= entuell einen richtigen Zugang zum 8051 verschafft falls nicht schon vorhan= den) aber nicht so viel das man das komplett selber (eventuell mit einem ex= tra Spezial-ASIC) =FCbernehmen will. =A0;-)

Spannend! Damit lie=DFe sich m=F6glicherweise doch die "mass storage device mit 2x USB"-L=F6sung realisieren. Statt Flash ein bisschen RAM dazu gepackt, ein paar Zeilen f=FCr den 8051 und fertig ist die Laube. Wenns auch f=FCr meinen Fall m=F6glicherweise nicht mehr im zeitlichen Rahmen liegt, w=E4re das ja was f=FCr den Rest der Welt... Bookmark auf deinen link f=FCr den follow-up wurde gesetzt :-)

Reply to
andreasbeermann

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.