Vagrant do programowania AVR przy pomocy USBasp

Ostatnimi czasy zacząłem coraz bardziej bratać się z Vagrantem. Jak niegdyś raczej nie reagowałem przesadnym entuzjazmem na jego widok, tak ostatnie tygodnie wiele zmieniły w moim postrzeganiu. Teraz moje ekstremum przesunęło się w drugą stronę – patrzę gdzie tylko Vagranta można wepchnąć. Okazuje się, że praktycznie wszędzie, a ogrom roboty robi w przypadku projektów związanych z mikrokontrolerami Atmela.

Każdy kto zna Vagranta ten wie, że pewnie nie jest problemem skonfigurowanie go tak, żeby przygotował nam wszystkie narzędzia niezbędne do skompilowania oprogramowania na mikrokontroler. Z grubsza jest to tak naprawdę tylko zestaw narzędzi avr-gcc i build-essential. Schody zaczynają się w przypadku, gdy chcemy wykorzystać Vagranta do zaprogramowania mikrokontrolera.  To zadanie wymaga dodatkowo avrdude (co również nie stanowi problemu) i widoczności programatora w maszynie wirtualnej (rzeczone schody).

Przygotowanie programatora

Jeżeli programator nie jest poprawnie widoczny w systemie Windows (zakładam, że właśnie masz Windowsa, skoro ratujesz się Vagrantem), to należy zainstalować mu odpowiednie sterowniki poprzez program Zadig – niesamowicie ułatwia życie! Jest to bardzo ważny krok, ponieważ bez właściwych sterowników pod Windowsem, programator w środowisku Vagranta ma bardzo niedeterministyczne działanie. Oczywiście można próbować, ale w moim przypadku więcej mi nie działał niż działał.

Instalacja sterowników przy pomocy Zadiga jest niezwykle prosta. Program należy uruchomić, z listy dostępnych urządzeń wybrać programator USBasp, na liście sterowników zaznaczyć libusb-win32, a na koniec wcisnąć Install driver. Jeżeli wszystko się powiodło, program powinien nas o tym poinformować.

Przygotowanie Vagranta

W Vagrancie jest właśnie najpiękniejsze to, że nie wymaga specjalnych przygotować. Wystarczy Vagrantfile i wszystko gotowe. Sztuką jest oczywiście przygotowanie odpowiedniego pliku, ale to ja zrobiłem już za Was.

Najważniejsza część Vagrantfile zaczyna się od linijki 13. W tym miejscu konfigurowana jest widoczność urządzeń USB w maszynie wirtualnej. Jest to zwykły filtr decydujący o tym, które urządzenia zostaną „przeniesione” do środowiska Vagrant po uruchomieniu.

  • linijka 14 – włączenie obsługi USB
  • linijka 15 – wyłączenie USB 2.0
  • linijka 16 – dodanie nowego filtra na pozycji 0:
    • –target – ID maszyny wirtualnej do której zostanie podłączone urządzenie; :id wskazuje na obecną.
    • –name – nazwa urządzenia, która może być dowolna
    • –vendorid – identyfikator producenta – musi być ustawiony na tę konkretną wartość
    • –productid – identyfikator produktu – również musi mieć taką wartość jak wpisana obecnie
    • –manufacturer – producent – ustawiłem zgodnie z informacją widoczną w menedżerze urządzeń
    • –product – nazwa produktu – tutaj też ustawiłem na wartość pokazywaną przez menedżer urządzeń

Gdy plik jest gotowy i zapisany, pozostało teraz jedynie uruchomić Vagranta.

W środowisku

Po zalogowaniu do shella maszyny wirtualnej, należy od razu wykonać sudo su żeby stać się rootem. Jest to niezbędne by móc korzystać z urządzeń USB. W celu weryfikacji poprawności konfiguracji, należy wywołać lsusb. Jeżeli wszystko zostało poprawnie wykonane, na liście urządzeń powinien być widoczny programator i od tego momentu można z niego korzystać (pamiętając o byciu rootem).

[guest@itachi.pl:~]$

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *