Spisu treści:

Flashowanie AVR/Arduino z Raspberry Pi: 3 kroki (ze zdjęciami)
Flashowanie AVR/Arduino z Raspberry Pi: 3 kroki (ze zdjęciami)

Wideo: Flashowanie AVR/Arduino z Raspberry Pi: 3 kroki (ze zdjęciami)

Wideo: Flashowanie AVR/Arduino z Raspberry Pi: 3 kroki (ze zdjęciami)
Wideo: CAN bus. Cofanie licznika km w samochodzie - to możliwe? HACKOWANIE licznika samochodowego. 2024, Lipiec
Anonim
Flashowanie AVR/Arduino z Raspberry Pi
Flashowanie AVR/Arduino z Raspberry Pi

Programator wewnątrzsystemowy (ISP) to urządzenie, za pomocą którego można zaprogramować wiele mikrokontrolerów, na przykład ATMega328p, który jest mózgiem Arduino Uno. Możesz kupić coś takiego jak USBtinyISP, możesz nawet użyć Arduino. Ta instrukcja pokaże Ci, jak używać Raspberry Pi jako dostawcy usług internetowych.

Program avrdude, który pod maską wykorzystuje Arduino IDE do flashowania układów, może być używany z wieloma programistami. Jedną z jego opcji jest użycie pinów SPI na porcie rozszerzeń Pi. Wyjaśnię, jak wykonać odpowiednie połączenia, złożyć prosty obwód na płycie perforowanej, aby nie trzeba było przerabiać okablowania za każdym razem, gdy chcesz flashować układ, oraz jak zainstalować i używać avrdude. Pokażę ci również, jak skompilować programy skompilowane przy użyciu Arduino IDE na chipie AVR, takim jak ATmega lub ATtiny, przy użyciu tej metody.

Potrzebne rzeczy:

  • Raspberry Pi z zainstalowanym najnowszym Raspbian
  • 40-pinowe męskie gniazdo nagłówkowe (lub 26-pinowe, jeśli masz starsze Pi)
  • Kabel IDE do podłączenia do Pi
  • Rezonator kwarcowy 16 MHz
  • Kondensatory 22pF (2)
  • LED (1) wskazujący status programatora
  • 8, 14 i/lub 28-pinowe gniazda IC, w zależności od kształtu chipów, które chcesz flashować
  • Trochę płyty perforowanej, drutów, lutowia

Krok 1: Budowanie przystawki szewskiej

Przystawka szewca budowlanego
Przystawka szewca budowlanego
Przystawka do szewca budowlanego
Przystawka do szewca budowlanego
Przystawka do szewca budowlanego
Przystawka do szewca budowlanego

Szeregowy interfejs peryferyjny (SPI), zwany także czteroprzewodowym interfejsem szeregowym, to sposób komunikacji między pojedynczym urządzeniem głównym a jednym lub większą liczbą urządzeń podrzędnych. Wykorzystamy to do flashowania chipów, gdzie Pi jako master, a chip jako slave. Wykonasz następujące połączenia między Pi a chipem (patrz powyższe wyprowadzenia dla różnych AVR i portów rozszerzeń Pi, aby wiedzieć, które piny są które):

  • Połącz ze sobą styki MOSI (master-out-slave-in)
  • Połącz ze sobą styki SCLK (współdzielony zegar)
  • Podłącz styki MISO (master-in-slave-out) razem z rezystorem 220 Ohm, aby chronić Pi przed niespodziewanie wysokimi napięciami z układu
  • Podłącz GPIO 25 na Pi bezpośrednio do pinu RESET na chipie. Pi obniża ten pin podczas programowania, więc używamy rezystora 10K, aby utrzymać go na wysokim poziomie, gdy nie jest programowany, oraz diody LED z rezystorem ochronnym 1K działającej na dodatnie napięcie, aby dać nam ładne wizualne sprzężenie zwrotne podczas programowania.

