[usb] mass storage

Jun 10, 2012 33 Replies

mo¿e mnie Kto¶ o¶wieciæ, czy USB mass storage maj± jak±¶ specyfikacjê?


formatting link
wykasowa³em post, ale siê jeszcze za³apa³ mo¿e Kto¶ wie jak wyd³ubaæ z systemu raport descryptor dla HID?

mo¿e mi Kto¶ wyja¶niæ t± tabelkê:

formatting link
ma 18 bajtów, a maksymalna d³ugo¶æ EP0 to 8 bajtów... ki grzyb?

maksymalna długość pakietu dla EP0

Czego nie rozumiesz? ;)

zna siê Kto¶ na tym?

cobym nie pomiesza³, emumeracja, pierwsze zapytatnie o jaki¶ tam deskryprtor... control transfererm z polem danych 8 bajtów zawieraj±cym informacjê który deskryprtor hosta interesuje... w zwróconym pakiecie opisu deskryptora jest pole d³ugo¶æ bufora punktu zerowego... czy host spodziewa sie tych 18 bajtów opisu deskryptora? jaka¶ g³upota, jak mo¿e pytaæ o d³ugo¶æ bufora, skoro odczytuje z niego dane (opis deskryptora)...

przy okazji (Kto¶ ju¿ siê tu pyta³, ale polecono mu Wiresharka, chyba to inna dzia³ka) znacie jakie¶ dobre debugery transmisji USB?

Ale...bełkot...przeczytaj...usb...in...nutshell...

Nie, po pierwszych 8 wywróży sobie resztę.

Raczej jakiś głupek się za to zabiera.

Nie pyta o długość bufora. Pyta o deskryptor urządzenia.

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

Host zawsze pyta dwukrotnie: najpiew o tzw. ma³± konfiguracjê 8 bajtów - bo tyle zawsze EP0 musi umieæ wspieraæ. Tam ma zapisane na ostatnim bajcie jaki ma rzeczywisty maz_packet_size. Po tym pyta ju¿ o "du¿± konfiguracjê" z w³a¶ciwym pakiet_size. Je¿eli by³o max_packet_size=8 to pyta trzy razy:

8+8+2=18B.

Proste?

MiSter

dziêki za info, ale z tego co widzê w debuggerze i na tej ciekawej stronie:

formatting link
to device descriptor przesy³any jest w jednym pakiecie... czyli decyduje informacja w setup pakiecie - 6 wLength 2 Count Number of bytes to transfer if there is a data stage ? jak sobie host zarzyczy 8 bajtów to device descriptor przesy³any jest

8+8+2?

nie wiem, wszystko mi siê ju¿ pomiesza³o, odezwê siê pó¼niej...

dziêki za info, ale z tego co widzê w debuggerze i na tej ciekawej stronie:

formatting link
to device descriptor przesy³any jest w jednym pakiecie... czyli decyduje informacja w setup pakiecie - 6 wLength 2 Count Number of bytes to transfer if there is a data stage ? jak sobie host zarzyczy 8 bajtów to device descriptor przesy³any jest

8+8+2?

nie wiem, wszystko mi siê ju¿ pomiesza³o, odezwê siê pó¼niej...

dziêki za info, ale z tego co widzê w debuggerze i na tej ciekawej stronie:

formatting link
to device descriptor przesy³any jest w jednym pakiecie... czyli decyduje informacja w setup pakiecie - 6 | wLength | 2 | Count Number of bytes to transfer if there is a data stage? jak sobie host za¿yczy 8 bajtów to device descriptor przesy³any jest 8+8+2?

nie wiem, wszystko mi siê ju¿ pomiesza³o, odezwê siê pó¼niej...

Bo to jest wy¿szy poziom - tam pokazano ju¿ ca³e pakiety. A sterownik to dzieli w zale¿no¶ci od tego jaki max_packet_size jest w device. Mo¿e max_pakiet_size byæ równy 64 i wtedy sterownik za jednym zamachem przesy³a deskryptory gdy¿ one zazwyczaj licz± po kilkana¶cie bajtów. Raport HID mo¿e mieæ > 64B (i zazwyczaj ma ) wiêc w tym przypadku trzeba dzieliæ. Device nie mo¿e odes³aæ wiêcej danych ni¿ siê Host spodziewa bo to oznacza gruby b³±d - zostaje przerwana transmisja. Zazwyczaj w prostych urz±dzeniach HID typu mysz max_pakiet_size jest = 8, bo tam ka¿dy bajt ramu du¿o kosztuje, a czas transmisji nie jest istotny.

Ciekawostka: bardzo proste urz±dzenia nie maj± innych enpointów za wyj±tkiem EP0, który jest zawsze obowi±zkowy :-)

Ale zaraz?? piszemy o HID a temat w±tku to MSC?

MiSter

dziêki, w³a¶nie dlatego po przeczytaniu kilku ksi±¿ek i dokumentów zaj±³em siê klas± HID, jakby Kto¶ te¿ siê bawi³ to chyba trzeba powiedzieæ, ¿e to jednak najprostsze urz±dzenia USB... ale zamieszane jak ¶mok ;o)

pytanie z w±tku by³o o specyfikacjê mass storage, nie ma jakiej¶ jednej biblii tylko informacje porozrzucane po ró¿nych dokumentach...

a je¶li chodzi o enumeracjê, to jak wygl±da pierwszy odczyt deskryptora urz±dzenia w enumeracji, tak: setup packet + IN packet (8 bajtów) + IN packet (8 bajtów) + IN packet (2 bajty) + ACK czy mo¿e tak: setup packet + IN packet (pierwszych 8 bajtów) + ACK bo jak rozumiem kolejne transakcje tak jak pierwszy przyk³ad? jakie znaczenie ma pole d³ugo¶æ danych w setup pakiecie?

a jak sprawa wygl±da od strony windows, co trzeba spe³niæ, ¿eby winda zainstalowa³a moje urz±dzenie HID (z moim report des.) z domy¶lnym sterownikiem HID?

natkn±³em siê na taki plik:

ed2k://|file|Usb%20Driver%20Programming%20(2)%20-%20Writing%20Your%20Own%20Device%20Driver%20(2002%20Elektor%20Electronica%20Excerpt).pdf|205985392|0C5F3A56A8B3EA8488CDEC79999FA4A1|/

ale zero ¼róde³, mo¿e Kto¶ widzia³ ten artyku³, a mo¿e ma i móg³by zeskanowaæ? ;o)

Najlepiej w ogóle nie karmić, to może zdechnie...

schowaj siê do europy

co¶ mnie chyba Szanowny Kolega oszukuje, w³a¶nie zobaczy³em w debugerze, ¿e pierwszy deskryptor w enumeracji przesy³any jest w ca³o¶ci... debuger pokazuje pe³ne $12 bajtów... a to ciekawostka?

A co wtym dziwnego? jezeli max_packet_size jest odpowiednio du¿y to idzie za jednym razem.

MiSter

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required