Linux / Mac AVR Programming Suite?

11

Ich programmiere und benutze Arduinos seit einiger Zeit. Ich bin jedoch bereit, gerade AVR-Chips ohne den Arduino-Bootloader zu verwenden. Meine Frage ist, was sind Ressourcen, um dies zu tun?

Ich möchte Linux / Mac verwenden, damit winavr nicht im Bilde ist, ebenso wie avrstudio. Wenn es so etwas wie das, wonach ich bin, nicht gibt, werde ich mich mit einer virtuellen Windows-Maschine zufrieden geben. Aber bis ich es sicher weiß. Was ich will, ist eine Art IDE, die avr-gcc verwendet.

Hat jemand als Bonus auf diese Frage gute Ressourcen, um C für avr zu lernen? Speziell, wie man Makefiles usw. für die verschiedenen Chips konfiguriert?

ril3y
quelle

Antworten:

7

Ich stimme zklapow zu, überprüfe aber auch den Projektabschnitt zu AVR Freaks. So habe ich am Tag vor den Arduinos gelernt. Außerdem müssen Sie mit ziemlicher Sicherheit das Datenblatt für Ihren Chip lesen, um nützliche Aufgaben zu erledigen. Es gibt keine netten Funktionen, die zum Beispiel einen analogen Pin einlesen, weil es so viele Parameter gibt, dass die Arduino-Umgebung vor Ihnen verborgen bleibt. Lassen Sie mich Ihnen ein Beispiel geben:

 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
 }

ist ungefähr ähnlich dem folgenden C (nicht getestet):

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
    }
}

Sicher, es gibt Verzögerungsfunktionen in einigen Bibliotheken und möglicherweise Ausgabefunktionen in anderen, aber gewöhnen Sie sich daran, Code wie diesen zu schreiben. Der einzige Weg, wie Sie möglicherweise wissen können, was all dieses PORTB- und DDRB-Zeug bedeutet, ist das Lesen des Datenblattes. Es tut mir leid, darüber nachzudenken, aber nicht genug Leute erkennen, dass das Datenblatt eine Goldmine für Informationen ist.

Jeremy
quelle
Ich würde eine Korrektur an Ihrem Code vornehmen. Wenn Sie DDRB setzen, sollten Sie DDRB | = (1 << 6) verwenden, um keine anderen Bits zu beeinflussen.
Zklapow
Außerdem ist eine Funktion delay_ms () verfügbar. Im Allgemeinen möchten Sie in komplexeren Programmen jedoch keine Verzögerungen bei der Codierung Ihrer App verursachen.
Davr
7

Sie sollten auch Eclipse für C / C ++ und das AVR-Eclipse-Plugin ausprobieren. Funktioniert einwandfrei für mich, besonders mit Crosspack. Ich benutze es jetzt seit ungefähr einem Jahr und ich mag es wirklich.

Interaktive Materie
quelle
Holen Sie sich das avr-eclipse-Plugin, es lässt sich gut in avrdude und avr-gcc integrieren, sodass Sie eine nette IDE auf einem guten, kostenlosen Compiler haben.
dren.dk
Das Eclipse-Mikrocontroller-Setup ist auch ein gutes Gateway für die Verwendung von ARM-Mikrocontrollern. Viel bessere Alternative als eine reine AVR-IDE.
Lyncas
4

Ich benutze auch ObDevs CrossPack . Es ist eine großartige Bündelung aller Tools, die zum Schreiben von AVR-GCC C-Code benötigt werden. Es handelt sich um dieselben Tools, die in einer Standard-Arduino-Installation vorhanden sind. Daher habe ich manchmal den Mut des Arduino-Build-Systems verwendet, um einfachen AVR-GCC-Code zu schreiben.

Normalerweise verwende ich beim Schreiben von C-Code einen Texteditor, Befehlszeilenbefehle und Makefiles. Auf diese Weise bin ich einfach effizienter. Ich habe ein Fenster geöffnet, das der Texteditor (Emacs) ist, ein anderes Fenster, das kompiliert wird, und ein drittes oder viertes Fenster, das einen seriellen Monitor oder ähnliches ausführt. All dies kann jedoch in einem einzigen Befehlszeilenfenster ausgeführt werden. In diesem Fall sehen die Befehle ungefähr so ​​aus:

% emacs foo.c [Datei bearbeiten]
% make [Code kompilieren]
% Flash machen [auf Chip hochladen]
% screen /dev/tty.usbserial 9600 [mit Chip sprechen]
... und dann nach Bedarf wiederholen ...

Vielleicht möchten Sie auch SmileyMicros.com besuchen . Er hat vor dem Arduino ein wirklich schönes Buch über die Einführung von AVR GCC-Programmen auf der Grundlage des AVR Butterfly-Boards geschrieben und seitdem seine Beispiele aktualisiert, um Arduino aufzunehmen. Es ist ein schöner Vergleich, um zu sehen, wie die AVR C-Programmierung auf einem komplexeren Chip als dem in Arduino durchgeführt wird.

todbot
quelle
3

Da Sie das Arduino verwendet haben, ist alles, was Sie benötigen, bereits installiert. Ich kompiliere Arduino-Skizzen über die Kommandozeile mit einem Makefile. Ich kompiliere auch Code ohne den Arduino Bootloader.

Das Makefile, mit dem ich den Arduino-Bootloader für meine Boards kompiliere, befindet sich unter http://wiblocks.luciani.org/docs/app-notes/bootloader.html. Sie können es so ändern, dass Ihr Programm kompiliert wird und nicht die Datei ATmegaBOOT_xx8.c.

Mein Makefile wurde von der Datei geändert, die ich auf dieser Site gefunden habe - http://mjo.tc/atelier/2009/02/arduino-cli.html

Als ich dieselbe Frage (erst gestern;) auf Twitter beantwortete, stieß ich bei dorbotpdx auf ein Makefile. Siehe http://dorkbotpdx.org/blog/ax/arduino_0017_makefile

Es gibt auch ein gut dokumentiertes Shell-Skript unter http://arkku.com/misc/arduino_make.sh

Ich würde wahrscheinlich eher ein Makefile als ein Shell-Skript verwenden. Der Typ, der dieses Skript erstellt hat, hat den Ablauf hervorragend kommentiert. Es ist Arbeit, nur um den Fluss zu verstehen.

jluciani
quelle
Ich konnte arduino_make.sh nicht mit OSX 10.6 zum Laufen bringen, da 'awk -v' unter OSX nicht wie erwartet funktioniert und er es überall verwendet.
Terrasse
Seine Frage war nicht über Arduino, sondern über die Verwendung von avr-gcc und avrdude unter Linux
dren.dk
2

Ich fand CodeLite (www.codelite.org) IDE nett und voll ausgestattet; Um AVR-Mikrochips zu programmieren, müssen Sie jedoch Ihr eigenes Makefile erstellen.

Sie können den BeRTOS-Assistenten ausprobieren , der ein BeRTOS-Projekt und zugehörige Makefiles erstellt, die Sie dann mit CodeLite verwenden können. Um Ihr Ziel zu flashen, verwenden Sie einfach "Blitz machen" und Sie sind fertig. Wir arbeiten täglich unter Linux. Wenn Sie weitere Fragen haben, veröffentlichen Sie diese bitte auf der Mailingliste. Haftungsausschluss: Ich bin ein BeRTOS-Entwickler.

Viele Grüße, Luca

Luca Ottaviano
quelle
Abgesehen vom Haftungsausschluss ist CodeLite ein großartiges Tool. Sie müssen 'make flash' nicht verwenden, wenn Sie CodeLite für die Verwendung mit Ihrem Build-System konfigurieren. Code :: Blocks hat ein ähnliches Potenzial.
Kevin Vermeer
2

Wenn Sie Macports installiert haben, können Sie einfach Folgendes ausführen:

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

und du solltest bereit sein zu gehen.

trondd
quelle
2

Wenn Sie Ihr Paketsystem bitten, avr-libc zu installieren, sollte dies Ihnen alles geben, was Sie brauchen. Ich benutze Emacs als meine IDE, denn siehe Benutzername.

Wenn Sie ein Vorlagen-Makefile möchten, schauen Sie sich eines meiner Projekte auf github an, z. B. https://github.com/unixbigot/pir-lite

In diesem Repo ist avr-tmpl.mk eine handelsübliche Makefile-Bibliothek (nicht von mir geschrieben). Sie fügen es aus Ihrem Haupt-Makefile hinzu und müssen nur definieren, welchen Chip Sie haben, die Taktrate und Ihre Dateien. Ich habe eine Kopie davon und füge sie aus allen meinen Projekt-Makefiles hinzu.

"make program" ruft avrdude auf, um den Code herunterzuladen. Das Makefile druckt auch die Codegröße am Ende aus, sodass Sie wissen, wie viel Platz Sie noch haben.

Christopher Biggs
quelle
0

Ich habe meinen 'alten' Duemanilove 'mit Hilfe dieses Artikels als ISP programmiert: http://arduino.cc/en/Tutorial/ArduinoISP Es funktioniert genauso gut mit ATtiny's: http://hlt.media.mit.edu/? p = 1229

Wenn Sie Arduino IDE 0022 verwenden, müssen Sie die ArduinoISP-Skizze auf eine neuere Version aktualisieren. Aufgrund der Spam-Prävention habe ich diesen Link zu den Kommentaren unten verschoben.

Ich habe die Programmierung in einem Texteditor (vi) durchgeführt und mit avr-gcc kompiliert, wie in dem von mir verlinkten mit.edu-Artikel beschrieben.

Jippie
quelle
Durch die Spam-Prävention habe ich den Link zum aktuellen ArduinoISP aus den Kommentaren erwähnt :: code.google.com/p/mega-isp/downloads/…
Jippie
0

Hey Mann, du kannst avrstudio immer noch in Ubuntu verwenden. Überlegen Sie, wie Sie das tun können .....

Die Antwort ist, einfach die Weinanwendung zu installieren und diese Windows-Software mit Wein auszuführen.

Avr Studio, Proteus ... sogar Fensterspiele können in Ubuntu mit Wein ausgeführt werden.

Sie müssen sich nicht einmal mit den Makefiles anlegen (einfach mit Wein installieren und loslegen).

Es gibt viele Websites, auf denen Sie mit AVR-MCUs beginnen können, z. B. Extremelektronik, AVR-Tutorials usw. Geben Sie einfach eine Google-Suche an.

Ich werde im Detail erklären, wie man avrstudio 4 in Wein installiert, da avrstudio 5 und 6 nicht damit funktionieren, aber Sie können die virtuelle Box unter Linux verwenden, um sogar avr stud 5 und 6 mit Windows auf der virtuellen Box auszuführen.

  1. Öffnen Sie das Ubuntu Software Center, geben Sie wine in die Suche ein und installieren Sie es.

  2. Dann holen Sie sich das Setup für avrstudio4 und Sie müssen auch win avr installieren

    versuchen Sie diese Links für

ein. 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%F 2F & use_mirror = kaz

3.Öffnen Sie den Ordner, in dem sich das Setup für AS (avr studio 4) befindet, klicken Sie mit der rechten Maustaste und öffnen Sie ihn mit "Windows Wine Program Loader" oder "einer Weinanwendung".

4.Dann müssen Sie wie in Windows auf die nächsten Schaltflächen klicken.

5. Installieren Sie dann win avr erneut ähnlich wie bei wine (gehen Sie in das win avr-Setup ....).

6.Downloaden Sie die klassische Menüanzeige vom Ubuntu Software Center. Sie werden es in nur fünf Minuten erfahren.

7. Aus dem klassischen Menü -> Wein -> Programme -> AVR-Tools

Der sechste Schritt ist ein zusätzlicher Schritt, damit Sie sich nicht damit herumschlagen müssen, wo sich die ausführbare Option avrstudio4 im Weinordner befindet.

Jasser
quelle
Diese Antwort wäre nützlicher, wenn sie Details / Links zur Ausführung unter Wine enthalten würde. Das neueste Atmel Studio basiert auf Microsoft Visual Studio, von dem ich glaube, dass es unter Wine nicht gut funktioniert, aber ich könnte mich irren.
PeterJ
Ich habe die Antwort @PeterJ
Jasser