Podłączamy piny masy i zasilania (3,3 V) między Pi a układami, które chcemy zaprogramować. Jeśli jeszcze tego nie wiesz, piny Raspberry Pi nie tolerują 5V - zostaną uszkodzone, jeśli pojawi się na nich więcej niż 3,3V. Jeśli programowane układy z jakiegoś powodu wymagają zasilania 5 V, moglibyśmy użyć układu zmiany poziomu, aby chronić szpilki Pi, ale nie napotkałem żadnych problemów przy użyciu 3,3 V - więc polecam grać bezpiecznie i oszczędzać na komponentach.

Na koniec podłączamy oscylator kwarcowy 16 MHz do pinów XTAL na chipie, który również łączymy z masą za pomocą kilku kondensatorów 22 pF. Chipy AVR można ustawić tak, aby działały z różnymi częstotliwościami, a także można je ustawić tak, aby używały wewnętrznego lub zewnętrznego źródła do określania tej częstotliwości. Jeśli twój chip jest ustawiony na używanie zewnętrznego kryształu jako źródła częstotliwości, nie będziesz w stanie przeprogramować bez niego. W przeciwnym razie nie ma znaczenia, czy tam jest.

Możesz użyć schematu obwodu na ostatnim obrazku jako przewodnika do montażu przystawki szewskiej na płycie perforowanej. Możesz mieć tyle lub kilka różnych kształtów gniazd IC, ile chcesz, wystarczy podłączyć odpowiednie piny równolegle do Pi i kryształu. Uwaga jeśli użyjesz obrazu mojego prototypu jako przewodnika, zauważ, że dodałem kilka dodatkowych pinów i gniazd nagłówka, abym mógł uzyskać dostęp do pinów na Pi z niepowiązanych powodów.

Krok 2: Instalacja i używanie Avrdude

Instalowanie i używanie Avrdude
Instalowanie i używanie Avrdude
Instalowanie i używanie Avrdude
Instalowanie i używanie Avrdude
Instalowanie i używanie Avrdude
Instalowanie i używanie Avrdude
Instalowanie i używanie Avrdude
Instalowanie i używanie Avrdude

Aby zainstalować avrdude na swoim Pi, po prostu wpisz

sudo apt-get install avrdude

Będziesz wtedy musiał włączyć interfejs SPI, jeśli nie został jeszcze włączony. Można to zrobić za pomocą wiersza poleceń, ale znacznie łatwiej jest użyć narzędzia konfiguracyjnego Raspberry Pi. Rodzaj

sudo raspi-config

i przejdź do opcji interfejsu, aby włączyć SPI.

Aby sflashować swój układ, podłącz kabel taśmowy od swojego Pi do złącza w obwodzie płytki drukowanej i włóż układ do odpowiedniego gniazda IC (upewnij się, że jest skierowany we właściwą stronę).

Podczas flashowania programu należy również upewnić się, że bezpieczniki w chipie są prawidłowo ustawione. Tak naprawdę są to tylko bity w chipie, które ustawiasz, aby powiedzieć mu, z jaką częstotliwością zegara ma działać, czy wymazać EEPROM podczas pisania chipa itp. Możesz przeczytać pełną specyfikację AVR, aby dowiedzieć się, jak ustawić każdy bit, ale znacznie łatwiej jest korzystać z kalkulatora bezpieczników dostępnego na stronie engbedded.com/fusecalc. Wybierz nazwę używanej części odbiornika AVR i wybierz żądane opcje w obszarze „Wybór funkcji”. Zwykle po prostu upewniam się, że ustawienia zegara są prawidłowe, a inne rzeczy pozostawiam domyślnie. Prawie zawsze będziesz chciał pozostawić „Programowanie szeregowe włączone” ZAZNACZONE i „Resetuj wyłączone” NIEZAZNACZONE - w przeciwnym razie nie będziesz w stanie przeprogramować układu. Gdy masz odpowiednie ustawienia, możesz przewinąć obszar „Aktualne ustawienia” i skopiować argumenty AVRDUDE, jak pokazano na obrazku.

Aby ustawić bezpieczniki, wpisz polecenie

sudo avrdude -c linuxspi -P /dev/spidev0.0 -p

