mo¿e mnie Kto¶ o¶wieciæ, czy USB mass storage maj± jak±¶ specyfikacjê?
[usb] mass storage
Jun 10, 2012
33 Replies
formatting link
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