Linux / Mac AVR Programming Suite?

11

Je code et utilise Arduinos depuis un certain temps maintenant. Cependant, je suis prêt à passer à l'utilisation de puces AVR droites sans le chargeur de démarrage Arduino. Ma question est quelles sont les ressources pour le faire?

Je veux utiliser linux / mac afin que winavr soit hors de l'image comme l'est avrstudio. S'il n'y a rien de tel que je suis après, je me contenterai d'une machine virtuelle Windows. Mais jusqu'à ce que je sache avec certitude. Ce que je veux, c'est un type d'IDE qui utilise avr-gcc.

En prime à cette question, quelqu'un a-t-il de bonnes ressources pour apprendre le C pour avr? Plus précisément, comment configurer les Makefiles, etc. pour les différentes puces différentes?

ril3y
la source

Réponses:

7

Je suis d'accord avec zklapow mais vérifiez aussi la section des projets sur AVR Freaks. C'est ainsi que j'ai appris la veille des Arduinos. En outre, vous devrez presque certainement lire la fiche technique de votre puce pour faire quoi que ce soit d'utile. Il n'y a pas de fonctions intéressantes qui, par exemple, lisent une broche analogique car il y a tellement de paramètres que l'environnement Arduino vous cache. Laisse moi te donner un exemple:

 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
 }

est à peu près similaire au C suivant (non testé):

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

Bien sûr, il existe des fonctions de retard dans certaines bibliothèques et il peut y avoir des fonctions de sortie dans d'autres, mais habituez-vous à écrire du code comme celui-ci. La seule façon de savoir ce que signifient tous ces trucs PORTB et DDRB est de lire la fiche technique. Je suis désolé de bourdonner à ce sujet, mais pas assez de gens se rendent compte que la fiche technique est une mine d'or pour information.

Jeremy
la source
Je voudrais apporter une correction à votre code, lorsque vous définissez DDRB, vous devez utiliser DDRB | = (1 << 6) afin de ne pas affecter d'autres bits.
zklapow
Une fonction delay_ms () est également disponible. Mais en général, dans les programmes plus complexes, vous ne voulez généralement pas de retards de codage dur dans votre application.
davr
7

Vous devriez également consulter Eclipse pour C / C ++ et le plugin AVR-Eclipse. Fonctionne parfaitement pour moi, en particulier avec le crosspack. Je l'utilise depuis environ un an maintenant et j'aime vraiment ça.

Matière interactive
la source
Obtenez le plugin avr-eclipse, il s'intègre bien avec avrdude et avr-gcc afin que vous vous retrouviez avec un bel IDE au-dessus d'un bon compilateur gratuit.
dren.dk
la configuration du microcontrôleur Eclipse sera également une bonne passerelle pour utiliser les microcontrôleurs ARM. Une bien meilleure alternative que d'obtenir un IDE AVR uniquement.
lyncas
4

J'utilise également le CrossPack d'ObDev . C'est un excellent regroupement de tous les outils nécessaires pour écrire du code AVR-GCC C. Ce sont les mêmes outils présents dans une installation Arduino standard, donc j'ai parfois utilisé les tripes du système de construction Arduino pour écrire du code AVR-GCC simple.

Normalement, lorsque j'écris du code C, l '"IDE" que j'utilise est un éditeur de texte, des commandes de ligne de commande et des Makefiles. Je suis juste plus efficace de cette façon. J'ai une fenêtre ouverte qui est l'éditeur de texte (emacs), une autre fenêtre qui est la compilation, et une troisième ou quatrième qui fait un moniteur série ou similaire. Mais tout cela peut être fait dans une seule fenêtre de ligne de commande, auquel cas les commandes ressemblent à quelque chose comme:

% emacs foo.c [modifier le fichier]
% make [code de compilation]
% faire flash [télécharger sur puce]
% screen /dev/tty.usbserial 9600 [parler à la puce]
... puis répétez au besoin ...

En outre, vous voudrez peut-être consulter SmileyMicros.com . Il a écrit un très bon livre sur l'introduction de la programmation AVR GCC basé sur la carte AVR Butterfly, avant l'Arduino, et a depuis mis à jour ses exemples pour incorporer Arduino. C'est une belle comparaison pour voir comment la programmation AVR C se fait sur une puce plus complexe que celle d'Arduino.

todbot
la source
3

Depuis que vous utilisez l'Arduino, tout ce dont vous avez besoin est déjà installé. Je compile des croquis Arduino à partir de la ligne de commande en utilisant un Makefile. Je compile également du code sans le chargeur de démarrage Arduino.

Le Makefile que j'utilise pour compiler le chargeur de démarrage Arduino pour mes cartes se trouve à http://wiblocks.luciani.org/docs/app-notes/bootloader.html Vous pouvez le modifier pour compiler votre programme plutôt que le fichier ATmegaBOOT_xx8.c.

Mon Makefile est modifié à partir du fichier que j'ai trouvé sur ce site - http://mjo.tc/atelier/2009/02/arduino-cli.html

En répondant à cette même question (hier seulement) sur twitter, je suis tombé sur un makefile chez dorbotpdx. Voir http://dorkbotpdx.org/blog/ax/arduino_0017_makefile

Il existe également un script shell bien documenté sur http://arkku.com/misc/arduino_make.sh

J'utiliserais probablement un Makefile plutôt qu'un script shell. Le boursier qui a fait ce script a fait un excellent travail pour commenter le flux. C'est un travail juste pour comprendre le flux.

