Michał Lankosz
Guest
Thu Jun 25, 2009 2:48 pm
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ł
J.F.
Guest
Thu Jun 25, 2009 3:46 pm
Użytkownik "Michał Lankosz" <mike2001@tlen.pl> napisał w wiadomości
news:h1vufq$q51$1@srv.cyf-kr.edu.pl...
Quote:
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.
A jaka dlugosc bufora ?
USB leci co 1ms, wiec trzeba pare KB jak sie chce szybko ..
J.
AK
Guest
Thu Jun 25, 2009 9:13 pm
Quote:
USB leci co 1ms, wiec trzeba pare KB jak sie chce szybko ..
Dlaczego co 1ms??
M.
Piotr Pitlab Laskowski
Guest
Thu Jun 25, 2009 9:23 pm
Quote:
USB leci co 1ms, wiec trzeba pare KB jak sie chce szybko ..
Dlaczego co 1ms??
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.
--
Piotrek.
http://www.pitlab.pl
Adam Dybkowski
Guest
Thu Jun 25, 2009 10:13 pm
AK pisze:
Quote:
USB leci co 1ms, wiec trzeba pare KB jak sie chce szybko ..
Dlaczego co 1ms??
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.
--
Adam Dybkowski
http://dybkowski.net/
Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
Adam Dybkowski
Guest
Thu Jun 25, 2009 10:24 pm
Piotr Pitlab Laskowski pisze:
Quote:
USB leci co 1ms, wiec trzeba pare KB jak sie chce szybko ..
Dlaczego co 1ms??
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.
Eee, jaki "automat"? Pisałeś w ogóle coś kiedyś związanego z USB dla
AT91SAM7?
--
Adam Dybkowski
http://dybkowski.net/
Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
Michał Lankosz
Guest
Thu Jun 25, 2009 10:31 pm
Użytkownik "J.F." <jfox_xnospamx@poczta.onet.pl> napisał w wiadomości
news:h202k5$379$1@news.onet.pl...
Quote:
A jaka dlugosc bufora ?
USB leci co 1ms, wiec trzeba pare KB jak sie chce szybko ..
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ł
MKi
Guest
Fri Jun 26, 2009 5:05 pm
Quote:
A jaka dlugosc bufora ?
USB leci co 1ms, wiec trzeba pare KB jak sie chce szybko ..
Z pewnych zawiłości programu odczytuję, że chyba 64 bajty. 1ms dotyczy też
urządzeń CDC, czy HID?
Wszystkich (Low i Full Speed). Skoro bufor ma 64 bajty,
osiągniesz 64000 bajtów na sekundę i ani bita więcej.
Pozdrowienia,
MKi
AK
Guest
Fri Jun 26, 2009 8:41 pm
Quote:
Wszystkich (Low i Full Speed). Skoro bufor ma 64 bajty,
osiągniesz 64000 bajtów na sekundę i ani bita więcej.
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
Adam Dybkowski
Guest
Fri Jun 26, 2009 9:34 pm
MKi pisze:
Quote:
A jaka dlugosc bufora ?
USB leci co 1ms, wiec trzeba pare KB jak sie chce szybko ..
Z pewnych zawiłości programu odczytuję, że chyba 64 bajty. 1ms dotyczy
też urządzeń CDC, czy HID?
Wszystkich (Low i Full Speed). Skoro bufor ma 64 bajty,
osiągniesz 64000 bajtów na sekundę i ani bita więcej.
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:
http://dybkowski.net/download/usb_20.pdf
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).
--
Adam Dybkowski
http://dybkowski.net/
Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.
MKi
Guest
Sat Jun 27, 2009 5:27 pm
Quote:
Wszystkich (Low i Full Speed). Skoro bufor ma 64 bajty,
osiągniesz 64000 bajtów na sekundę i ani bita więcej.
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.
Fakt, pokręciłem :(
Pozdrowienia,
MKi
Adam Dybkowski
Guest
Sat Jun 27, 2009 10:25 pm
MKi pisze:
Quote:
Wszystkich (Low i Full Speed). Skoro bufor ma 64 bajty,
osiągniesz 64000 bajtów na sekundę i ani bita więcej.
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.
Fakt, pokręciłem
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.
--
Adam Dybkowski
http://dybkowski.net/
Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.