logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[avrdude][avrisp2] Bardzo duże opóźnienie przy programowaniu

vmario 08 Maj 2012 13:45 1375 2
REKLAMA
  • #1 10874239
    vmario
    Poziom 14  
    Mam problem z programowaniem ATxmega16D4 przez podróbkę AVRISP mkII na Windows 7 Professional. Podłączam procesor przez interfejs PDI i wywołuję AVRDUDE:

    D:\vmario\Bin\AVRDUDE\avrdude-5.11-Patch7610-win32>avrdude -c avrisp2 -p x16d4 -P usb -vvvv
    
    avrdude: Version 5.11-Patch#7610, compiled on Aug 31 2011 at 08:02:19
             Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
             Copyright (c) 2007-2009 Joerg Wunsch
    
             System wide configuration file is "D:\vmario\Bin\AVRDUDE\avrdude-5.11-Patch7610-win32\avrdude.conf"
    
             Using Port                    : usb
             Using Programmer              : avrisp2
    avrdude: usbdev_open(): Found AVRISP mkII, serno: 000200012345
    avrdude: usbdev_open(): using read endpoint 0x82
    avrdude: Sent: . [01]


    Tu program zawiesza się na półtorej minuty (lub kilkanaście sekund w przypadku AVRDUDE v5.10), a następnie kontynuuje pracę:

    avrdude: Recv: . [01] . [00] . [0a] A [41] V [56] R [52] I [49] S [53] P [50] _
    [5f] M [4d] K [4b] 2 [32]
    avrdude: stk500v2_getsync(): found AVRISP mkII programmer
             AVR Part                      : ATXMEGA16D4
             Chip Erase delay              : 0 us
             PAGEL                         : P00
             BS2                           : P00
             RESET disposition             : dedicated
             RETRY pulse                   : SCK
             serial program mode           : yes
             parallel program mode         : yes
             Timeout                       : 0
             StabDelay                     : 0
             CmdexeDelay                   : 0
             SyncLoops                     : 0
             ByteDelay                     : 0
             PollIndex                     : 0
             PollValue                     : 0x00
             Memory Detail                 :
    
                                      Block Poll               Page
          Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  Max
    W   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ---
    -- ---------
               eeprom         0     0     0    0 no       1024   32      0     0
     0 0x00 0x00
                                      Block Poll               Page
          Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  Max
    W   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ---
    -- ---------
               application    0     0     0    0 no      16384  256      0     0
     0 0x00 0x00
                                      Block Poll               Page
          Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  Max
    W   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ---
    -- ---------
               apptable       0     0     0    0 no       4096  256      0     0
     0 0x00 0x00
                                      Block Poll               Page
          Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  Max
    W   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ---
    -- ---------
               boot           0     0     0    0 no       4096  256      0     0
     0 0x00 0x00
                                      Block Poll               Page
          Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  Max
    W   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ---
    -- ---------
               flash          0     0     0    0 no      20480  256      0     0
     0 0x00 0x00
                                      Block Poll               Page
          Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  Max
    W   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ---
    -- ---------
               prodsig        0     0     0    0 no        512  256      0     0
     0 0x00 0x00
                                      Block Poll               Page
          Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  Max
    W   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ---
    -- ---------
               usersig        0     0     0    0 no        512  256      0     0
     0 0x00 0x00
                                      Block Poll               Page
          Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  Max
    W   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ---
    -- ---------
               signature      0     0     0    0 no          3    0      0     0
     0 0x00 0x00
                                      Block Poll               Page
          Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  Max
    W   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ---
    -- ---------
               fuse0          0     0     0    0 no          1    0      0     0
     0 0x00 0x00
                                      Block Poll               Page
          Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  Max
    W   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ---
    -- ---------
               fuse1          0     0     0    0 no          1    0      0     0
     0 0x00 0x00
                                      Block Poll               Page
          Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  Max
    W   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ---
    -- ---------
               fuse2          0     0     0    0 no          1    0      0     0
     0 0x00 0x00
                                      Block Poll               Page
          Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  Max
    W   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ---
    -- ---------
               fuse4          0     0     0    0 no          1    0      0     0
     0 0x00 0x00
                                      Block Poll               Page
          Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  Max
    W   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ---
    -- ---------
               fuse5          0     0     0    0 no          1    0      0     0
     0 0x00 0x00
                                      Block Poll               Page
          Polled
               Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  Max
    W   ReadBack
               ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ---
    -- ---------
               lockbits       0     0     0    0 no          1    0      0     0
     0 0x00 0x00
    


    Następnie znów się zawiesza i wykonuje kolejną operację, np. programowanie Flasha (przy czym samo programowanie odbywa się normalnie, w ciągu sekundy, bez żadnych opóźnień). Mówiąc w skrócie, AVRDUDE zachowuje się tak, jakby zawieszał się za każdym razem, gdy nawiązuje połączenie z programatorem. Zjawisko to występuje z dwoma programatorami od różnych producentów, ale tylko przy używaniu AVRDUDE na Windowsie. AVR Studio, narzędzie CLI do obsługi programatorów udostępniane przez Atmela, czy nawet AVRDUDE, ale pod Linuksem, sprawują się bez zarzutu (ten sam komputer, ten sam programator, ten sam prototyp).

    Czy ktoś ma jakieś pomysły? Dodam, że używam libusb z filtrowaniem (żeby nie gryzło się z AVR Studio), instalowałem też kilka starszych wersji libusb, usuwałem AVR Studio, wgrywałem najnowszy soft LUFA do programatora itp. Jak wspominałem, jedynie przy AVRDUDE 5.10 było o tyle lepiej, że zwiecha następowała tylko na kilkanaście sekund.

    Edycja:

    Skompilowałem AVRDUDE zgodnie z przykładową instrukcją. W pliku usb_libusb.c zmieniłem timeout w wywołaniu funkcji usb_bulk_read() (wewnątrz funkcji usbdev_recv_frame(), linijka 395). Zamiast

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    dałem

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Zmniejszyło to opóźnienie ze 100s na 300ms. Skrócenie tego czasu do 100ms sprawia, że czasem (raz na kilkanaście prób) całe połączenie z programatorem zostaje przerwane (przy następnej próbie wraca do normy).

    Rozwiązanie jest więc raczej prowizoryczne, ale umożliwia pracę. W załączniku program z poprawką, gdyby ktoś chciał porównać działanie.
    Załączniki:
  • REKLAMA
  • #2 10878945
    11111olo
    Poziom 42  
    A jak programowanie pod AVR Studio?
  • #3 10880251
    vmario
    Poziom 14  
    vmario napisał:
    AVR Studio, narzędzie CLI do obsługi programatorów udostępniane przez Atmela, czy nawet AVRDUDE, ale pod Linuksem, sprawują się bez zarzutu (ten sam komputer, ten sam programator, ten sam prototyp).
REKLAMA