Linux / Mac AVR-Programmiersuite?

Ich programmiere und benutze Arduinos schon seit geraumer Zeit. Ich bin jedoch bereit, auf die Verwendung von reinen AVR-Chips ohne den Arduino-Bootloader umzusteigen. Meine Frage ist, was sind die Ressourcen, um dies zu tun?

Ich möchte Linux / Mac verwenden, also ist winavr ebenso aus dem Bild wie avrstudio. Wenn es so etwas wie das, wonach ich suche, 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.

Als Bonus zu dieser Frage hat jemand gute Ressourcen zum Erlernen von C für avr? Wie konfiguriere ich speziell Makefiles usw. für die verschiedenen Chips?

Antworten (10)

Ich stimme zklapow zu, aber sieh dir auch den Projektabschnitt auf AVR Freaks an. So habe ich es damals vor Arduinos gelernt. Außerdem müssen Sie mit ziemlicher Sicherheit das Datenblatt für Ihren Chip lesen, um etwas Nützliches zu erreichen. Es gibt keine netten Funktionen, die zum Beispiel einen analogen Pin einlesen, weil es so viele Parameter gibt, die dir die Arduino-Umgebung verbirgt. 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 in etwa dem folgenden C ähnlich (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, in einigen Bibliotheken gibt es Verzögerungsfunktionen und in anderen möglicherweise Ausgabefunktionen, aber gewöhnen Sie sich daran, solchen Code zu schreiben. Der einzige Weg, wie Sie möglicherweise wissen können, was all dieses PORTB- und DDRB-Zeug bedeutet, besteht darin, das Datenblatt zu lesen. Es tut mir leid, darüber zu reden, aber nicht genug Leute erkennen, dass das Datenblatt eine Goldgrube für Informationen ist.

Ich würde eine Korrektur an Ihrem Code vornehmen, wenn Sie DDRB einstellen, sollten Sie DDRB |=(1<<6) verwenden, um andere Bits nicht zu beeinflussen.
Außerdem ist eine delay_ms()-Funktion verfügbar. Aber im Allgemeinen möchten Sie in komplexeren Programmen normalerweise keine Verzögerungen fest in Ihre App codieren.

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

Holen Sie sich das avr-eclipse-Plugin, es lässt sich gut in avrdude und avr-gcc integrieren, sodass Sie am Ende eine schöne IDE auf einem guten, kostenlosen Compiler haben.
Das Eclipse-Mikrocontroller-Setup ist auch ein guter Einstieg in die Verwendung von ARM-Mikrocontrollern. Viel bessere Alternative als eine reine AVR-IDE.

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

Wenn ich C-Code schreibe, verwende ich normalerweise einen Texteditor, Befehlszeilenbefehle und Makefiles. So bin ich einfach effizienter. Ich habe ein Fenster geöffnet, das ist der Texteditor (emacs), ein anderes Fenster, das Kompilierung ist, und ein drittes oder viertes, das serielle Überwachung oder ähnliches macht. Aber all das kann in einem einzigen Befehlszeilenfenster erledigt werden, in diesem Fall sehen die Befehle in etwa so aus:

% emacs foo.c [Datei bearbeiten]
% make [Kompiliercode]
% Flash erstellen [auf Chip hochladen]
% screen /dev/tty.usbserial 9600 [mit Chip sprechen]
... und dann bei Bedarf wiederholen ...

Sie können auch SmileyMicros.com besuchen . Er hat ein wirklich nettes Buch über die AVR-GCC-Intro-Programmierung geschrieben, die auf dem AVR-Butterfly-Board vor dem Arduino basiert, und hat seitdem seine Beispiele aktualisiert, um Arduino zu integrieren. Es ist ein schöner Vergleich, um zu sehen, wie die AVR-C-Programmierung auf einem komplexeren Chip als dem in Arduino erfolgt.

Wenn Sie Crosspack installieren, können Sie Apples Xcode für Mac verwenden, das eine großartige IDE ist. Wenn Sie c für AVR lernen möchten, schauen Sie sich das Tutorials-Forum bei AVR Freaks an . Sehen Sie sich auch diese Frage für Linux an .

Da Sie den Arduino verwenden, ist alles, was Sie brauchen, bereits installiert. Ich kompiliere Arduino-Skizzen von der Befehlszeile aus mit einem Makefile. Ich kompiliere auch Code ohne den Arduino-Bootloader.

Das Makefile, das ich zum Kompilieren des Arduino-Bootloaders für meine Boards verwende, befindet sich unter http://wiblocks.luciani.org/docs/app-notes/bootloader.html . Sie können es ändern, um Ihr Programm anstelle der Datei ATmegaBOOT_xx8.c zu kompilieren.

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

Bei der Beantwortung derselben Frage (erst gestern;) auf Twitter bin ich auf ein Makefile bei dorbotpdx gestoßen. 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 einen Blick darauf zu werfen, um den Fluss zu verstehen.

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.
Seine Frage bezog sich nicht auf Arduino, sondern auf die Verwendung von avr-gcc und avrdude unter Linux

Ich fand die CodeLite (www.codelite.org) IDE nett und voll ausgestattet; Dennoch müssen Sie zum Programmieren von AVR-Mikrochips 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 "Make Flash" und Sie sind fertig. Wir arbeiten täglich an Linux, wenn Sie weitere Fragen haben, posten Sie diese bitte auf der Mailingliste. Haftungsausschluss: Ich bin ein BeRTOS-Entwickler.

Viele Grüße Luca

Abgesehen vom Haftungsausschluss ist CodeLite ein großartiges Tool. Sie müssen „Make Flash“ nicht verwenden, wenn Sie CodeLite so konfigurieren, dass es mit Ihrem Build-System funktioniert. Code::Blocks hat ein ähnliches Potenzial.

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

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

und Sie sollten bereit sein zu gehen.

Wenn Sie Ihr Paketsystem bitten, avr-libc zu installieren, sollte Ihnen das alles geben, was Sie brauchen. Ich verwende emacs als meine IDE, weil, naja, siehe Benutzername.

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

In diesem Repo ist avr-tmpl.mk eine handelsübliche Makefile-Bibliothek (nicht von mir geschrieben). Sie binden es aus Ihrem Haupt-Makefile ein und müssen nur noch 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 gibt am Ende auch die Codegröße aus, damit Sie wissen, wie viel Platz Sie noch haben.

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

Wohlgemerkt, wenn Sie Arduino IDE 0022 verwenden, müssen Sie den ArduinoISP-Sketch auf eine neuere Version aktualisieren. Aufgrund von Spam-Schutz habe ich diesen Link in die Kommentare 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.

Spam-Schutz veranlasste mich, den Link zum aktuellen ArduinoISP aus den Kommentaren zu erwähnen: : code.google.com/p/mega-isp/downloads/…

Hey Alter, du kannst immer noch avrstudio in Ubuntu verwenden. Überlege, wie kannst du das machen.....

Die Antwort lautet: Installieren Sie einfach die Wine-Anwendung und führen Sie diese Windows-Software mit Wine aus.

avr studio, proteus ... sogar spiele von windows lassen sich in ubuntu mit wine ausführen.

Sie müssen sich nicht einmal mit den Makefiles blah blah herumschlagen (einfach mit Wine installieren und loslegen).

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

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

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

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

    versuchen Sie diese Links für

a. 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&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 dann mit „Windows Wine Program Loader“ oder „A Wine Application“.

4. Dann müssen Sie auf die nächsten Schaltflächen klicken, wie Sie es in Windows tun würden.

5.Dann win avr wieder ähnlich mit wine installieren (in das win avr setup gehen ....).

6. Laden Sie die klassische Menüanzeige aus dem Ubuntu Software Center herunter. Sie erfahren es in nur fünf Minuten.

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

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

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.
Ich habe die Antwort @PeterJ bearbeitet