gdzie nazwa części odpowiada chipowi, którego używasz. Listę nazw części można znaleźć, wpisując sudo ardude -c linuxspi -p ?type. Aby sflashować swój program, upewnij się, że znajduje się on w bieżącym katalogu i wpisz

sudo avrdude -c linuxspi -P /dev/spidev0.0 -p -U flash:w::i

Po obu komendach dioda LED zaświeci się podczas modyfikacji chipa.

Krok 3: Pobieranie programów Arduino na AVR

Pobieranie programów Arduino na AVR
Pobieranie programów Arduino na AVR
Pobieranie programów Arduino na AVR
Pobieranie programów Arduino na AVR
Pobieranie programów Arduino na AVR
Pobieranie programów Arduino na AVR

Głównym celem tej instrukcji jest flashowanie już skompilowanych programów na chipy, a nie sposób ich pisania lub kompilowania. Chciałem jednak wyjaśnić, w jaki sposób można skompilować pliki binarne za pomocą Arduino IDE i umieścić je na gołych układach AVR za pomocą tej metody, ponieważ Arduino jest stosunkowo łatwe do nauczenia i jest tak wiele samouczków i przykładów.

Najpierw musisz dodać informacje o chipach AVR, które będziesz flashować, aby IDE wiedziało, jak je skompilować. James Sleeman bardzo pomocny zebrał kilka plików instalacyjnych, które są dostępne na github. Aby z nich skorzystać, otwórz menu „Preferencje” w Arduino IDE i kliknij pole obok pola „Additional Boards Manager URLs”. Skopiuj i wklej następujące adresy URL w wyświetlonym oknie dialogowym:

Następnie przejdź do menu „Narzędzia” i znajdź opcję „Menedżer tablic…” w podmenu „Płyta”. Przewiń w dół listy w oknie dialogowym Menedżera tablic i zainstaluj tablice DIY ATmega i DIY ATtiny.

Aby skompilować swoje programy, najpierw upewnij się, że wybrałeś właściwy układ w menu "Procesor", a także właściwą szybkość procesora. Wybierz opcję "Użyj Bootloadera: Nie", ponieważ będziemy przesyłać bezpośrednio z Pi, a tym samym możemy wykorzystać dodatkowe miejsce, które normalnie zajmowałby bootloader Arduino. Teraz kliknij przycisk „Zweryfikuj” (znacznik wyboru). To skompiluje twój program bez próby załadowania go (ponieważ robisz ten krok sam).

Zakładając, że wszystko pójdzie dobrze, musisz teraz pobrać skompilowany program do swojego Pi. IDE ukrywa je w tymczasowej lokalizacji, ponieważ jest przeznaczone do samodzielnego przesyłania programów. W systemie Windows znajduje się w AppData/Local/Temp w katalogu użytkownika, w folderze zaczynającym się od „arduino_build”. Poszukaj pliku.hex - to Twój program! Prześlij go do swojego Pi przez FTP lub pamięć USB i jesteś w biznesie.

Wykonanie tego wymaga posiadania komputera z systemem Windows lub Mac do kompilacji programów, które następnie wysyłasz do Pi. Byłoby naprawdę gładko móc to zrobić na samym Pi, ale niestety oficjalna wersja Arduino IDE dostępna w repozytorium Raspbian jest dość stara i nie ma menedżera płyty. Bez tego dodanie odpowiednich ustawień do kompilacji dla samych AVR jest nieco trudniejsze. Dostępne są samouczki do kompilowania nowszej wersji Arduino na twoim Pi – jeśli to jest to, co chcesz zrobić, znajdź je! Uważam również, że powinno być możliwe, aby IDE używało programatora linuxspi do flashowania chipa z samego IDE (tj. Za pomocą przycisku „pobierz”), ale jest to poza moją cierpliwością i poziomem umiejętności - jeśli wiesz o tym sposób, opublikuj to w komentarzach! Wreszcie, możesz po prostu pisać programy bezpośrednio w AVR-C i kompilować je na Pi za pomocą avr-gcc, co daje kompletną platformę programistyczną AVR w Raspberry Pi. Zrobiłem trochę tego i jeśli chcesz iść tą drogą, pozdrawiam cię. Migaj!

Zalecana: