SAM7 - szybkość transmisji USB

Jun 25, 2009 11 Replies

Użyłem kitu Olimex z SAM7X256. Lekko przerobiłem przykład usb-device-cdc-serial-project-at91sam7x-ek pobrany ze strony Atmela. Wywaliłem obsługę UARTa i wysyłam w kółko usartBuffers[0]. Pomiar po stronie PC wykazał prędkość transmisji na poziomie 450kB/s danych użytecznych.



Czy to jest typowe osiągnięcie? Spodziewałem się minimum 600kB/s.



Michał



Użytkownik "Michał Lankosz" snipped-for-privacy@tlen.pl napisał w wiadomości news:h1vufq$q51$ snipped-for-privacy@srv.cyf-kr.edu.pl...

A jaka dlugosc bufora ? USB leci co 1ms, wiec trzeba pare KB jak sie chce szybko ..

J.

Kolejne ramki protokołu USB są wysyłane co 1ms. Jeżeli wysyła się dane małymi paczkami to dane nie wypełniają calego czasu łacza międzyz kolejnymi ramkami, do teog dochodzą jeszcze jakies sprawy protokolarne i w efekcie nie całe pasmo jest zajete. Żeby wyciągnać dużą przepustowość trzeba wpychać duze ilości danych na raz. Wtedy automat podzieli to na x pełnych ramek i wtedy wydajność będzie największa z możliwych ale i tak nie zbliżysz się do teoretycznej przepustowości.

AK pisze:

Taki jest okres najczęstszego odpytywania urządzeń. Jeżeli chcesz częściej, pomoże przejście na HiSpeed. Ale to już nie z tym ARMem. Obejrzyj nową atmelową serię AT91SAM3U.

Piotr Pitlab Laskowski pisze:

Eee, jaki "automat"? Pisałeś w ogóle coś kiedyś związanego z USB dla AT91SAM7?

Użytkownik "J.F." <jfox snipped-for-privacy@poczta.onet.pl> napisał w wiadomości news:h202k5$379$ snipped-for-privacy@news.onet.pl...

Z pewnych zawiłości programu odczytuję, że chyba 64 bajty. 1ms dotyczy też urządzeń CDC, czy HID? Jeszcze nie wgryzałem się w USB więc mogę pisać jakieś głupoty.

Michał

Wszystkich (Low i Full Speed). Skoro bufor ma 64 bajty, osiągniesz 64000 bajtów na sekundę i ani bita więcej.

Pozdrowienia, MKi

Oj cos kolego pokreciłes, w trybie interruptowym owszem, ale w trybie bulkowym to maksymalnie prawie 1MB/s (oczywiście w FS).

A CDC chodzi przeciez w bulk-ach.

M

MKi pisze:

A nie. W transferach "bulk" można sklejać wiele 64-bajtowych pakietów i wyciągnąć oczywiście więcej niż 64000B/s.

BTW: Wszystkie urządzenia USB zgłaszają do hosta żądany okres odpytywania. 1ms to najkrótszy okres dla urządzeń FullSpeed (max.

255ms). W przypadku LowSpeed najkrótszy czas to 10ms (max. również 255ms). Urządzenia HighSpeed mogą zarządać odpytywania co 125us * 2^n, co daje minimalny okres 125us. Przy czym host ma możliwość (jeżeli tak mu pasuje) odpytywania z krótszym okresem, niż zażądano. Mówi o tym rozdział 5.7.4 specyfikacji USB 2.0:
formatting link
W USB 3.0 dopiero robi się poezja z tymi czasami. Tak że jeżeli komuś się spieszy z transferem ;-) to polecam od razu rzeźbienie w 3.0. Kontroler NEC'a już można kupić (na PCI Express).

Fakt, pokręciłem :(

Pozdrowienia, MKi

MKi pisze:

BTW: Tak przy okazji - przy prędkości LowSpeed są możliwe tylko transfery kontrolne i interrupt. Nie ma bulk ani izochronicznych tak więc można zapomnieć o normalnym CDC.

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required