Instalacja oraz konfiguracja programatora USBasp w systemie Linux

Posted on 8 December, 2019 at 15:05

Tags: Linux AVR


Instalacja oraz konfiguracja programatora USBasp w systemie Linux

Wstępne wymagania

Przed przystąpieniem do procesu konfiguracji programatora należy go podłączyć do komputera wraz z jakimś mikrokontrolerem AVR, który posłuży nam do testów. Osobiście podczas tworzenia tego poradnika wykorzystałem programator ATB-USBASP firmy Atnel w wersji 4.2 oraz mikrokontroler Atmega32.

Instalacja avrdude

Avrdude jest darmowym narzędziem, które pozwala na zarządzanie pamięcią naszego mikrokontrolera za pomocą ISP (ang. In-System Programming) z poziomu naszego komputera wykorzystując przy tym zewnętrzny programator np. USBasp. Proces instalowania avrdude w systemie Linux sprowadza się do wykonania jednej komendy, ponieważ pakiet ten jest dostępny w głównym repozytorium Ubuntu:

sudo apt-get install avrdude

Teraz możemy spróbować odczytać fusebity z naszego mikrokontrolera wykonując poniższą komendę:

avrdude -c usbasp -p m32

Prawdopodobnie w konsoli został wyświetlony komunikat dotyczący błędu, który wystąpił podczas próby odczytu pamięci z naszego mikrokontrolera wynikający z braku uprawnień naszego użytkownika do programatora USBasp.

avrdude-error
Próba odczytu fusebit’ów zakończona niepowodzeniem

W celu naprawienia tego błędu należy stworzyć specjalnie spreparowany plik 99-usbasp.rules, który będzie zawierał informacje dotyczące uprawnień.

Nadanie wymaganych uprawnień

Na początku musimy zobaczyć, czy nasz programator USBasp jest widoczny w naszym systemie Linux. W tym celu należy go podłączyć do naszego komputera i wykonać komendę "lsusb" z poziomu terminala.

lsusb-with-usbasp
Identyfikacja programatora USBasp

Jak widzimy na powyższym screenie podłączony programator został poprawnie wykryty przez nasz system. Teraz możemy przystąpić do rozwiązania problemu dotyczącego braku odpowiednich uprawnień.

Rozwiązanie problemu dotyczącego braku wymaganych uprawnień sprowadza się do stworzenia specjalnego pliku 99-usbasp.rules w katalogu /etc/udev/rules.d.

  • Tworzymy pusty plik 99-usbasp.rules:
sudo touch /etc/udev/rules.d/99-usbasp.rules
  • Przechodzimy do edycji pliku :
sudo nano /etc/udev/rules.d/99-usbasp.rules
  • Kopiujemy i wklejamy poniższą zawartość:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", ATTRS{idProduct}=="USBasp", GROUP="users", MODE="0666"
usbasp-rules
Edycja pliku 99-usbasp.rules z poziomu terminala
Odczyt idVendor oraz idProduct

Większość programatorów USBasp bazujących na wsadzie autorstwa Thomas Fischl’a posiada ten sam identyfikator "vendor" oraz "product" jednak warto sprawdzić, czy Twój programator nie posiada innych wartości. W tym celu wystarczy wykonać polecenie "lsusb" i odczytać wymagane wartości.

  • Na koniec zapisujemy plik:
    • ctrl + x
    • y
    • enter

Ostatni krok sprowadza się do wykonania poniższej komendy:

sudo udevadm trigger

Teraz możemy przejść do testowania naszej konfiguracji.

Odczyt fusebit’ów z mikrokontrolera

W celu przetestowania naszej konfiguracji możemy odczytać fusebity z naszego mikrokontrolera wykonując ponownie poniższą komendę:

avrdude -c usbasp -p m32

Jeśli programator został poprawnie skonfigurowany to naszym oczom powinien ukazać się poniższy rezultat:

avrdude-success
Odczyt fusebit’ów z mikrokontrolera

W tym poście opisałem jedynie proces konfiguracji programatora USBasp w środowisku Linux, co oznacza, że aby móc pisać i kompilować własne programy na mikrokontrolery z rodziny AVR wymagana jest dodatkowa konfiguracja m.in. instalacja specjalnego kompilatora avr-gcc.


Please provide a valid nick.
Please provide a valid content.

* These fields are required.