Hallo, ich habe eine Frage zur Kommunikation über USB. Bei dem Aufbau kommuniziert ein Device mit einem Host über USB. Mein Ziel ist es jetzt in gewisser Weise das Kabel "durchzuschneiden", die Signale an den Enden zu erfassen, um sie (anders codiert) über einen anderen Bus zu übertragen. Ich will also eine unsichtbare Komponente in die Übertragung einfügen. Jetzt stehe ich vor dem Problem die Signale zu "lesen" und zu "schreiben". Wie kann ich dies machen ohne die Pakete zu verändern? Es geht also nicht darum einen Treiber für die Geräte zu schreiben und mit ihnen zu kommunizieren, das auslesen und schreiben muss völlig losgelöst von den Geräten sein und darf keinen Einfluss auf die gesendeten Daten haben. Ist so etwas mit einem USB-Development-Board / USB-Controllern möglich, oder lassen sich diese nur ansprechen, indem man eine Verbindung aufbaut und somit in das System eingreift? Gruß Philipp
Philipp schrieb: > .... die Signale an den Enden zu erfassen, um sie (anders codiert) > über einen anderen Bus zu übertragen. Was genau schwebt Dir da vor? Aufgrund der bidirektionalen Natur des USB ist das elektrisch ziemlich kompliziert, was in den diversen Threads über eine einfache galvanische Trennung schon ausführlich diskutiert wurde.
Nimm einen MC mit USB-OTG ( On the Go ) der hat nen Host und nen Client Port. Dann mußt die Daten von Host zu Client kopieren und von Client zu Host, gleichzeitig die Daten interpretieren. Das Interpretieren der Daten ist dann wohl das schwerste. Ist so wie nen USB Treiber zu programmieren. Du mußt wissen auf welchem Endpoints welches Protokoll gesprochen wird. Also ohne Datenblätter mußt du Reverse Engeneering betreiben. Wenn du Glück hast Entspricht das Gerät einem Geräte Standart für dem die Endpoints und Interfaces und Befehle und Parameter usw. Festgelegt sind. Nur Gerätespezifische Zusatzfeatures mußt du dann noch Sniffen. Gibt übrigens auch USB-Sniffer zu kaufen, die sind sowas ähnliches.
Schon mal danke für die Antworten. @Rufus Τ. Firefly: Also am besten wäre es natürlich, wenn man die Pakete einfach aus einem Register lesen und dahin schreiben könnte. Also wirklich nur auslesen der Signale, der Controller darf dabei keine wirkliche Intelligenz besitzen, er darf also nicht von sich aus die Signal verändern (sync, crc, ack, ...) @ Uwe: Dann müsste ich ja Treiber für die Geräte schreiben, die sich genau so verhalten wie die angeschlossene Hardware. Die Idee ist es aber völlig losgelöst von der Hardware arbeiten zu können. Es muss also egal sein welche Geräte ich jetzt per USB verbinden will. Gibt es USB-Controller, die nichts an dem Signal verändern? Gruß Philipp
Und wozu ist das ganze? Bedenke, daß es bei USB auf das Timing ankommt, daß also Deine Umsetzung auf irgendein anderes Protokoll nur sehr wenig Zeit zur Verfügung stehen hat.
Du wirst um nen FPGA nich rumkommen (ausser vlt. du beschränkst dich auf usb-lowspeed, was aber nich wirklich brauchbar is(1,5 Mb/s)....
Mal bei Icron geschaut? Eventuell haben die was passendes. Die machen sowas für USB über CAT5 oder Lichtleiter. Ist aber ein großer Aufwand. Das steckt ein FPGA und ein USB-Phy in der Kiste.
Philipp schrieb: > Wie kann ich dies machen ohne die Pakete zu verändern? Kauf dir einen fertigen USB-Verlängerer. Aus Anwendersicht ist der einfach nur ein langes Kabel. Aus PC-Sicht ist es ein USB-Hub mit nur einem Downstream-Port. Wenn du es selber bauen willst, geh ähnlich vor: Durch das Vortäuschen eines HUBs kannst du die ganzen Timing-Einschränkungen umgehen. Vielleicht findest du ja einen HUB-Chip mit Support für einen externen PHY, damit wird das ganze einfach.
Also das ganze sollte dazu dienen TT-Ethernet (TrimeTriggered) zu testen und mit dem "normalen" Ethernet zu vergleichen. Doch anhand der angesprochenen Problematik wird es wohl so nicht umgesetzt werden... Ich danke euch trotzdem für eure Antworten. (Da sie mich letztendlich nur bestätigt haben) Gruß Philipp
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.