Linux / Mac AVR Programming Suite?


11

Od dłuższego czasu koduję i korzystam z Arduinos. Jestem jednak gotowy przejść do korzystania z prostych układów AVR bez programu ładującego arduino. Moje pytanie brzmi, jakie są zasoby, aby to zrobić?

Chcę użyć linux / mac, więc winavr nie ma obrazu, podobnie jak avrstudio. Jeśli nie ma czegoś takiego jak to, czym jestem po, zadowolę się maszyną wirtualną z systemem Windows. Ale dopóki się nie dowiem. To, czego chcę, to jakiś rodzaj IDE, który używa avr-gcc.

Jako bonus do tego pytania, czy ktoś ma jakieś dobre zasoby na naukę C dla avr? W szczególności, jak skonfigurować Makefile itp. Dla różnych układów?

Odpowiedzi:


7

Zgadzam się z Zklapow, ale sprawdź także sekcję projektów AVR Freaks. Tak nauczyłem się w przeddzień arduinos. Ponadto prawie na pewno będziesz musiał przeczytać arkusz danych swojego układu, aby zrobić coś pożytecznego. Nie ma ładnych funkcji, które na przykład wczytują pin analogowy, ponieważ istnieje tak wiele parametrów, że środowisko arduino ukrywa przed tobą. Dam ci przykład:

 int ledPin =  13;    // LED connected to digital pin 13
 // The setup() method runs once, when the sketch starts
 void setup()   {                
   // initialize the digital pin as an output:
   pinMode(ledPin, OUTPUT);     
 }
 // the loop() method runs over and over again,
 // as long as the Arduino has power
 void loop()                     
 {
   digitalWrite(ledPin, HIGH);   // set the LED on
   delay(1000);                  // wait for a second
   digitalWrite(ledPin, LOW);    // set the LED off
   delay(1000);                  // wait for a second
 }

jest z grubsza podobny do następującego C (nie testowano):

int main(void) {
    // I just randomly picked pin 6 on PORTB, this may not be the same on an arduino
    DDRB = (1<<6); // set pin to output in data direction register
    int i; // have to do this outside the for loop because of C standard

    while(1) {
        PORTB |= (1<<6); // send pin 6 high and leave other pins in their current state
        for (i=0; i<10000; i++); // delay

        PORTB &= ~(1<<6); // send pin 6 low
        for (i=0; i<10000; i++); // delay
    }
}

Jasne, w niektórych bibliotekach są funkcje opóźniające, aw innych mogą występować funkcje wyjściowe, ale przyzwyczaj się do pisania takiego kodu. Jedynym sposobem, aby dowiedzieć się, co oznaczają wszystkie te elementy PORTB i DDRB, jest przeczytanie arkusza danych. Przykro mi z tego powodu, ale mało osób zdaje sobie sprawę, że arkusz danych jest kopalnią złota dla informacji.


Dokonałbym jednej korekty twojego kodu, kiedy ustawiasz DDRB, powinieneś użyć DDRB | = (1 << 6), aby nie wpływać na inne bity.
zklapow

Dostępna jest również funkcja delay_ms (). Ale ogólnie rzecz biorąc, w bardziej złożonych programach zwykle nie chcesz mieć opóźnień w kodowaniu twardym w swojej aplikacji.
David

7

Powinieneś także sprawdzić Eclipse dla C / C ++ i wtyczkę AVR-Eclipse. Działa dla mnie bezbłędnie, szczególnie z crossspackiem. Używam go od około roku i bardzo mi się podoba.


Pobierz wtyczkę avr-eclipse, ładnie integruje się z avrdude i avr-gcc, dzięki czemu uzyskasz dobre IDE na dobrym, darmowym kompilatorze.
dren.dk

konfiguracja mikrokontrolera Eclipse będzie dobrą bramą do korzystania z mikrokontrolerów ARM. Znacznie lepsza alternatywa niż uzyskanie IDE tylko dla AVR.
lyncas

4

Używam również ObDev's CrossPack . To świetne połączenie wszystkich narzędzi potrzebnych do napisania kodu AVR-GCC C. Są to te same narzędzia, które występują w standardowej instalacji Arduino, więc czasami używałem odwagi systemu kompilacji Arduino do pisania zwykłego kodu AVR-GCC.

Zwykle, gdy piszę kod C, używam „IDE” to edytor tekstu, polecenia wiersza poleceń i pliki Makefiles. Jestem po prostu bardziej wydajny. Mam jedno otwarte okno, które jest edytorem tekstu (emacs), kolejne okno, które jest kompilowane, a trzecie lub czwarte, które robi monitor szeregowy lub podobny. Ale wszystko to można zrobić w jednym oknie wiersza polecenia, w którym to przypadku polecenia wyglądają mniej więcej tak:

% emacs foo.c [edycja pliku]
% make [kod kompilacji]
% make flash [prześlij na chip]
% screen /dev/tty.usbserial 9600 [talk to chip]
... a następnie powtórz w razie potrzeby ...

Możesz także sprawdzić SmileyMicros.com . Napisał naprawdę fajną książkę o wstępnym programowaniu AVR GCC opartym na płycie AVR Butterfly, przed Arduino, i od tego czasu aktualizuje swoje przykłady, aby włączyć Arduino. To miłe porównanie, aby zobaczyć, jak programowanie AVR C odbywa się na bardziej złożonym układzie niż ten w Arduino.



3

Ponieważ korzystasz z Arduino, wszystko czego potrzebujesz jest już zainstalowane. Kompiluję szkice Arduino z linii poleceń za pomocą Makefile. Kompiluję również kod bez bootloadera Arduino.

Makefile, którego używam do kompilacji programu ładującego Arduino dla moich płyt, znajduje się pod adresem http://wiblocks.luciani.org/docs/app-notes/bootloader.html Możesz go zmodyfikować, aby skompilować program, a nie plik ATmegaBOOT_xx8.c.

Mój plik Makefile został zmodyfikowany z pliku znalezionego na tej stronie - http://mjo.tc/atelier/2009/02/arduino-cli.html

Odpowiadając na to samo pytanie (wczoraj;) na Twitterze, natknąłem się na makefile na dorbotpdx. Zobacz http://dorkbotpdx.org/blog/ax/arduino_0017_makefile

Istnieje również dobrze udokumentowany skrypt powłoki na stronie http://arkku.com/misc/arduino_make.sh

Prawdopodobnie użyłbym raczej Makefile niż skryptu powłoki. Osoba, która wykonała ten skrypt, wykonała świetną robotę, komentując przebieg. To praca wygląda tylko po to, aby zrozumieć przepływ.


Nie byłem w stanie sprawić, aby arduino_make.sh działał w systemie OSX 10.6, ponieważ „awk -v” nie działa zgodnie z oczekiwaniami w OSX i używa go wszędzie.
taras

Jego pytanie nie dotyczyło Arduino, ale używania avr-gcc i avrdude w Linuksie
dren.dk

2

Znalazłem CodeLite (www.codelite.org) IDE ładny i w pełni funkcjonalny; jednak, aby zaprogramować mikroczipy AVR, musisz stworzyć swój własny Makefile.

Możesz wypróbować BeRTOS Wizard , który utworzy projekt BeRTOS i powiązane pliki Makefile, których możesz następnie użyć z CodeLite. Aby sflashować swój cel, po prostu użyj „make flash” i gotowe. Codziennie pracujemy w systemie Linux, jeśli masz dodatkowe pytania, umieść je na liście mailingowej. Oświadczenie: Jestem programistą BeRTOS.

Pozdrawiam, Luca


Poza oświadczeniem, CodeLite jest doskonałym narzędziem. Nie musisz używać „make flash”, jeśli skonfigurujesz CodeLite do pracy z systemem kompilacji. Code :: Blocks ma podobny potencjał.
Kevin Vermeer

2

Jeśli masz zainstalowany Macports , możesz po prostu uruchomić:

$ sudo port install avr-binutils avr-gcc avr-libc avrdude 

i powinieneś być gotowy do drogi.


2

Jeśli poprosisz system pakietów o zainstalowanie avr-libc, powinno to dać ci wszystko, czego potrzebujesz. Używam emacsa jako mojego IDE, bo cóż, patrz nazwa użytkownika.

