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

Programowanie avr pod linuxem

bczarnota 22 Lip 2011 18:53 5447 12
REKLAMA
  • #1 9746945
    bczarnota
    Poziom 11  
    Witam, miałem dość długą przerwę w programowaniu. W międzyczasie zmieniłem system operacyjny z Windows na Linux mint. Mam zainstalowane pakiety binutils, gcc i avr-libc. Uruchamiam środowisko Code Blocks, tworze projekt avr, wpisuje kod c, klikam na przycisk build i wyskakuje mi następujący błąd:
    
    -------------- Build: Debug in Mrugająca dioda ---------------
    
    Linking console executable: bin/Debug/Mrugająca dioda.elf
    avr-g++: dioda.elf.map,--cref: Nie ma takiego pliku ani katalogu
    Process terminated with status 1 (0 minutes, 0 seconds)
    0 errors, 0 warnings
    

    Znacie może jakieś nakładki graficzne na avrdude pod linuxem? Nie lubię korzystać z konsoli. Pozatym nie wiem czy USBasp zadziała mi tutaj bezproblemowo. Na windowsie używałem Sinaprog.
  • REKLAMA
  • #2 9746969
    skalsky5000
    Poziom 21  
    Ja pod Ubuntu używałem kontrollerlab.Super sprawa obsługuje USBasp.
  • REKLAMA
  • Pomocny post
    #3 9746977
    dominkaster
    Poziom 14  
    Kontrollerlab. Trochę dziwny, ale idzie się przyzwyczaić.
    USBasp jest obsługiwany przez avrdude bezproblemowo.
    Spróbuj skompilowac i wrzucić program z konsoli, dowiesz się czy wszystko jest ok.
    avr-gcc -O3 -mmcu=atmega8 program.c
    avr-objcopy -O ihex -R .eeprom a.out program.hex

    Wrzucenie programu (możliwe że będą potrzebne uprawnienia roota):
    avrdude -p m8 -c usbasp -U flash:w:program.hex

    atmega8 i m8 zastąp swoim prockiem.
  • REKLAMA
  • Pomocny post
    #4 9746983
    damiano713
    Poziom 15  
    radze używać eclipse. Rozwiąże wszystkie Twoje problemy.

    Spójrz na to: AVR Eclipse

    I na to: Burn-O-Mat
  • REKLAMA
  • #5 9746988
    arkwyl
    Poziom 22  
    Jest kilka środowisk ktechlab, kontrollerlab ale przez wine też chyba nie powinno być problemu.
  • #6 9749430
    bczarnota
    Poziom 11  
    Postąpiłem według instrukcji dominkastera. Otrzymałem kod hex programu:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Po prubie posłużenia się avrdude, w programatorze USBasp mrugnęła zielona dioda. A konsola wypluła komunikat:
    
    
    avrdude: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude: error: programm enable: target doesn't answer. 1 
    avrdude: initialization failed, rc=-1
             Double check connections and try again, or use -F to override
             this check.
    
    
    avrdude done.  Thank you.
    

    AVR8 Burn-O-Mat chyb nie wykrywa programatora, przy prubie ustawienia opcji programatora, żadna nie była dostępna. Natoiast w Eclipse Po skompilowaniu pliku ***.c powstaje plik ***.elf a kiedy kliknę na przycisk ładowania pliku do MCU plugin domaga się pliku .HEX

    Dodano po 25 [minuty]:

    Teraz avrdude odpowiada jeszcze:
    
    avrdude: Warning: cannot query manufacturer for device: error sending control message: Operation not permitted
    avrdude: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc
    

    Przełączałem zworki na programatorze.
  • #7 9749968
    dominkaster
    Poziom 14  
    avrdude wywołujesz z konsoli czy z programu?
    Przed wykonanie wrzucenia na programator wpisz w konsoli:
    su (dla systemów różnych niż debian/ubuntu)
    sudo su (dla debiana i ubuntu)
    chmod a+rwx /dev/bus/usb/*
  • #8 9750177
    bczarnota
    Poziom 11  
    Nic nie pomogło, natomiast pod windowsem działa, układ oraz programator, przed chwilą sprawdziłem. Spróbuje uruchomić to jeszcze pod wine ale wątpię żeby dało to jakiś efekt.
  • Pomocny post
    #9 9750195
    kuba1im
    Poziom 19  
    Tak jak damiano713 polecam eclipsa. Bardzo rozbudowane narzędzie. Trzeba poświęcić trochę czasu na konfigurację i zapoznanie się, ale naprawdę warto. Moja rada na początek. Używaj wszystkiego z uprawnieniami roota.
  • #10 9750217
    bczarnota
    Poziom 11  
    No właśnie zanim wszedłem na forum uruchomiłem polecenie: sudo avrdude -c usbasp -p m8
    I nagle wszystko ku mojemu zaskoczeniu zaczeło działać. Pół dnia spędziłem nad szukaniem błędu, co może być nie tak.
  • #11 9755695
    LordBlick
    VIP Zasłużony dla elektroda
    Nie ma potrzeby używania sudo, wystarczy raz poprawnie skonfigurować system.
    W moim przypadku (PLD Linux TH x86_64) używam avrdude spod użytkownika. Spełnione są następujące warunki:
    - Użytkownik należy do grupy usb.
    - Używany jest daemon dynamicznych plików urządzeń udev.
    - Dla USBasp przypisana jest następująca reguła udev-a ustawiająca odpowiednie prawa i grupę dla pliku urządzenia po podłączeniu:
    $ cat /etc/udev/rules.d/91-Plugdev-OnUSB.rules | grep USBasp
    ACTION=="add|change", ATTR{product}=="USBasp", MODE="0660", GROUP="usb", SYMLINK+="usbasp"
    
    Jeżeli używasz statycznych plików urządzeń (/dev) również wystarczy zmienić grupę i uprawnienia dla grupy plików urządzeń w całym podkatalogu /dev/bus/usb (jak już dominkaster wcześniej nadmienił, jednak inne prawa powinny być dla katalogów a inne dla plików). Nie ma jednak tu dynamicznej kontroli nad konkretnymi urządzeniami.
  • #13 10859202
    bczarnota
    Poziom 11  
    Konfiguracja systemu rozwiązuje problem :)
REKLAMA