jluciani
la source
Je n'ai pas pu faire fonctionner arduino_make.sh avec OSX 10.6 parce que 'awk -v' ne fonctionne pas comme prévu sur OSX et il l'utilise partout.
terrasse
Sa question ne concernait pas Arduino, mais l'utilisation d'avr-gcc et d'avrdude sur Linux
dren.dk
2

J'ai trouvé CodeLite (www.codelite.org) IDE sympa et complet; encore, pour programmer les micropuces AVR, vous devez créer votre propre Makefile.

Vous pouvez essayer l' Assistant BeRTOS , qui créera un projet BeRTOS et des Makefiles associés, que vous pourrez ensuite utiliser avec CodeLite. Pour flasher votre cible, utilisez simplement "make flash" et vous avez terminé. Nous travaillons sur Linux quotidiennement, si vous avez d'autres questions, veuillez les poster sur la liste de diffusion. Avertissement: je suis un développeur BeRTOS.

Cordialement, Luca

Luca Ottaviano
la source
Clause de non-responsabilité, CodeLite est un excellent outil. Vous n'avez pas besoin d'utiliser 'make flash' si vous configurez CodeLite pour fonctionner avec votre système de build. Code :: Blocks a un potentiel similaire.
Kevin Vermeer
2

Si vous avez installé Macports, vous pouvez simplement exécuter:

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

et vous devriez être prêt à partir.

trondd
la source
2

Si vous demandez à votre système de packages d'installer avr-libc, cela devrait vous donner tout ce dont vous avez besoin. J'utilise emacs comme mon IDE, cos, eh bien, voir nom d'utilisateur.

Si vous voulez un makefile de modèle, jetez un œil à l'un de mes projets sur github, par exemple https://github.com/unixbigot/pir-lite

Dans ce repo avr-tmpl.mk est une bibliothèque de makefile prête à l'emploi (non écrite par moi). Vous l'incluez à partir de votre makefile principal et vous n'avez qu'à définir quelle puce vous avez, la vitesse d'horloge et vos fichiers. J'en ai une copie et je l'inclus à partir de tous les makefiles de mon projet.

"make program" appellera avrdude pour télécharger le code. Le makefile imprime également la taille du code à la fin, vous savez donc combien de place il vous reste.

Christopher Biggs
la source
0

J'ai programmé mon 'ancien' Duemanilove 'comme FAI à l'aide de cet article: http://arduino.cc/en/Tutorial/ArduinoISP Cela fonctionne aussi bien avec ATtiny: http://hlt.media.mit.edu/? p = 1229

Attention, lorsque vous utilisez Arduino IDE 0022, vous devez mettre à niveau le croquis ArduinoISP vers une version plus récente, en raison de la prévention du spam, j'ai déplacé ce lien vers les commentaires ci-dessous.

J'ai fait la programmation dans un éditeur de texte (vi) et compilé en utilisant avr-gcc comme décrit dans l'article mit.edu que j'ai lié.

jippie
la source
la prévention du spam m'a fait mentionner le lien vers le récent ArduinoISP dans les commentaires:: code.google.com/p/mega-isp/downloads/…
jippie
0

Hé mec, tu peux toujours utiliser avrstudio dans ubuntu. En pensant comment pouvez-vous faire cela .....

La réponse est simplement d'installer l'application Wine et d'exécuter ces logiciels Windows avec Wine.

Avr studio, proteus ... même des jeux de fenêtres peuvent être exécutés dans ubuntu avec wine.

Vous n'avez même pas besoin de jouer avec les makefiles blah blah (installez simplement avec wine et commencez)

Il existe de nombreux sites pour démarrer avec les microcontrôleurs avr comme l'extremeelectronics, les didacticiels AVR, etc. Il suffit de lancer une recherche Google.

Je dirai en détail comment installer avrstudio 4 dans wine car avrstudio 5 et 6 ne fonctionne pas avec, mais vous pouvez utiliser virtual box sous linux pour exécuter même avr stud 5 et 6 avec des fenêtres sur virtual box.

  1. Ouvrez le centre du logiciel Ubuntu et tapez wine dans la recherche, puis installez-le.

  2. Ensuite, obtenez la configuration pour avrstudio4 et vous devez également installer win avr

    essayez ces liens pour

une. 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.Ouvrez le dossier où se trouve la configuration pour AS (avr studio 4) puis cliquez avec le bouton droit et ouvrez-le avec "Windows Wine Program Loader" ou "une application Wine".

4. Ensuite, vous devez cliquer sur les boutons suivants comme vous le feriez dans Windows.

5.Ensuite, installez win avr de la même manière avec wine (allez dans la configuration win avr ....).

6.Téléchargez l'indicateur de menu classique depuis le centre du logiciel Ubuntu. Vous en saurez plus en seulement cinq minutes.

7.Dans le menu classique -> vin -> Programmes -> outils avr

la sixième étape est une étape supplémentaire pour que vous n'ayez pas à vous soucier de l'emplacement de l'option exécutable avrstudio4 dans le dossier wine.

Jasser
la source
Cette réponse serait plus utile si elle contenait des détails / liens sur la façon de l'exécuter sous Wine. Le dernier Atmel Studio est basé sur Microsoft Visual Studio qui, je crois, ne fonctionne pas bien sous Wine, mais je peux me tromper.
PeterJ
J'ai édité la réponse @PeterJ
Jasser