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 + linux +stk500 +USB

zulek87 29 Maj 2009 22:25 10234 20
REKLAMA
  • #1 6591879
    zulek87
    Poziom 10  
    Witam!

    Na Windowsie nie miałem żadnych problemów z programowaniem at90s2313...

    Przerzuciłem się na linuksa.... dokładnie ubuntu 9.04.... ściągnąłem wszystko co potrzebne... binutils, avr-libc. gcc, avrdude, uisp etc...


    Programator jest na usb, wygląda dokładnie tak jak ten co podaję w linku, ale wydaje mi się, że ten "mój" to stk500 a nie stk500v2 (Link)

    gdy napiszę program i chcę go wrzucić na uc to nie wiem jaki dać parametr przy wywołaniu programatora... naszukałem się na google i nic nie działa...

    znalazłem:
    USB-to- Serial: avrdude –p t44 –P /dev/ttyUSB0 –c dasa –U flash: w: file.hex (Linux)


    więc przerabiam to na swoją komendę:
    avrdude -c stk500 -p 2313  -P /dev/ttyUSB0 -U flash:w:program.hex


    odpowiedź:
    
    avrdude: ser_open(): can't open device "/dev/ttyUSB0": No such file or directory
    


    niestety na ubuntu 9.04 nie ma takiego nazewnictwa portów USB jak /dec/ttyUSB0.... jaki parametr tutaj wstawić? :)

    próbowałem też, ale nic nie dało :(

    avrdude -c dasa -p 2313  -P /dev/ttyUSB0 -U flash:w:program.hex


    wpisując lsub

    
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 005 Device 020: ID 16c0:05e1 VOTI 
    Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 004 Device 002: ID 041e:4064 Creative Technology, Ltd 
    Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    


    może problem jest innego typu, że na stk500 nie da się przez usb programować na linuksie? Na windowsie emulowałem usb jako port szeregowy, tutaj nie wiem jak się za to zabrać...

    dziękuję za pomoc (:
  • REKLAMA
  • #2 6592178
    tszczesn
    Specjalista - oldradio
    zulek87 napisał:
    Przerzuciłem się na linuksa.... dokładnie ubuntu 9.04.... ściągnąłem wszystko co potrzebne... binutils, avr-libc. gcc, avrdude, uisp etc...


    Programator jest na usb, wygląda dokładnie tak jak ten co podaję w linku, ale wydaje mi się, że ten "mój" to stk500 a nie stk500v2 (Link)


    Ja właśnie też się bawię świeżo kupionym programatorem USB na Linuksie, podobnym, ale trochę innym. Działa z opcją '-c usbasp'.
  • REKLAMA
  • #3 6592383
    mirley
    Poziom 17  
    Myślę że nie chodzi tu o USASPA bo on śmiga bez problemu, nie podaje się nazwy portu a tylko właśnie tak jak kolega pisze, opcję -c USBASP

    Po pierwsze spróbuj wogóle nie podawać nazwy portu, wydaj polecenie bez "-P /dev/ttyUSB0"

    Po drugie odpalasz to spod zwykłego użytkownika czy jesteś pod root'em?

    Po trzecie możesz sprawdzić jakie porty masz dostępne poprzez komendę: ls /dev/ wyświetli to wszystkie urządzenia i po włączeniu programatora zobaczysz co się dodało.

    Po czwarte możesz skorzystać z polecenia "dmesg", powinno wypisać nazwę sterownika i ewentualnie moduł do jądra który trzeba załadować jeśli zajdzie taka potrzeba.
  • #4 6592462
    zulek87
    Poziom 10  
    więc tak... zastosowałem się wskazówek:

    $:  avrdude -c usbasp -p 2313 -U flash:w:dioda.hex



    avrdude: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc



    porównałem diff'em zawartość ls /dev przed i po podłączeniu i wynik to:
    
    430a431
    > ttyACM0
    682a684,687
    > usbdev3.12_ep00
    > usbdev3.12_ep01
    > usbdev3.12_ep81
    > usbdev3.12_ep83


    Co dalej? :)
  • #5 6592585
    mirley
    Poziom 17  
    Po pierwsze to sprawdź polecenie bez portu podanego:
    
    avrdude -c stk500 -p 2313   -U flash:w:program.hex
    

    nie możesz tam wpisać usbasp bo masz inny programator :)

    Emulowany port który został utworzony to "/dev/ttyACM0" więc w drugiej kolejności spróbuj taki port wpisać w komędę.

    Mam nadzieję że pójdzie bo mam pewne obawy, spędziłem mnóstwo czasu aby uruchomić przejściówkę USB-Rs232 właśnie na tym sterowniku czyli cdc_acm i nie udało mi się. Twój programator działa właśnie na nim :) Co prawda ja używam Archlinux 64 więc to troszkę inny system.
  • #6 6592868
    tszczesn
    Specjalista - oldradio
    zulek87 napisał:
    więc tak... zastosowałem się wskazówek:

    $:  avrdude -c usbasp -p 2313 -U flash:w:dioda.hex



    avrdude: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc


    Zrób to z konta root. Jeżeli zadziała - powinieneś dostać komunikat albo że wszystko w porządku, albo że nie może zainicjalizować urządzenia jak avrdude gada z programatorem, ale ten procesora nie widzi. Wtedy musisz się tylko dodać do grupy 'usb' (chyba nie mam akurat Ubuntu pod ręką), przelogować na nowo i już ci wszystko będzie śmigać. Ja używam takiego jak tutaj. To chyba podobna konstrukcja.
  • REKLAMA
  • #7 6592942
    mirley
    Poziom 17  
    Twój programator to USBASP i on działa bezpośrednio z USB wtedy wystarczy komenda
    
    $:  avrdude -c usbasp -p 2313 -U flash:w:dioda.hex
    

    jednak autor tematu ma inny programator (mimo że wygląda identycznie) bo jest tam konwerter USB-RS232 i jednocześnie programator STK500 w jednym uC. Oceniam to na podstawie opisu programatorów i faktu że system wykrywa urządzenie ACM0 które jest mostkiem USB-RS232. Sam USBASP (którego używam) nie ma takiego konwertera, działa bezpośrednio jako urządzenie LOW SPEED na USB
  • REKLAMA
  • #8 6593276
    zulek87
    Poziom 10  
    mirley napisał:
    Po pierwsze to sprawdź polecenie bez portu podanego:
    
    avrdude -c stk500 -p 2313   -U flash:w:program.hex
    

    nie możesz tam wpisać usbasp bo masz inny programator :)

    Emulowany port który został utworzony to "/dev/ttyACM0" więc w drugiej kolejności spróbuj taki port wpisać w komędę.

    Mam nadzieję że pójdzie bo mam pewne obawy, spędziłem mnóstwo czasu aby uruchomić przejściówkę USB-Rs232 właśnie na tym sterowniku czyli cdc_acm i nie udało mi się. Twój programator działa właśnie na nim :) Co prawda ja używam Archlinux 64 więc to troszkę inny system.


    Dokładnie jak pisze Mirley, ja mam stk500

    $ avrdude -c stk500 -p 2313   -U flash:w:program.hex 


    $avrdude: ser_open(): can't open device "/dev/parport0": Permission denied


    $ sudo avrdude -c stk500 -p 2313   -U flash:w:dioda.hex 


    avrdude: ser_open(): can't set attributes for device "/dev/parport0": Inappropriate ioctl for device
    


    zatem dodaję parametr -P

    $ avrdude -c stk500 -p 2313 -P /dev/ttyACM0 -U flash:w:dioda.hex 
    


    avrdude: ser_send(): write error: Invalid argument
    


    robiąc to jako sudo odpowiedź jest taka sama :(

    analogicznie spróbowałem z uisp

    $ uisp -dpart=at90s2313 -dprog=stk500 -dserial=/dev/ttyACM0 --erase --upload if=dioda.hex --verify


    Programmer is not responding.


    dla sudo jest to samo...
  • #10 6593621
    zulek87
    Poziom 10  
    32 bitowe mam ;]
  • #11 6593656
    mirley
    Poziom 17  
    No to powinno śmigać :) Sprobuj jeszcze zamiast stk500 wpisać STK500v2, nie wiem czy mię to różni ale specjalnie zrobiłem sobie USBASPA a nie STK500 aby uniknąć możliwych problemów z uruchomieniem :)

    Dziwi mnie jeszcze czemu nie ma dostępu do portu skoro jesteś pod rootem
  • #12 6594154
    zulek87
    Poziom 10  
    zacząłem kombinować z uisp....

    przyjrzałem się temu programatorowi i na aukcji jest napisane, że on jest kompatybilny z stk500... zacząłem zmieniać metody programowania go.... i wpisałem....

    uisp -dpart=at90s2313  -dprog=dasa -dserial=/dev/ttyACM0 --erase


    Atmel AVR AT90S2313 is found.
    Erasing device ...
    Reinitializing device
    Atmel AVR AT90S2313 is found.


    ale jak chcę coś nagrać albo ściągnąć to strasznie wolno to idzie :/ (zawsze przerywam... bo bym się nie doczekał) dodatkowo dioda co ma sygnalizować programowanie nie mruga, więc raczej nie programuje....

    avr dude wywołany na podobnych warunkach:

    $ avrdude -c dasa -p 2313 -P /dev/ttyACM0 -e


    avrdude: AVR device not responding
    avrdude: initialization failed, rc=-1
             Double check connections and try again, or use -F to override
             this check.
    
    
    avrdude done.  Thank you.


    wklepuję:

    $ avrdude -c dasa -p 2313 -P /dev/ttyACM0 -e -F


    otrzymuję:

    avrdude: AVR device not responding
    avrdude: initialization failed, rc=-1
    avrdude: AVR device initialized and ready to accept instructions
    
    Reading | ################################################## | 100% 0.87s
    
    avrdude: Device signature = 0xffffff
    avrdude: Yikes!  Invalid device signature.
    avrdude: Expected signature for AT90S2313 is 1E 91 01
    avrdude: erasing chip
    avrdude: AVR device not responding
    
    avrdude done.  Thank you.
    


    Czytałem też na stronie producenta Link... : "W celu odczytania sygnatury układu należy utworzyć ścieżkę jak poniżej gdzie com4 jest wybranym portem w systemie. " wpisujemy avrdude -p m8 -c stk500v2 -P com4 -U signature:r:a.dat:a

    przerabiam to na linuksa:

    avrdude -p at90s2313 -c stk500v2 -P /dev/ttyACM0 -U signature:r:a.dat:a 


    z stk500v2 nie działa....

    zmieniam na dasa ale odpowiedzi są takie same jak wyżej....

    wygląda na to, że tylko uisp potrafi się z nim "komunikować" ale nie tak jak powinien, bo programu nagrać nie potrafię :/
  • #13 6968175
    krdln
    Poziom 13  
    I jak tam, zulek87, udało Ci się w końcu ten programator zmusić do działania? Bo mamy takie same, z tej samej strony i otrzymujemy identyczne komunikaty.
  • #14 7003820
    sottek
    Poziom 10  
    Witam!
    Nie jestem specjalistą od linuxa ani programowania AVR, ale próbuje to zmienić. Rozwiązaniem problemu jest dorzucenie do kernela dwóch modułów "usbserial" i "ftdi_sio"
    
    Device Drivers =>
        USB Support =>
            USB Serial Converter Support =>
                USB FTDI Single Port Serial Driver
    

    Kompilujecie i restart systemu z nowego jądra. Sprawdzone na Gentoo kernel 2.6.30-r4.
    Nasunęło mi się jeszcze jedno komenda wywołująca avrdude brzmi:
    
    avrdude -c stk500v2 -p m16  -P /dev/ttyUSB0 -U flash:r:program:i
    

    przy czym istotne jest ":i" na końcu gdyż bez tego avrdude (w przypadku gdy plik nie istnieje i jest przez niego tworzony) występuje błąd (nie jest to wtedy plik Intel hex).
    Mam nadzieje, że zadziała. Owocnej pracy.
  • #15 7012345
    Mamut
    Poziom 18  
    A jakiego programu używałeś do programowania pod windowsem?
  • #16 7022667
    sottek
    Poziom 10  
    Jeśli chodzi o mnie to nie używam Windowsa w codziennej pracy na komputerze, dlatego nie używałem żadnego programu pod AVR pod Windowsa. Obecnie używam gvima do pisania programów z włączoną funkcją rozpoznawania składni.
  • #17 7023065
    archanoid
    Poziom 26  
    Witam. Nie wiem co to za programatorek ale jeśli ma na pokładzie konwerter FTDI to nie powinno być problemów z jego uruchomieniem pod linuxem.
    Wpisz w konsoli jako root polecenie tail -f /var/log/messages a następnie podłącz programator.Jeśli go jądro systemu rozpozna to powinieneś dostać takie oto komunikaty.

    Sep 16 06:05:42 localhost kernel: [ 1197.372026] usb 1-1: new full speed USB device using ohci_hcd and address 2
    Sep 16 06:05:43 localhost kernel: [ 1197.598005] usb 1-1: New USB device found, idVendor=0403, idProduct=6001
    Sep 16 06:05:43 localhost kernel: [ 1197.598011] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    Sep 16 06:05:43 localhost kernel: [ 1197.598015] usb 1-1: Product: AVR BOX
    Sep 16 06:05:43 localhost kernel: [ 1197.598017] usb 1-1: Manufacturer: SIBIT
    Sep 16 06:05:43 localhost kernel: [ 1197.598019] usb 1-1: SerialNumber: 3
    Sep 16 06:05:43 localhost kernel: [ 1197.598156] usb 1-1: configuration #1 chosen from 1 choice
    Sep 16 06:05:43 localhost kernel: [ 1197.657297] usbcore: registered new interface driver usbserial
    Sep 16 06:05:43 localhost kernel: [ 1197.657315] USB Serial support registered for generic
    Sep 16 06:05:43 localhost kernel: [ 1197.657347] usbcore: registered new interface driver usbserial_generic
    Sep 16 06:05:43 localhost kernel: [ 1197.657351] usbserial: USB Serial Driver core
    Sep 16 06:05:43 localhost kernel: [ 1197.663128] USB Serial support registered for FTDI USB Serial Device
    Sep 16 06:05:43 localhost kernel: [ 1197.663185] ftdi_sio 1-1:1.0: FTDI USB Serial Device converter detected
    Sep 16 06:05:43 localhost kernel: [ 1197.663220] usb 1-1: Detected FT232RL
    Sep 16 06:05:43 localhost kernel: [ 1197.663303] usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0
    Sep 16 06:05:43 localhost kernel: [ 1197.663320] usbcore: registered new interface driver ftdi_sio
    Sep 16 06:05:43 localhost kernel: [ 1197.663323] ftdi_sio: v1.4.3:USB FTDI Serial Converters Driver

    Sam osobiście używam debiana i kontrollerlaba i nie mam problemów z programowaniem avr.
  • #18 7100142
    zulek87
    Poziom 10  
    Więc poradziłem sobie czytając manual avrdude :)

    Programator, który posiadam to http://www.and-tech.pl/Stk500/stk500.pdf
    (wszystko było napisane w manualu, ale kto je czyta :] )

    Avrdude pracuje z nim tylko w trybie HIDD :D

    Dodatkowo podając port, do którego jest podłączony programator musiałem wpisać avrdoper, wpisałem to na czuja i zadziałało :)

    avrdude -c stk500v2 -p 2313 -P avrdoper -v

    po czym odnalazł procek, zweryfikował i teraz mogę się już bawić z nim pod ubunciakiem :)
  • #19 7422572
    ziajek00
    Poziom 12  
    Witam. pozwoliłem sobie odświeżyć ten temat ponieważ przeczytałem już 1000 stron o tym zagadnieniu a jednak nadal nie potrafię sobie z nim poradzić. Mam programator stk500v2 taki: http://www.sibit.pl/download/avr_prog/instrukcja.pdf (nie ma w nim możliwości pracy w trybie hidd tak jak pisał kolega wyżej - czy to znaczy że wbrew zapewnieniom producenta nie odpalę go pod avrdude pod linuxem?).

    opiszę wszystko po kolei bo dopiero od kilku dni wgłębiam się w zagadnienie programowania uC więc może gdzieś robię jakiś banalny błąd który ktoś szybko wyłapie.

    podłączyłem attiny 2313 do wyjść kanda - odpowiednio mosi - pin 17 rst - pin 1 sck - pin - 19 miso - pin 18 vcc - pin 20. wszystkie wyjścia gnd podłączyłem pod pin 10 a GEN zostawiłem niepodłączony. Do attiny nie podłączałem również kwarca.

    celem jak na razie, jest wrzucenie na attiny najprostszego .hex'a z "oślej łączki". w tym celu wpisuję:
    avrdude -p t2313 -P /dev/ttyUSB3 -c stk500v2 -Uflash:w:a.HEX

    a otrzymuję:
    avrdude: stk500v2_command(): command failed
    avrdude: stk500v2_command(): unknown status 0xc9
    avrdude: stk500v2_program_enable(): cannot get connection status
    avrdude: initialization failed, rc=-1
             Double check connections and try again, or use -F to override
             this check.
    
    
    avrdude done.  Thank you.



    to samo jest gdy odepnę układ od programatora, co mogłoby świadczyć o niewłaściwej komunikacji pomiędzy programatorem a uC

    po wpisaniu
     tail -f /var/log/messages 

    a następnie podłączeniu programatora, pojawia się:
    Dec 22 15:37:46 tomek-laptop kernel: [ 7196.327455] ftdi_sio 6-2:1.0: FTDI USB Serial Device converter detected
    Dec 22 15:37:46 tomek-laptop kernel: [ 7196.327515] usb 6-2: Detected FT232RL
    Dec 22 15:37:46 tomek-laptop kernel: [ 7196.327521] usb 6-2: Number of endpoints 2
    Dec 22 15:37:46 tomek-laptop kernel: [ 7196.327526] usb 6-2: Endpoint 1 MaxPacketSize 64
    Dec 22 15:37:46 tomek-laptop kernel: [ 7196.327531] usb 6-2: Endpoint 2 MaxPacketSize 64
    Dec 22 15:37:46 tomek-laptop kernel: [ 7196.327536] usb 6-2: Setting MaxPacketSize 64
    Dec 22 15:37:46 tomek-laptop kernel: [ 7196.333738] usb 6-2: FTDI USB Serial Device converter now attached to ttyUSB3
    Dec 22 15:38:12 tomek-laptop kernel: [ 7222.425175] usb 6-2: USB disconnect, address 8
    Dec 22 15:38:12 tomek-laptop kernel: [ 7222.425546] ftdi_sio ttyUSB3: FTDI USB Serial Device converter now disconnected from ttyUSB3
    Dec 22 15:38:12 tomek-laptop kernel: [ 7222.425581] ftdi_sio 6-2:1.0: device disconnected
    Dec 22 15:38:23 tomek-laptop kernel: [ 7233.613086] usb 6-2: new full speed USB device using uhci_hcd and address 9
    Dec 22 15:38:24 tomek-laptop kernel: [ 7233.809574] usb 6-2: configuration #1 chosen from 1 choice
    Dec 22 15:38:24 tomek-laptop kernel: [ 7233.817402] ftdi_sio 6-2:1.0: FTDI USB Serial Device converter detected
    Dec 22 15:38:24 tomek-laptop kernel: [ 7233.817464] usb 6-2: Detected FT232RL
    Dec 22 15:38:24 tomek-laptop kernel: [ 7233.817470] usb 6-2: Number of endpoints 2
    Dec 22 15:38:24 tomek-laptop kernel: [ 7233.817475] usb 6-2: Endpoint 1 MaxPacketSize 64
    Dec 22 15:38:24 tomek-laptop kernel: [ 7233.817481] usb 6-2: Endpoint 2 MaxPacketSize 64
    Dec 22 15:38:24 tomek-laptop kernel: [ 7233.817485] usb 6-2: Setting MaxPacketSize 64
    Dec 22 15:38:24 tomek-laptop kernel: [ 7233.818408] usb 6-2: FTDI USB Serial Device converter now attached to ttyUSB3
    



    układ jest zasilany z programatora (założona odpowiednia zworka)

    system: ubuntu 9.10
    wersja avrdude 5.8.1,
    zainstalowałem wszystko co dotyczyło binutils, avr-libc. gcc, avrdude, uisp, ftdi z repozytoriów

    no i..... nic :D

    może czegoś prostego nie zrobiłem? proszę o pomoc i wszelkie wskazówki, przecież chyba nie jestem jedyną osobą która próbowała odpalić stk500v2 pod linuxem?



    EDIT: odpaliłem wyżej wymieniony programator pod linuxem w sposób który opisałem w poście. okazało się, że źle podłączyłem uC do programatora
  • #20 7549695
    AvrArm
    Poziom 15  
    Mam taki programator i na ubuntu śmiga bez problemów.
  • #21 8148441
    krdln
    Poziom 13  
    Fajnie się składa, bo ten programator ma niemal identyczny schemat co znany i lubiany programator usbasp. Można się pokusić więc o jego przeprogramowanie. Pewną przeszkodą jest brak zworki SELF-PROG – musimy np. ręcznie zwierać odpowiednie piny.

    Po przeprogramowaniu śmiga świetnie, korzystam na co dzień. Trochę przeszkadza brak kolejnej zworki – SLOW – musimy ją dorobić lub po prostu programować układy co najmniej 2MHz-owe :)

    Polecam i pozdrawiam,
    krdln
REKLAMA