Eclipse #include
Bonjour à tous!Récemment, quelques articles ont été publiés sur la GT contre et pour l' utilisation de l'Arduino pour quelque chose de plus rentable que les feux clignotants et la création de stations météorologiques domestiques. Le discours habituel du monde de la technologie, lorsque la technologie devient de plus en plus accessible au grand public, nageait, nous le savons.Ayant une formation technique et une spécialité universitaire directement liée à la programmation des microcontrôleurs, je comprends ceux qui sont contre. Et ayant de nombreuses années d'expérience dans la commercialisation non seulement des miens, mais aussi dans une plus large mesure des connaissances et compétences étrangères, je comprends parfaitement ceux qui sont pour cela.Vous avez raison, et vous avez également raison, et la vérité, comme toujours, est quelque part près du milieu.Tout d'abord, vous devez comprendre de quoi parle l'argument. Arduino n'est pas seulement des microcontrôleurs magnifiquement emballés par des Italiens dans des cartes et des boîtiers de circuits imprimés, et pas seulement l'environnement de développement Arduino IDE. Tout d'abord, ce sont des bibliothèques pour un développement rapide, et à mon avis, elles sont de la plus grande valeur. Si vous regardez les schémas de circuits des cartes Arduino, nous ne verrons rien de particulièrement impressionnant. Environnement de développement ... Disons simplement qu'il n'atteint pas tout à fait le modèle Borland C ++ de 1994 .Comme nous le savons, ces bibliothèques sont distribuées sous licence GNU, elles peuvent être prises et utilisées sans payer de redevances à leurs créateurs. Un tel modèle d'entreprise nécessite de gagner de l'argent sur autre chose que des redevances. Ils gagnent donc en produisant et en vendant dans un bel emballage pour 20 dollars ce qu'un ingénieur en électronique achètera pour 20 cents.Et l'important ici n'est pas qu'ils soient une bourgeoisie aussi avide, volant les travailleurs et répréhensible de toute l'humanité progressiste, mais pourquoi ils peuvent le faire. Parce que:- Ils étaient au bon moment au bon endroit et ont vu les premières opportunités que d'autres ne voyaient pas;
- Ils ont mis à la disposition du consommateur ce qui était auparavant accessible à un cercle restreint d'individus limités;
- Tout était joliment emballé et présenté au consommateur sous une forme prête à l'emploi.
, . Arduino — .
— . ,
.
, , - -, 86% . :
- ?
- ?
( «»)
Sur la base de mon expérience professionnelle, j'ose dire que le client choisira le chemin du fumeur de l' arduino.Découvrez comment utiliser Arduino à leurs propres fins égoïstes, avec le blackjack et le développement de groupe, le contrôle de version, la documentation du projet et d'autres cygnes en peluche du monde du développement commercial.En fait, tout est très simple. Pour cela, outre les développeurs, nous avons besoin d'un environnement de développement et d'un stand sur lequel ils peuvent se développer. C ++, c'est en Afrique C ++, AVR et en Arduino reste AVR.En tant qu'environnement, considérez Eclipse. Voici un très bon article sur la façon de configurer d'abord Eclipse pour fonctionner avec la chaîne d'outils AVR, puis de connecter les bibliothèques Arduino et de faire clignoter la LED sur Uno.Et ici c'est encore mieux , mais en anglais.Je vais les compléter avec quelques râteaux sur lesquels j'ai marché, peut-être que cela fera gagner quelques heures à quelqu'un.Tous les éléments suivants sont décrits pour Linux et Leonardo. Pour Windows, vous devez d'abord installer MinGW / msys .Pour construire toutes les sources incluses dans le noyau Arduino, vous devez définir correctement les constantes du préprocesseur. Si vous regardez le code source des bibliothèques, vous pouvez voir de nombreuses structures de compilation conditionnelle #ifdef #else #endif. Dans un article par référence, l'auteur a tout noté en prenant un fichier .a prêt à l'emploi compilé par l'IDE Arduino. Mais toutes les bibliothèques ne tombent pas dans le noyau, par exemple, SPI et Ethernet ne tombent pas dedans, et les mêmes blagues avec compilation conditionnelle nous y attendent.Découvrir quelles constantes et comment définir peut être très simple.- Arduino IDE
- ,
- — — —
- ,
*** avr-g++ -c -g -Os -w -std=gnu++11 -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -w -x c++ -E -CC -mmcu=atmega32u4 -DF_CPU=16000000L -DARDUINO=10607 -DARDUINO_AVR_LEONARDO -DARDUINO_ARCH_AVR -DUSB_VID=0x2341 -DUSB_PID=0x8036 '-DUSB_MANUFACTURER="Unknown"' '-DUSB_PRODUCT="Arduino Leonardo"' ***
, -D ( F_CPU, Eclipse ) Eclipse.
Pour que le compilateur trouve tous les fichiers .h que nous voulons utiliser dans le projet, nous devons spécifier leur chemin d'accès dans les paramètres. Il y a deux façons. Vous pouvez spécifier des chemins absolus vers les dossiers IDE Arduino ou lier la bibliothèque au projet et spécifier le chemin relatif depuis {workspase} / {ProjName}. La deuxième méthode vous permettra de compiler le noyau dans Eclipse, bien qu'il n'y ait pas de différence fondamentale, et dans Arduino IDE et Eclipse, avr-g ++ est responsable de la compilation.En outre, spécifiez le chemin d'accès à pins_arduino.h pour la carte que nous utilisons dans le projet.
Afin de ne pas violer la structure harmonieuse des fichiers de la bibliothèque main.cpp, nous ne le modifierons pas. Il suffit de l'inclure tel qu'il est du noyau dans le projet, et nous appellerons notre fichier un autre nom. Il n'est pas nécessaire d'y déclarer la fonction main (), elle est déjà dans main.cpp, initialise tout ce qui est nécessaire et appelle la fonction loop () dans une boucle infinie, l'éditeur de liens collectera tout comme il se doit.L'environnement est prêt à partir. Nous écrivons à peu près de la même manière que dans l'IDE Arduino, mais ici, ils surveillent un peu plus strictement la conformité avec les canons C ++. Et à tout moment, nous pouvons passer de la programmation de haut niveau à l'étage inférieur. Si la vitesse de travail avec les ports via digitalWrite n'est pas suffisante, nous écrivons directement sur les ports.Hélas, l'habitude de raccrocher le processeur avec un appeldelay(5000);
Eclipse ne guérit pas. Ceci est enseigné quelque part au lycée ou au collège, il pénètre la personnalité si profondément qu'aucune moralisation ne peut conduire une personne sur la bonne voie.Pour remplir Arduino IDE et Eclipse, utilisez l'utilitaire de programmation AVRDude. Elle connaît vraiment des planches comme Uno sous le nom de «arduino», mais elle refuse catégoriquement d'en reconnaître des moins chères comme Leonardo.Nous allons sur boards.txt et découvrons que pour le programmeur, le programmeur dans les paramètres AVRDude s'appelle «Atmel AppNote AVR109 Boot Loader», le voici: Un petit inconvénient est seulement qu'Eclipse ne le fera pas. Vous devrez appuyer sur reset avec les stylos avant le chargement. Eh bien, en conclusion, le même projet, assemblé dans l'IDE Arduinoleonardo.upload.protocol=avr109

leonardo.upload.use_1200bps_touch=true
28 432 (99%) . 28 672 .
1 254 (48%) , 1 306 . : 2 560 .
et dans Eclipse A bagatelle, mais pour finir c'est juste ces demi-kilos et pas assez.Invoking: Print Size
avr-size --format=avr --mcu=atmega32u4 EthernetController.elf
AVR Memory Usage
----------------
Device: atmega32u4
Program: 27834 bytes (84.9% Full)
(.text + .data + .bootloader)
Data: 1257 bytes (49.1% Full)
(.data + .bss + .noinit)
Finished building: sizedummy
Source: https://habr.com/ru/post/fr390441/
All Articles