[usb] mass storage

Jun 10, 2012 33 Replies

Debugger może analizować pakiety z poziomu systemu, a za fragmentację może być odpowiedzialny kontroler hosta na płycie. Trzeba by "sprzętowym" analizatorem oglądać. Wszystkie programowe które sprawdzałem mają jakieś mniej lub bardziej poważne wady. Np. nie "sklejają" pakietów, co uniemożliwia ich analizę (USBlyzer), albo obcinają dane (usbfs(?) na Linuksie) itp.

chyba mnie Panowie nie rozumiecie, napiszê jeszcze raz o co mi chodzi... chodzi o pobranie pierwszy raz deskryptora urz±dzenia podczas enumeracji, moja przyk³adowa myszka zwraca w max_packet_size = 8, ale co siê dzieje podczas pierwszego odczytu deskryptora, gdy size jest nieznany, konkretnie jakie pakiety s± wysy³ane przez urz±dzenie?

Mister i shg mo¿ecie odezwaæ siê do mnie na maila? chcia³bym Wam zadaæ pytanie na temat zwi±zany z dokumentacj± do USB... tylko prywatne.

Dla myszki sekwencja wygl±da Np. tak: GetDescriptor(device) - tu nastêpuje pobranie deskryptora z adresu 0 (device nie jest skonfigurowane) Host wysy³a SETUP IN Device odpowiada 8 bajtami IN Device odpowiada 8 bajtami IN Device odpowiada 2 bajtami OUT jako info o zakoñczeniu SETUP Teraz Host wie jaki ma max packet size wiêc robi reset Device. Po resecie Który trwa kilka ms host wysy³a: SetAddres(1) - Teraz nastêpuje zaadresowanie Device wolnym adresem np 1. Od tej chwili wszystkie requesty dotycz± naszego device który tylko odpowiada na ten adres nadany w³a¶nie przez Hosta GetDescriptor(Device) Host wysy³a SETUP IN Device odpowiada 8 bajtami IN Device odpowiada 8 bajtami IN Device odpowiada 2 bajtami OUT jako info o zakonczeniu SETUP GetDescriptor(Configuration) - jest pobierana ma³a konfiguracja 9B GetDescriptor(Configuration) - jest pobierana du¿a konfiguracja 34B

Nastêpnie s± pobierane stringi, raport, a na koniec jest ustawiana konfiguracja i od tej chwili urz±dzenie dzia³a zgodnie z konfiguracj±.

Tak to wygl±da w trybie LS - oczywi¶cie miêdzy pakietami id± KeepAlive ale to w tym wypadku jest nie istotne.

MiSter

dz. ale dlaczego napisa³e¶ NP.?

niby dlaczego tak? a mo¿e to jest tak, ¿e piersze zapytanie ZAWSZE odbywa siê w paczkach po 8 bajtów? nie jest to nigdzie opisane, bo bym nie pyta³...

no w³a¶nie, to te¿ zagadka, raz wysy³a sam config, pó¼niej wszystkie deskryptory naraz, a zapytanie ma taki sam format...

dziêki, jakby¶ móg³ to odezwij siê do mnie na snipped-for-privacy@go2.pl ¿adnego spamu nie planujê ;o).

Bo dla innych mo¿e siê ró¿niæ.

Ju¿ pisa³em wcze¶niej. Spec usb mówi, ¿e EP0 musi mieæ max packet size conajmniej 8B, wiêc oczywiste jest, ¿e pierwsze zagajenie _musi_ siê odbywaæ po 8 bajtów.

W zapytaniu jest pole które mówi ile chce danych

Adres znajdziesz w sieci.

MiSter

to w koñcu jak, jaki mo¿e byæ inny przypadek nie pasuj±cy do tego co napisane wy¿ej?

Jak pisa³em wcze¶niej: to by³ rozpatrywany przypadek myszki w trybie Low Speed. Równie dobrze mo¿na spotkaæ myszki chodz±ce w Ful Speedzie a nawet w HS bo kto¶ mia³ taki kaprys.

MiSter

we¼ mnie nakieruj gdzie to wszystko jest opisane?

U¿ytkownik "identyfikator: 20040501" snipped-for-privacy@go2.pl napisa³ w wiadomo¶ci news:jrhs07$f43$ snipped-for-privacy@node1.news.atman.pl...

Specyfikacja USB

formatting link
MiSter

przegl±dam ten dokument w wersji 2.0, nigdzie nie ma rozdzia³u "enumeracj", jest jaki¶ skompy opis na pó³ strony A4...

zna Kto¶ jakie¶ strony z przyk³adami oprogramowywaina USB pod Wind± i Linuxem?

O descryptorach, konfiguracjach, interfejsach itp. traktuje rozdzia³ 9.

MiSter

a jak to jest z tymi trnasferami, niby wszystkie aktywuje host, ale na przyk³ad dla przerwaniowego, host po prostu co jaki¶ czas odpytuje myszê i odczytuje z niej dane? a w innych typach transferów, host odpytuje gdy pojawi siê ¿±danie z user space?

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required