Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Programowanie avr pod linuxem

22 Jul 2011 18:53 5234 12
  • Level 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:
    Code:

    -------------- 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.
    Czy Twoje urządzenia IoT są bezpieczne? [Webinar 22.06.2021, g.9.00]. Zarejestruj się za darmo
  • Level 21  
    Ja pod Ubuntu używałem kontrollerlab.Super sprawa obsługuje USBasp.
  • Helpful post
    Level 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.
  • Helpful post
    Level 15  
    radze używać eclipse. Rozwiąże wszystkie Twoje problemy.

    Spójrz na to: AVR Eclipse

    I na to: Burn-O-Mat
  • Level 22  
    Jest kilka środowisk ktechlab, kontrollerlab ale przez wine też chyba nie powinno być problemu.
  • Level 11  
    Postąpiłem według instrukcji dominkastera. Otrzymałem kod hex programu:
    Code: c
    Log in, to see the code

    Po prubie posłużenia się avrdude, w programatorze USBasp mrugnęła zielona dioda. A konsola wypluła komunikat:
    Code:


    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:
    Code:

    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.
  • Level 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/*
  • Level 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.
  • Helpful post
    Level 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.
  • Level 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.
  • VIP Meritorious for electroda.pl
    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:
    Code:
    $ 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.
  • Level 11  
    Konfiguracja systemu rozwiązuje problem :)