Hallo, Ich habe ein embedded Device dass, wenn per USB Kabel an ein PC angschlossen wird, sich als USB mass storage device ausgibt. Das Problem ist, dass wenn ich das Gerät über einen Hub an den PC anschliesse, manchmal die Datenübertragung fehl schlägt und das Dateisystem in meinem Gerät beschädigt wird. Ich schätze, dass das an der zu geringen Stromstärke liegt, die dazu führt. Meine Frage ist nun, ob der Host oder das Device die zu niedrige Stromstärke erkennen sollte. Und wie der Host davon erfährt. Ich habe leider keine Ahnung von den USB Protokoll Internas und weiss nicht wie Host und Device das untereinander aushandeln. Tschüss, Matthias
Matthias Brugger schrieb: > Meine Frage ist nun, ob der Host oder das Device die zu niedrige > Stromstärke erkennen sollte. Und wie der Host davon erfährt. Dem Host wird der Strombedarf vom Device mitgeteilt. USB-Festplatten ohne eigene Stromversorgung aber halten sich nicht daran und nehmen erheblich höhere Ströme auf als überhaupt von der USB-Spezifikation vorgesehen. Nimm einen Hub mit eigenem Netzteil, sofern Du das nicht sowieso schon tust.
Rufus Τ. Firefly schrieb: > Matthias Brugger schrieb: >> Meine Frage ist nun, ob der Host oder das Device die zu niedrige >> Stromstärke erkennen sollte. Und wie der Host davon erfährt. > > Dem Host wird der Strombedarf vom Device mitgeteilt. Und weiter: Wenn der Host dann der Meinung ist, dass nicht genug Strom für das Device vorhanden ist, dann erteilt er dem Device garnicht erst die Erlaubnis überhaupt (nennenswert) Strom zu ziehen. Auch vorgesehen wäre: Das Device bietet Verschiedene "Configurations" mit unterschiedlichem Strombedarf an, der Host wählt das aus, was noch funktionieren würde.
Vielen Dank für die Antworten. Schlussendlich habe ich herausgefunden dass die Firmware dem Host garnicht mitgeteilt hat, wie viel Strom sie braucht. Deswegen hat der Host schön brav eine Kommunikation aufgebaut, obwohl nicht genug Strom vorhanden war. Ich habe die Firmware geändert und jetzt scheint es wie gewünscht zu funktionieren. MfG, Matthias
>Schlussendlich habe ich herausgefunden dass die Firmware dem Host >garnicht mitgeteilt hat, wie viel Strom sie braucht. das halte ich jetzt für unwahrscheinlich, da der Strombedarf im Devicedeskriptor steht. Thomas
Thomas schrieb: > das halte ich jetzt für unwahrscheinlich, da der Strombedarf im > Devicedeskriptor steht. Vielleicht hatte ich mich nicht richtig ausgedrückt. In dem Treiber, der die SCSI Befehle interpretiert und somit das Device emuliert gab es keinen Aufruf der vbus_draw Methode des OTG Gerätetreibers. Das wurde von darunterliegenden Schichten übernommen die anscheinend als Strombedarf 100 mA in den Devicedescriptor geschrieben haben. Zum besseren Verständnis, es handelt sich um einen USB-Gadget Gerätetreiber des Freescale Forks vom Linux Kernel.
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.