AVR - predkosc programowania przez LPT i USB

Jun 16, 2009 12 Replies

Ostatnio na grupie padło pytanie nt prędkości programowania AVRów przy pomocy programatorów USB. Zmierzyłem jak to jest w przypadku najprostszego kabelka na LPT zgodnego z STK200/300 (z buforem 74LVC245) obsługiwanego przez ISP Programmer w porównaniu z programatorem na USB (ze sprzętowym konwerterem USB-UART FT232R) gadającego w protokole STK500v2 z AVR Studio. Testowi podlegał odczyt i programowanie 128KB pamięci Flash mikrokontrolera ATmega128 popędzanego kwarcem 14,7456 MHz. Ustawiłem w obu programach jak najszybszą transmisję ISP (AVR Studio:



1,843MHz; ISP Programmer: FASTEST). Zapisywałem plik 128KB szumu. Przed każdym programowaniem cała pamięć Flash była kasowana.

LPT (ISP Programmer 1.2.0.48): odczyt 15,10s (czyli ok. 8,48KB/s) programowanie 33,74s (niewyłączalna weryfikacja, ok. 3,79KB/s)



USB (AVR Studio 4.16.638): odczyt 22,60s (ok. 5,66KB/s) programowanie 14,92s (bez kasowania ani weryfikacji, ok. 8,58KB/s) programowanie z weryfikacją 26,11s (bez kasowania, ok. 4,90KB/s)



W moim przypadku protokół STK500v2 stworzony dla normalnych portów COM ograniczał prędkość komunikacji AVR Studio z programatorem do 115200 bps. Myślę, że programatory USB porozumiewające się dużo szybciej z komputerem (np. AVRISP mkII, AVR One! lub STK600) powinny radzić sobie jeszcze szybciej. Ktoś ma i mógłby zmierzyć czasy?



I dla porównania: czy ktoś mógłby też zmierzyć te prędkości dla najtańszych programatorów USB LowSpeed, gdzie całe USB obsługuje programowo mały AVRek?



BTW: Myślę, że dopiero programatory z USB 2.0 HighSpeed mogłyby dojść do max. wydajności ograniczanej już tylko przez programowany scalak.



480Mb/s oczywiście tu niepotrzebne, ale przy okazji znacznie mniejsze są opóźnienia pakietów niż przy prędkości FullSpeed (12Mb/s). Taki FT2232H to byłby potwór. :) Procesor w takim programatorze nawet nie jest potrzebny (można wykorzystać sprzętowy deserializer MPSSE).

Witam!

Adam Dybkowski dnia 09-06-16 23:32 napisał(a):

Postaram się w sobotę zmierzyć prędkość programowania dla USBasp oraz AVR JTAGICE mkII w trybie ISP i JTAG. Musze tylko przelutować atmegę bo na wszystkich płytkach testowych które mam są wlutowane ATmega2561.

vania pisze:

Do testu dobra, nie zmieniaj.

Algorytm programowania ATmegi2561 przez ISP nie różni się prawie od ATmegi128. Jeżeli możesz to sprawdź też przez JTAG, może być nieco szybciej.

Adam Dybkowski wrote: > Myślę, że programatory USB porozumiewające się dużo szybciej z

Moge do AVR32. Od razu powiem ze AVR One jest z 5x szybszy niz AVRISP. Zapodaj plik na priva (wytnij to co po 1111 w adresie jest).

Jerry1111 pisze:

Weź pierwszy z brzegu szum o rozmiarze całego Flasha tego procesora. Z braku szumu może być przycięty plik ZIP (przerobiony na Intel Hex jeżeli trzeba).

Jakis PDF o dlugosci 424671 pisal sie do flasha lacznie z kasowaniem przez 12.5s

Aha - AVR One pisze: Connected to AVR ONE! 00000000004E version 2.8. Querying file system information. FPGA file avr32 version 1.9 loaded. JTAG clock is configured at 40.698 MHz.

Jerry1111 pisze:

Czyli średnio 33KB/s, wynik taki sobie bo tylko 2-3x lepszy niż stare AVRy.

Przy programowaniu przez JTAG 40MHz chyba prędkość interfejsu nie ma dużego znaczenia. No to w takim razie zadziwia jednak tak niska prędkość programowania procka (tylko 33KB/s). Myślałem wcześniej, że AVR32 to już hiperprędkość i będzie się zapisywać chociażby z wydajnością przeciętnego NAND Flash'a (5MB/s).

Ano jest jak jest. Wlasnie sprawdzilem ze verify trwa podobie - znaczy programowanie i verify razem trwaja 25s, wiec moze to jednak cos z przesylem danych a nie szybkoscia procka. Nie mam jak sprawdzic teraz mkII (w robocie zostal) ale jest kilka razy wolniejszy niz One.

Bylo tak wolno bo w opcjach mialem ustawiony zegar na internal RC. Jak przestawilem na kwarc, to kasowanie, zapis i weryfikacja trwaja razem

9s. Same kasowanie i zapis trwa 5s, co daje 85kB/s.

Jerry1111 pisze:

No, to już coś!

5s programowania ponad 400KB. :)

Czy masz jakiegoś AVRa pod ręką (nie AVR32) do sprawdzenia, jak idzie programowanie atmelowych 8-bitowców przy pomocy AVR One? Ciekawe, na ile szybciej niż inne programatory AVRów.

;-) Tylko czemu te cholerstwo takie drogie jest.

Nie mam - ja wielki wrog malych AVR ;-) Dopiero AVR32 przekonalo mnie do Atmela - a i to jest kur*&* problem. Kiedys we wczesnych wersjach Cyclone1 byl problem lock-up przy wolnym narastaniu zasilania. Dokladnie to samo jest w AVR32 - przynajmniej w tych ktore uzywam.

Witam!

Adam Dybkowski dnia 09-06-17 21:41 napisał(a):

Na razie tak na szybko sprawdziłem na Dellu D610 i coś jest nie tak programowanie 256kB trwa ok 2min:

ISP Programmer 1.2.0.48 pod WinXP programator ByteBlaster: Programowanie 2,12kB/s, odczyt 4,34kB/s

AVRDUDE minimalnie szybciej programuje 2,38kB/s natomiast odczyt to ma tragiczny 1,26kB/s

jtagiceii.exe pod WinXP JTAGICE MKII (SPI) Programowanie 2,03kB/s, odczyt 2,05kB/s

W sobotę sprawdzę jeszcze pod Win98SE bo coś mi się wydaje że z tym laptopem coś nie tak jest. Pamiętam że jak dawniej programowałem ATmega128 to trwało to dużo szybciej. Ostatnio tylko wgrywam 3kB bootlodery więc nie zauważyłem zmniejszenia prędkości programowania.

vania pisze:

Jakoś tragicznie wolno. Wybrałeś w ISP Programmer taktowanie "FASTEST"? Zobacz, w ilu % jest zajęty procesor komputera w trakcie programowania.

A tutaj tym bardziej nie chce mi się wierzyć. Czy masz innego peceta do testów?

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required