Jeśli chcesz makefile szablonu, spójrz na jeden z moich projektów na github, np. Https://github.com/unixbigot/pir-lite

W tym repozytorium avr-tmpl.mk jest gotową biblioteką makefile (nie napisaną przeze mnie). Dołączasz go z głównego pliku makefile i musisz tylko określić, jaki masz układ, szybkość zegara i pliki. Mam jedną jego kopię i dołączam ją ze wszystkich plików mak projektu.

„make program” wywoła avrdude, aby pobrać kod. Makefile drukuje również rozmiar kodu na końcu, dzięki czemu wiesz, ile pozostało ci miejsca.


0

Zaprogramowałem mój „stary” Duemanilove jako ISP za pomocą tego artykułu: http://arduino.cc/en/Tutorial/ArduinoISP Działa równie dobrze z ATtiny: http://hlt.media.mit.edu/? p = 1229

Pamiętaj, że korzystając z Arduino IDE 0022, musisz uaktualnić szkic ArduinoISP do nowszej wersji, ze względu na zapobieganie spamowi przeniosłem ten link do poniższych komentarzy.

Programowałem w edytorze tekstu (vi) i skompilowałem przy użyciu avr-gcc, jak opisano w linku do mit.edu.


zapobieganie spamowi zmusiło mnie do wspomnienia o linku do najnowszego ArduinoISP w komentarzach:: code.google.com/p/mega-isp/downloads/…
jippie

0

Hej koleś, nadal możesz używać avrstudio w Ubuntu. Myślisz, jak możesz to zrobić .....

Odpowiedź polega na zainstalowaniu aplikacji do wina i uruchomieniu oprogramowania Windows z Wine.

Avr studio, proteus ... nawet gry Windows można uruchamiać w Ubuntu z winem.

Nie musisz nawet zadzierać z makefiles bla bla. (Wystarczy zainstalować wino i zacząć).

Istnieje wiele witryn, na których można rozpocząć pracę z MCU AVR, takich jak Extremeelectronics, samouczki AVR itp. Wystarczy wyszukać w Google.

Opowiem szczegółowo, jak zainstalować avrstudio 4 w winie, ponieważ avrstudio 5 i 6 nie działa z nim, ale możesz użyć wirtualnego boxa w systemie Linux, aby uruchomić nawet avr stud 5 i 6 z oknami na wirtualnym boxie.

  1. Otwórz centrum oprogramowania Ubuntu i wpisz wino w wyszukiwaniu, a następnie zainstaluj je.

  2. Następnie uzyskaj konfigurację avrstudio4, a także musisz zainstalować win avr

    wypróbuj te linki dla

za. avr studio 4 http://mycomsats.com/blogs/download-atmel-avr-studio-4-free/

b. win avr http://sourceforge.net/projects/winavr/files/WinAVR/20100110/WinAVR-20100110-install.exe/download?use_mirror=kaz&r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fwinavr%2Ffiles% 2F i use_mirror = kaz

3. Otwórz folder, w którym znajduje się konfiguracja AS (avr studio 4), a następnie kliknij prawym przyciskiem myszy, a następnie otwórz go za pomocą „programu ładującego program do wina dla systemu Windows” lub „aplikacji do wina”.

4. Następnie musisz kliknąć kolejne przyciski, tak jak w Windows.

5. Następnie ponownie zainstaluj win avr podobnie do wina (przejdź do konfiguracji win avr ....).

6. Pobierz klasyczny wskaźnik menu z centrum oprogramowania Ubuntu. Dowiesz się o tym za pięć minut.

7. Z klasycznego menu -> wino -> Programy -> narzędzia avr

szósty krok jest dodatkowym krokiem, dzięki czemu nie musisz bałagać się, gdzie w folderze wine znajduje się opcja wykonywalna avrstudio4.


Ta odpowiedź byłaby bardziej przydatna, gdyby zawierała szczegółowe informacje / linki dotyczące uruchamiania jej w Wine. Najnowsze Atmel Studio oparte jest na Microsoft Visual Studio, które moim zdaniem nie działa dobrze pod Wine, ale mogę się mylić.
PeterJ

Zredagowałem odpowiedź @PeterJ
Jasser
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.