[Résolu] Intégration du langage Arduino dans AVR Studio 5

capswiz:
A la place d'utiliser la librairie arduino précompilée, j'ai ajouté les sources de celle-ci à mon projet. Dans un dossier "core", tout ce qui se trouve dans arduino/hardware/arduino/cores/arduino + "pins_arduino.h" qui se trouve dans "arduino/hardware/arduino/variants/standard". J'ai fait de même avec les librairies additionnelles que j'utilise (bmp085, dht22, eeprom, liquidcrystal, sdcard, time, virtualwire et wire).

Tu devrais utiliser le core arduino 0023, il est moins encombré par des class inutile pour le moment (usb pour l'arduino leonardo etc etc).
Pour la compilation tu compile en static avec une dépendance au projet principal je suppose ?

capswiz:

  • par défaut, les fichiers ".C" ajoutés ont leur propriété "build action" à "None". Il faut mettre "Compile" à la place. (voir attachement 2)

... tu viens de résoudre mon probléme de linkage ... c'est sur que si les fichiers sont pas compilé ça marche beaucoup moins bien :stuck_out_tongue_closed_eyes:

Hello capswiz, gerse et skywodd

Je suis bien content que ce topic se réveille. j'ai hâte d'essayer les variantes proposées, en particulier la solution de capswiz, car, étant toujours bloqué par l'utilisation des librairies sous Studio5, je n'avais que la solution d'utiliser l'IDE 022 ordinaire.

Ceci dit, j'ai aussi une double si pas une triple vie en période de fêtes. D'ailleurs, je souhaite à tous de passer un excellent réveillon de nouvel an et je donne rendez-vous aux survivants pour commencer une année 2012 très hard (oui/no ?)

skywodd:
Pour la compilation tu compile en static avec une dépendance au projet principal je suppose ?

Ben non, c'est encore plus bête que ça, je copie dans chaque projet de la solution l'ensemble des fichiers de la librairie arduino... :blush: Et pour commencer une nouvelle solution je copie l'intégralité du dossier pour pas me retaper à chaque fois l'ajout des fichiers de la librairie dans le projet... Avec les disques durs actuels, on compte plus au gaspillage de méga-octets... :slight_smile:
C'est vrai que ce serait plus malin de faire, dans une même solution, un projet avec les librairies et deux autres projets pour les deux modules arduino que je fais communiquer... J'essaierai.

skywodd:
... tu viens de résoudre mon probléme de linkage ... c'est sur que si les fichiers sont pas compilé ça marche beaucoup moins bien :stuck_out_tongue_closed_eyes:

Bien content d'apporter ma très modeste contribution

Hello les amis,

Contrairement aux idées reçues, j’ai consacré une partie du 31 décembre et du 1er janvier à faire des essais avec Studio5. (Par contre, aujourd’hui, j’étais absent toute la journée).

J’ai tout d’abord essayé de suivre les indications de capswiz. Quelque chose doit m’échapper mais impossible de faire reconnaître la librairie (essai avec OneWire). Tu devrais donner plus de détails sur l’emplacement de ton répertoire « core » et tes paramètres de la tool chain.

J’ai ensuite essayé le conseil de Skywodd (« avr-gcc -c trucmachin.cpp -o trucmachin.o » en ligne de commande). Plusieurs essais dans différents répertoires avec copie préalable des fichiers à précompiler dans le répertoire de travail. Rien à faire. Voici la réponse :

Skywodd, ne serait-ce pas plutôt avr-g++ ou avr-c++ qu’il faudrait utiliser, à la place d’avr-gcc ?

Je suis bien conscient que je n’y connais rien dans la suite des tool-chains d’avr-gcc, avr-g++ ou avr-c++.
L’utilisation de make et les paramètres de makefile restent pour moi dans le flou le plus complet. Je ne suis pas en mesure de comprendre ce qui apparaît dans l’Output d’un build. Quelqu’un pourrait-il me renseigner un document bien fait qui pourrait me lever un coin du voile de toute cette nébuleuse héritée de Linux ?

Il faut quand même que je vous relate un épisode pour le moins bizarre. Voici les faits. Dimanche soir, ayant (vaguement) entendu parler des fichiers .o , je tente l’expérience de compiler dans l’ide arduino le sketch blink auquel j’ai ajouté la librairie OneWire. Puis je vais voir le résultat de la compilation (comme pour obtenir le fichier core.a). Je trouve un sous-répertoire OneWire contenant un fichier « OneWire.cpp.o ».
Je copie ce fichier, je l’ajoute au répertoire Debug du projet Studio5 et je relance un Build. Là, c’est la surprise !!!!! L’opération réussit. Je n’en crois pas mes yeux. Je relance une nouvelle fois un rebuild pour être sûr : à nouveau réussi. J’ai failli sauter sur le forum pour annoncer la bonne nouvelle. Mais avant, j’ai voulu m’assurer de tous les paramètres que j’avais choisi. Je retourne dans les properties du projet, je décoche « Use External Makefile » et je vais dans Toolchain.
Mes paramètres sont :
Pour C++ Compiler :

Pour C++ Linker :

Je recoche la case « Use External Makefile » et je m’assure que mon makefile du répertoire Debug possède la correction (report en fin de ligne du paramètre -Wl,-lcore -Wl,-L"C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\AVR_Studuino")

Après ces vérifications, je fais un dernier rebuild du programme avant d’aller sur le forum. DAWNED !!! La même erreur que d’habitude :

Depuis, j’ai refais de multiples essais. Je ne suis plus parvenu à un succès.
Je laisse ce mystère à votre sagacité, mais je commence à me demander s’il ne vaudrait pas mieux attendre la version suivante de Studio5.

Je voudrais quand même repartir sur l'expérience de capswiz et éventuellement éviter de recompiler à chaque fois les fichiers courants en les remplaçant par le libcore.a qui semble bien marcher chez moi. Ce sont les librairies additionnelles que je n'arrive pas à faire reconnaître.

Les gars

J'ai de nouveau réussi !!!

3 x de suite

Cette fois, j'ai pris soin de ne toucher à RIEN sauf ce qui était nécessaire pour tout photographier et tout copier.

Encore un peu de patience, je vous prépare un topo avec le maximum d'information et de photos.

Pour ceux qui se débrouillent avec la langue de chèque spire, ils peuvent déjà consulter le site suivant: http://www.engblaze.com/tutorial-using-avr-studio-5-with-arduino-projects/

Jean-Marie:
Contrairement aux idées reçues, j’ai consacré une partie du 31 décembre et du 1er janvier à faire des essais avec Studio5. (Par contre, aujourd’hui, j’étais absent toute la journée).

Quel courage, moi j'étais pas frais pour faire de l'arduino ces jours là :sweat_smile:

Jean-Marie:
J’ai ensuite essayé le conseil de Skywodd (« avr-gcc -c trucmachin.cpp -o trucmachin.o » en ligne de commande). Plusieurs essais dans différents répertoires avec copie préalable des fichiers à précompiler dans le répertoire de travail. Rien à faire. Voici la réponse :

Skywodd, ne serait-ce pas plutôt avr-g++ ou avr-c++ qu’il faudrait utiliser, à la place d’avr-gcc ?

Tu utilise la cmd de windows et lors de l'installation de WinAvr tu n'as pas du cocher "Append to path", donc le dossier C:\WinavrXXXXXXXXX\bin n'est pas dans ta variable PATH et par conséquent le chemin vers avr-gcc est inconnu pour la cmd.
Pour en avoir le coeur sur fait echo %PATH% si tu vois c'est qu'il y a anguille sous roche :slight_smile:
PS: avr-g++ c'est le compilateur c++, mais avr-gcc sait tout seul en quoi compiler (c ou c++) en ce basant sur l'extension de fichier.
PPS: tu devrais installer MinGW (+Msys) c'est une console "unix like" avec plein d'utilitaires gnu-linux bien pratique :wink:

Jean-Marie:
Je suis bien conscient que je n’y connais rien dans la suite des tool-chains d’avr-gcc, avr-g++ ou avr-c++.
L’utilisation de make et les paramètres de makefile restent pour moi dans le flou le plus complet. Je ne suis pas en mesure de comprendre ce qui apparaît dans l’Output d’un build. Quelqu’un pourrait-il me renseigner un document bien fait qui pourrait me lever un coin du voile de toute cette nébuleuse héritée de Linux ?

Toute les doc que j'ai sont en anglais très technique :~ si j'ai le temps je regarderai de faire un petit article sur les makefiles et (si possible) sur les output de compilation mais pour le moment je garanti rien.

Jean-Marie:
Depuis, j’ai refais de multiples essais. Je ne suis plus parvenu à un succès.
Je laisse ce mystère à votre sagacité, mais je commence à me demander s’il ne vaudrait pas mieux attendre la version suivante de Studio5.

Tu te retrouve avec une erreur de linkage comme moi avec la libcore.a :~ ils ont modifié un truc entre Studio 4 et Studio 5 c'est pas possible, à la main avec makefile ça marche nikel, le même makefile sus Avr Studio -> erreur de linkage ... :stuck_out_tongue_closed_eyes:
Du coup je réfléchi à faire un truc, crée une librairie statique avec dépendance du core arduino, et m'en servir telle quelle sans précompilation mais quelque chose me dis qu'il va y avoir un probléme de linkage :roll_eyes:

Hello Skywodd,

Merci pour tes infos. Je les verrai plus en détail demain.
Je publie maintenant mes informations sur le Build réussi:


Comme je vous le disais ci-dessus, j’ai finalement réussi à faire un build d’un programme Arduino avec appel à une librairie (OneWire), ceci en grande partie grâce à la lecture du site http://www.engblaze.com/tutorial-using-avr-studio-5-with-arduino-projects/ mentionné ci-dessus. Si vous lisez le site vous trouverez cependant quelques petites différences avec mon exemple.

Dans un premier temps, je vous donne ci-dessous le maximum de fichiers et copies d’écran pour servir de documents de référence et permettre à tout le moins de revenir aux paramètres garantissant une réussite.

Voici d’abord le code minimaliste que j’ai utilisé :

En fait, j’ai compilé dans l’IDE Arduino le code suivant :

Après compilation, le répertoire « C:\Documents and Settings\Jeannot\Local Settings\Temp\buildxxxxxxxxxxxxxxxxx.tmp\ » contient le fichier TutoCumLib.cpp
C’est le texte de ce fichier que j’ai recopié dans Studio5.

La différence entre les deux est l’ajout des 3 lignes suivantes :

     #include "WProgram.h"
     void setup();
     void loop();

A noter que Wprogram.h est inclus entre " " et non entre < > (signification ?)
Les deux autres lignes sont les prototypes des fonctions obligatoires d'Arduino.

Dans le même répertoire temporaire du build de l’Arduino, j’ai fait une copie du fichier core.a pour le mettre dans le répertoire « C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\AVR_Studuino » et le renommer libcore.a (Ceci avait déjà été fait lors des premiers essais).

Il est temps de passer maintenant aux paramètres de Toolchain (Project -> TutoCumLib Properties -> Toolchain) :

1° C++ Compiler - Symbols : ajouter « F_CPU=16000000L »

2° C++ Compiler – Directories : J’ai ajouté ici le répertoire Arduino qui contient les hardware cores, le répertoire Arduino qui contient la ou les librairies utilisées (OneWire) et mon répertoire AVR_Studuino qui contient le fichier libcore.a

3° C++ Compiler – Optimization :
• Optimization Level : « Optimize for size »
• Other optim. Flags: “-fdata-sections”
• Cocher la case “Prepare for garbage”

4° C++ Compiler – Miscellaneous :
• Other flags : “-fno-exceptions”
• Cocher « Verbose »
• Cocher « Do not delete temporary file »

... Suite dans le message suivant ...

5° C++ Linker – Libraries :
• Libraries : libcore.a
• Library search path : ajouter le répertoire AVR_Studuino où se trouve libcore.a

6° C++ Linker – Optimization : cocher « Garbage collect unused sections

7° C++ Linker – Miscellaneous : ajouter “-Wl,-lcore -Wl,-lm”

Lorsque tout cela est fait, il faut faire un rebuild.
Celui-ci va produire des erreurs mais son but est de produire un fichier makefile.

Dans la fenêtre des properties, prendre maintenant l’onglet « Build* » , cocher Use External Makefile et pointer sur le fichier Makefile créé dans le répertoire …\votre projet\Debug

Ensuite, ouvrir le fichier makefile avec le notepad et rechercher « -WL ». Cela permet de trouver la ligne à modifier.
Modifiez cette ligne en déplaçant vers la fin les flags que nous avons ajoutés, conformément à ceci :

$(QUOTE)$(AVR_APP_PATH)avr-g++.exe$(QUOTE)   -Wl,--gc-sections  -mmcu=atmega328p  -Wl,-Map=$(MAP_FILE_PATH_AS_ARGS) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -Wl,-lcore  -Wl,-lm -Wl,-L"C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\AVR_Studuino"

Ne pas oublier de sauvegarder le fichier modifié.

Il reste à ajouter au projet les fichiers de la librairie utilisée : Project -> Add existing items -> OneWire.cpp et OneWire.h

Retourner dans Studio et faire un Rebuild. Celui-ci devrait être successfull et se terminer par ceci :

		AVR Memory Usage
		----------------
		Device: atmega328p
		Program:    1164 bytes (3.6% Full)
		(.text + .data + .bootloader)
		Data:         23 bytes (1.1% Full)
		(.data + .bss + .noinit)
		make: Leaving directory `C:/Documents and Settings/Jeannot/Mes documents/AVRStudio/TutoCumLib/TutoCumLib/Debug'
	Done executing task "RunAvrGCC".
Done building target "CoreBuild" in project "TutoCumLib.avrgccproj".
Target "PostBuildEvent" skipped, due to false condition; ('$(PostBuildEvent)' != '') was evaluated as ('' != '').
Target "Build" in file "C:\Program Files\Atmel\AVR Studio 5.0\Vs\Avr.common.targets" from project "C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\TutoCumLib\TutoCumLib\TutoCumLib.avrgccproj" (entry point):
Done building target "Build" in project "TutoCumLib.avrgccproj".
Done building project "TutoCumLib.avrgccproj".

Build succeeded.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========

(Voir ci-dessous la copie de l’Output en fichier attaché.)

Voici encore le contenu des répertoires du projet et de Debug comme contrôle :

En conclusion, il y a quelques différences par rapport aux essais précédents. Il serait utile d’étudier si toutes les différences sont nécessaires pour la réussite du build. Ce sera le travail de demain.

Makefile (4.41 KB)

Rebuild Verbose Output.txt (19.8 KB)

Bon matin à tous.

Je rallume mon PC à 6h30. Première bonne nouvelle : je fais un Build ... et ça marche toujours !

La première chose que je remarque, c'est que le répertoire du projet contient des fichiers qui traînent d'essais précédents. J'essaye donc de supprimer les fichiers "OneWire.o", "OneWire.cpp.o" et "TcfTransactionLog.csv": Rebuild test réussi (y compris en recréant un nouveau Makefile corrigé comme d'habitude).

La réflexion suivante concerne Project ==> Properties ==> Tooolchain ==> AVR/GNU C++ Compiler ==> Directories
Actuellement, j'ai 3 répertoires : le core hardware d'Arduino, le répertoire AVR_Studuino que j'avais créé lors des premiers essais et le répertoire de la librairie OneWire. Comme AVR_Studuino contient déjà une copie de tous les fichiers du core Hardware d'Arduino et une copie des fichiers OneWire, je fais un essai en ne laissant que ce répertoire : Rebuild test réussi.

Les fichiers OneWire.h et OneWire.cpp se trouvent actuellement dans le répertoire AVR_Studuino ET dans le répertoire Project (C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\TutoCumLib\TutoCumLib) ainsi que dans la liste des fichiers de Solution Explorer. Je fais un essai en supprimant ces fichiers de AVR_Studuino : j'obtiens l'erreur "OneWire.h : no such file or directory"
Je fais un nouvel essai en rajoutant les fichiers OneWire dans AVR_Studuino mais en les supprimant de la liste de Solution Explorer ET du répertoire Project : échec.
En rajoutant seulement OneWire.h dans la liste de Solution Explorer : nouvel échec.
En rajoutant seulement OneWire.cpp dans cette liste : Rebuild test réussi.

Je pense en tirer comme conclusion que OneWire.cpp DOIT figurer dans la liste de Solution Explorer. (et le fait de l'ajouter à cette liste entraîne automatiquement une copie physique du fichier dans le répertoire Project.

D'où l'idée de faire un essai en mettant les 2 fichiers OneWire dans la liste, en les effaçant de AVR_Studuino et en ajoutant un path vers le répertoire Project dans C++ Compiler - Directories : Rebuild test réussi.

J'ai également fait un nettoyage du répertoire AVR_Studuino en supprimant tous les fichiers .c et .cpp car ces fichiers sont déjà compilés dans le fichier libcore.a
Je ne conserve que les fichiers header de libcore.a (fichiers .h)

Rebuild test réussi.

Les fichiers compilés dans libcore.a sont les fichiers core de Arduino-0022.Je renomme donc le répertoire AVR_Studuino en "AVR_Studuino_0022". Bien sûr, il faut aussi aller changer le path à 2 endroits :

  • les Directories de AVR/GNU C++ Compiler
  • le Library Search Path de AVR/GNU C++ Linker

Rebuild test réussi.

Hello les gars,

J'ai encore fait quelques petites modifications :

  • Tout d'abord dans C++ Compiler ==> Symbols, j'ai enlevé "F_CPU=16000000L" et j'ai ajouté en début de programme la ligne suivante : #define F_CPU 16000000UL
    Personnellement, je préfère voir en début de programme quel quartz j'ai utilisé pour la mise au point. (Bien sûr, si vous travaillez avec une platine Arduino, le quartz n'est pas interchangeable).

  • Au lieu d'écrire #include "WProgram.h" , j'ai écrit #include <WProgram.h> au début du programme. Cela n'a semble-t-il rien changé à la compilation.

  • J'ai également supprimé en début de programme les 2 lignes de prototype des fonctions setup et loop. La compilation réussit sans ces lignes.

Rebuilt test réussi.

Je crois qu'il serait peut-être bientôt temps de refaire une description générale des choses à faire pour transplanter du code Arduino dans Studio 5 car les choses se sont décantées et sont finalement moins compliquées qu'il ne paraissait au début.

Certains d'entre vous ont-ils déjà fait des essais et ont-ils réussi ?

Il y a encore une autre simplification possible.

Dans le C++ Linker / Libraries on peut supprimer la librairie libcore.a et le chemin à son répertoire. Donc le C++ Linker / Libraries peut rester complètement vide.

Mais dans ce cas, le C++ Linker / Miscellaneous doit contenir la ligne suivante :
-Wl,-lcore -Wl,-lm -Wl,-L"C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\AVR_Studuino_0022"

Après le rebuild habituel, il faut comme d'habitude aller trafiquer le Makefile pour mettre -Wl,-lcore -Wl,-lm -Wl,-L"C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\AVR_Studuino_0022" à la fin de la ligne et relancer un rebuild après avoir coché la case "Use External Makefile".

Cette modification rend plus facile le transport du texte à la fin de la ligne car le texte à transférer est en un seul bloc, alors qu'il était en deux blocs dans la version précédente.

Cela me fait penser que pour faire ce transfert de texte, j'avais d'abord conseillé de ne pas cocher le "retour automatique à la ligne". En fait, la manœuvre est tout aussi facile avec le retour automatique à la ligne : sélectionner le texte à transférer, puis Ctrl-x, aller à la fin de la ligne et Ctrl-v.

Voici l'aspect de la ligne avant transfert:
$(QUOTE)$(AVR_APP_PATH)avr-g++.exe$(QUOTE) -Wl,-lcore -Wl,-lm -Wl,-L"C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\AVR_Studuino_0022" -mmcu=atmega328p -Wl,-Map=$(MAP_FILE_PATH_AS_ARGS) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS)

Et la même ligne après transfert:
$(QUOTE)$(AVR_APP_PATH)avr-g++.exe$(QUOTE) -Wl,--gc-sections -mmcu=atmega328p -Wl,-Map=$(MAP_FILE_PATH_AS_ARGS) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -Wl,-lcore -Wl,-lm -Wl,-L"C:\Documents and Settings\Jeannot\Mes documents\AVRStudio\AVR_Studuino_0022"

Putain, mais c'est pas vrai !!!
D'abord un forum inaccessible pendant presque 24 h.
Ensuite, impossibilité de charger un petit fichier de 2531 bytes : The upload folder is full. Please try a smaller file and/or contact an administrator.

Bon, voila ce que je voulais dire.

J'ai préparé un fichier AVR_Studuino_FR.rar (que je n'arrive pas à joindre ci-dessous)
Après décompression, celui-ci montre trois fichier expliquant toutes les étapes à suivre pour compiler les programmes Arduino dans Studio 5:

  • ReadMe.txt est le fichier à lire en premier. Il demande de créer un répertoire et d'y copier les deux autres fichiers.

  • Environnement.txt explique les étapes de préparation à faire une seule fois et valable pour tous les programmes Arduino.

  • Template.txt est à la fois un canevas pour débuter tout nouveau programme et à la fois un mémento des paramètres à régler pour chaque programme.

Si je ne parviens pas à joindre les fichiers demain, j'essayerai de les intégrer dans des fenêtres "Code"

Voici le fichier ReadMe.txt:

Studio 5 permet de compiler et de flasher les programmes et librairies Arduino.

Pour ce faire, il faut créer un répertoire nommé AVR_Studuino_xxxx (remplacer xxxx par le numéro de votre version de l'IDE Arduino, par exemple AVR_Studuino_0022).

Ce répertoire peut être placé n'importe où, par ex. dans ...\Mes Documents\AVRStudio pour rester dans l'environnement de Studio.

Les fichiers Environnement.txt et Template.txt sont à transférer dans le répertoire AVR_Studuino_xxxx.

Ouvrir Environnement.txt et suivre les étapes décrivant les fichiers à copier dans AVR_Studuino_xxxx.

Voici ensuite le fichier Environnement.txt:

Environnement.txt
-----------------

Ce fichier décrit la mise en place de l'environnement permettant à Studio 5 de compiler des programmes Arduino.

Les étapes 1 à 4 sont à mettre en place une seule fois et sont valables pour tous les programmes Arduino.


Etape 1 : Création du fichier « libcore.a »
  •  Compiler n’importe quel sketch dans l’IDE Arduino. Ne pas fermer l’IDE.
  •  Aller dans C:\Documents and Settings\[votre identité]\Local Settings\Temp\buildxxxxxxxxxxxxxxxxxx.tmp
  •  Copier le fichier « core.a » dans AVR_Studuino_xxxx
  •  Renommer la copie « libcore.a »

Etape 2 : Copie des fichiers headers du core
  •  Aller dans le répertoire ...\arduino-xxxx\hardware\arduino\cores\arduino
  •  Copier  tous les fichiers « .h » dans le répertoire AVR_Studuino_xxxx

Etape 3 : Copie d’avrdude
  •  Aller dans « …\arduino-xxxx\hardware\tools\avr\bin »
  •  Copier le fichier « avrdude.exe » dans AVR_Studuino_xxxx
  •  Aller dans « …\arduino-xxxx\hardware\tools\avr\etc »
  •  Copier le fichier « avrdude.conf » dans AVR_Studuino_xxxx

Etape 4 : Préparation de Studio 5
  •  Menu Tools ==> Extension Manager
  •  Installer AVRGCC C++(Beta)
  •  Installer Terminal Windows
  •  Fermer et relancer Studio 5

L'étape 5 est à effectuer à chaque nouveau projet

Etape 5 : Création d'un nouveau projet Arduino
  •  A l'ouverture de Studio, cliquer sur "New Project"
  •  Cliquer C++ puis C++ Executable Project
  •  Donner un nom au Projet et à la Solution puis cliquer OK
  •  Studio crée les répertoires [solution] dans AVRStudio et [Project] dans [Solution]
  •  Choisir le microcontrôleur
  •  Studio 5 propose alors un canevas de programme par défaut
  •  Remplacer le texte du canevas par le texte du fichier Template.txt
  •  Le début du fichier contient la suite des étapes à effectuer

Voici enfin le fichier Template.txt:

/******************************************************************
/* NOM DU PROGRAMME :
/* AUTEUR :
/* DATE :
/******************************************************************

PREPARATION DE L'ENVIRONNEMENT ARDUINO
--------------------------------------
	•	Voir le fichier ...\AVR_Studuino_xxxx\Environnement.txt


PARAMETRES DE BUILD POUR PROGRAMME ARDUINO
-------------------------------------------

Etape 1 : Paramètres du compilateur C++

  Aller dans Project \ Properties \ Toolchain \ :

  C++ Compiler \ Directories :
	•  ...\AVR_Studuino_xxxx
	•  ...\AVRStudio\[Solution Name]\[Project Name]
	
  C++ Compiler \ Optimization :
	•  Optimization Level : Optimize for size	
	•  Other optimization flags : -fdata-sections
	•  Cocher la case "prepare functions for garbage collection"

  C++ Compiler \ Miscellaneous :
	•  Other flags : "-fno-exceptions"
	•  Cocher "Verbose"
	•  Cocher "Do not delete temporary file"


Etape 2 : Paramètres du Linker C++

  C++ Linker \ Optimization :
	•  cocher "Garbage collect unused sections"

  C++ Linker \ Miscellaneous :	
	•  -Wl,-lcore -Wl,-lm -Wl,-L"...\AVR_Studuino_xxxx"


Etape 3 : Faire un Rebuild
	•  Menu ==> Build ==> Rebuild


Etape 4 : Modifier le fichier Makefile
	•  0uvrir ...\AVRStudio\[Solution]\[Project]\Debug\Makefile
	•  transférer la séquence -wl,-lcore.........AVR_Stduino_xxxx" à la fin de la ligne
	•  Sauvegarder Makefile

Etape 5 : Utiliser le Makefile modifié
	•  Aller dans Project \ Proterties \ Build :
	•  Cocher la case "Use External Makefile"


Etape 6 : pour utiliser une Librairie
	•  Décommenter et compléter #include <[Library Name]> en début de programme
	•  Dans la fenêtre "Solution Explorer", clic droit sur le [Project Name]
	•  Add ==> Existing Item. Ajouter les fichier .h et .cpp de la Librairie


Etape 7 : pour "uploader" le programme
	•  Menu Tools ==> External Tools
	•  Title : Upload Arduino
	•  Command : ...\AVR_Studuino_xxxx\avrdude.exe
	•  Arguments : -C "...\AVR_Studuino_xxxx\avrdude.conf" -v -v -p atmega328p -c stk500v1 -P COM3 -b 57600 -U flash:w:"$(ProjectDir)Debug\$(ItemFileName).hex":i
	•  Dans la ligne ci-dessus, adapter le chemin du répertoire, l'atmega utilisé et le Port COM
	•  L'upload s'obtient par Menu Tools ==> Upload Arduino



*******************************************************************
			DEBUT DU PROGRAMME
******************************************************************/



#include <WProgram.h>
//#include <[Library Name]>
#define F_CPU 16000000UL	// Fréquence du microcontrôleur


void setup() 
{                

}

void loop() 
{

}

Bonjour,

Je n'ai pas grand chose à apporter de plus à ce topic, juste un grand bravo pour le gros travail accompli !

Passage de Arduini 1.0 à AVR studio 5 accompli ce week-end sur une Mega2560 R3 grâce à votre support :slight_smile:

@ Jean Marie
J'ai une question sur la taille des fichier *.hex.
Tout d'abord excuses moi si tu y as déjà répondu mais n'ayant pas Windows mais Debian Linux j'ai survolé ton projet de loin.

Dans tout mes essais pour utiliser Eclipse ou Code::blocks, qui contrairement à Avr Studio sont eux multiplateformes, j'ai toujours rencontré un problème d'embonpoint des fichiers hex dès que je faisait appel à une bibliothèque en C++.
Exemple sur un simple blink :
Sans utilisation de Serial j'écris un clignote.c et j'ai la même taille qu'avec l'IDE arduino environ 1koctets.
Si j'initialise une liaison série avec un Serial.begin(9600) je dois faire un clignote.cpp et la taille du fichier hex enfle instantanément de 10koctets. Je suis convaincu que c'est du a des erreurs ou des oublis dans les options de compilation mais malgré toutes mes lectures et tous mes essais je ne vois pas où ça coince. J'ai utilisé la librairie statique obtenue à partir de l'IDE arduino, j'ai aussi recréé entièrement cette librairie statique à partir d'Eclipse rien n'y fait.

Dans tes essais as tu comparé la taille des fichiers hex obtenu avec les deux IDE (023 et avr studio) ?

@ Autre question générale qui s'adresse à tout le monde:
Un nouveau plug-in à été dévelopé pour Eclipse par des gens du forum international :
http://arduino.cc/forum/index.php/topic,70547.0.html
Quelqu'un de la partie francophone a-t-il fait des essais ?

68tjs:
Si j'initialise une liaison série avec un Serial.begin(9600) je dois faire un clignote.cpp et la taille du fichier hex enfle instantanément de 10koctets. Je suis convaincu que c'est du a des erreurs ou des oublis dans les options de compilation mais malgré toutes mes lectures et tous mes essais je ne vois pas où ça coince. J'ai utilisé la librairie statique obtenue à partir de l'IDE arduino, j'ai aussi recréé entièrement cette librairie statique à partir d'Eclipse rien n'y fait.

Tu utilise -Wl -Os ? Parce que la taille qui x10 c'est typique d'une mauvaise configuration du linker et de l'optimisation.

Oui et aussi -ffunction-sections et -fdata-sections.
Il y a un truc que je ne vois absolument pas et si ça se trouve c'est ENORME visible comme le nez au milieu du visage mais je.....ne.....vois......rien.

C'est pour cela que je cherche à avoir la confirmation que quelqu'un a réussit. Si j'ai cette confirmation ce sera la preuve que c'est possible et que c'est moi qui me débrouille comme un pied.

Désolé, je viens de rentrer d'une semaine au soleil du midi.

Demain, j'essayerai une comparaison de taille du fichier hex avec l'ide et avec Studio.

Merci à Mitchbzh pour le rapport de l'essai avec l'IDE 1.0

Voici la comparaison de la compilation d'un programme avec Studio 5 (à gauche) et l'IDE Arduino (à droite). Le programme utilise la librairie OneWire et la transmission série pour afficher dans le terminal la T° d'une sonde DS18b20.

On voit donc (si on a des yeux comme des loupes) que le programme fait 5760 bytes dans Studio et 5838 bytes dans l'IDE.
Conclusion:

  • 1° pas de grosse différence entre l'IDE et Studio
  • 2° le Serial.begin n'entraîne pas d'augmentation de 10K

J'imagine qu'une telle augmentation signifie que toutes les fonctions de la librairie sont compilées en fichier .hex

En supprimant tous les appels à Serial, la compilation dans Studio donne 2344 bytes. Autrement dit, les appels à Serial me coûtent 5760 - 2344 = 3416 bytes.