Eclipse #include
Hallo allerseits!Kürzlich wurden einige Artikel über den GT gegen und für die Verwendung des Arduino für etwas veröffentlicht, das rentabler ist als das Blinken von Lichtern und das Erstellen von Wetterstationen zu Hause. Der übliche solche Diskurs aus der Welt der Technologie, wenn Technologie für die breite Öffentlichkeit immer zugänglicher wird, schwamm, wissen wir.Ich habe eine technische Ausbildung und ein Universitätsfach, das in direktem Zusammenhang mit der Programmierung von Mikrocontrollern steht, und verstehe diejenigen, die dagegen sind. Und mit langjähriger Erfahrung in der Kommerzialisierung nicht nur meiner eigenen, sondern auch in größerem Umfang ausländischer Kenntnisse und Fähigkeiten verstehe ich diejenigen, die dafür sind, perfekt.Du hast Recht, und Sie sind auch richtig, aber die Wahrheit ist immer irgendwo in der Nähe der Mitte.Zunächst müssen Sie verstehen, worum es bei dem Argument geht. Arduino ist nicht nur ein Mikrocontroller, der von Italienern wunderschön in Leiterplatten und Boxen verpackt wurde, sondern auch nicht nur die Arduino IDE-Entwicklungsumgebung. Erstens sind dies Bibliotheken für eine schnelle Entwicklung, und meiner Meinung nach sind sie von größtem Wert. Wenn Sie sich die Schaltpläne der Arduino-Platinen ansehen, werden wir nichts besonders Beeindruckendes sehen. Entwicklungsumgebung ... Sagen wir einfach, dass es das Borland C ++ - Modell von 1994 nicht ganz erreicht .Wie wir wissen, werden diese Bibliotheken unter der GNU-Lizenz vertrieben. Sie können verwendet und verwendet werden, ohne dass Lizenzgebühren an ihre Ersteller gezahlt werden. Ein solches Geschäftsmodell erfordert Geld mit etwas anderem als Lizenzgebühren. Sie verdienen also, indem sie in einem schönen Paket für 20 Dollar produzieren und verkaufen, was ein Elektronikingenieur für 20 Cent kaufen wird.Und das Wichtigste dabei ist nicht, dass sie eine so gierige Bourgeoisie sind, die die Werktätigen beraubt und der gesamten fortschrittlichen Menschheit verwerflich ist, sondern warum sie dies tun können. Weil:- Sie erschienen zur richtigen Zeit am richtigen Ort und sahen die ersten Gelegenheiten, die andere nicht sahen;
- Sie stellten dem Verbraucher das zur Verfügung, was zuvor einem engen Kreis begrenzter Personen zur Verfügung stand.
- Alles war wunderschön verpackt und dem Verbraucher in gebrauchsfertiger Form präsentiert.
Nun geht es darum, warum und wie die Errungenschaften des Verbrauchersegments unterhaltsamer Elektronik mit dem Entwicklungszyklus eines kommerziellen Projekts kombiniert werden können. In diesem Zyklus hat das Arduino-Ökosystem eine sehr wertvolle Eigenschaft - die Entwicklungsgeschwindigkeit.Geschwindigkeit ist das Verhältnis der zurückgelegten Strecke zur Zeit. Je größer die Geschwindigkeit, desto schneller werden wir die Arbeit tun, oder solche , verwendet für mehr Arbeit , die wir in der vorgegebenen Zeit tun und wir hypothetisch mehr Geld pro Zeiteinheit verdienen.Stellen Sie sich vor, der Kunde hat sich an Sie gewandt, er hat einige Wünsche und Sie haben in den Behältern des Heimatlandes kein fast 86% abgeschlossenes Projekt mit ähnlichen funktionalen Merkmalen. Jeder Kunde hat zwei grundlegende Fragen:- Wie viel wird es kosten?
- Wann wird es fertig sein?
(sehr oft braucht er die Antwort "gestern" auf die zweite Frage)Aufgrund der Geschäftserfahrung wage ich zu sagen, dass der Kunde den Weg des Rauchers des Arduino wählen wird.Weitere Informationen zur Verwendung von Arduino für eigene egoistische Zwecke mit Blackjack- und Gruppenentwicklung, Versionskontrolle, Dokumentation des Projekts und anderen ausgestopften Schwänen aus der Welt der kommerziellen Entwicklung.In der Tat ist alles sehr einfach. Dafür brauchen wir neben Entwicklern eine Entwicklungsumgebung und einen Stand, auf dem sie sich entwickeln können. C ++, es ist in Afrika C ++, AVR und in Arduino bleibt AVR.Betrachten Sie als Umgebung Eclipse. Hier ist ein sehr guter Artikel darüber, wie Sie Eclipse zuerst für die Arbeit mit der AVR-Toolchain konfigurieren, dann die Arduino-Bibliotheken verbinden und die LED auf Uno blinken lassen.Und hier ist es noch besser , aber auf Englisch.Ich werde sie mit ein paar Rechen ergänzen, auf die ich getreten bin. Vielleicht spart dies jemandem ein paar Stunden Zeit.Alle folgenden Punkte sind für Linux und Leonardo beschrieben. Für Windows müssen Sie zuerst MinGW / msys installieren .Um alle im Arduino-Kern enthaltenen Quellen zu erstellen, müssen Sie die Präprozessorkonstanten korrekt festlegen. Wenn Sie sich den Quellcode der Bibliotheken ansehen, sehen Sie viele bedingte Kompilierungsstrukturen #ifdef #else #endif. In dem Artikel hat der Autor als Referenz alles bewertet, indem er die fertige .a-Datei genommen hat, die von der Arduino IDE zusammengestellt wurde. Aber nicht alle Bibliotheken fallen in den Kernel, zum Beispiel fallen SPI und Ethernet nicht in sie, und die gleichen Witze mit bedingter Kompilierung erwarten uns in ihnen.Es kann sehr einfach sein, herauszufinden, welche Konstanten und wie sie eingestellt werden sollen.- 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.
Damit der Compiler alle .h-Dateien findet, die wir im Projekt verwenden möchten, müssen Sie den Pfad zu ihnen in den Einstellungen angeben. Es gibt zwei Möglichkeiten. Sie können absolute Pfade zu den Arduino IDE-Ordnern angeben oder die Bibliothek mit dem Projekt verknüpfen und den relativen Pfad von {workspase} / {ProjName} angeben. Mit der zweiten Methode können Sie den Kernel in Eclipse kompilieren, obwohl es keinen grundlegenden Unterschied gibt. In Arduino IDE und Eclipse ist avr-g ++ für das Kompilieren verantwortlich.Geben Sie außerdem den Pfad zu pins_arduino.h für die Karte an, die wir im Projekt verwenden.
Um die harmonische Struktur der Bibliotheksdateien main.cpp nicht zu verletzen, werden wir sie nicht bearbeiten. Fügen Sie es einfach so hinzu, wie es vom Kernel stammt, und wir nennen unsere Datei einen anderen Namen. Es ist nicht notwendig, die main () - Funktion darin zu deklarieren, sie befindet sich bereits in main.cpp, initialisiert alles, was benötigt wird, und ruft die loop () - Funktion in einer Endlosschleife auf. Der Linker sammelt alles so, wie er sollte.Die Umgebung ist bereit zu gehen. Wir schreiben ähnlich wie in der Arduino IDE, aber hier überwachen sie die Einhaltung der C ++ - Kanons etwas strenger. Und jederzeit können wir von der Programmierung auf hoher Ebene in den unteren Bereich wechseln. Wenn die Geschwindigkeit der Arbeit mit Ports über digitalWrite nicht ausreicht, schreiben wir direkt auf die Ports.Leider die Gewohnheit, den Prozessor mit einem Anruf aufzuhängendelay(5000);
Eclipse heilt nicht. Dies wird irgendwo entweder in der High School oder in der Junior High School gelehrt, es dringt so tief in die Persönlichkeit ein, dass keine Moralisierung eine Person auf den richtigen Weg führen kann.Verwenden Sie zum Füllen von Arduino IDE und Eclipse das Programmierdienstprogramm AVRDude. Sie kennt Boards wie Uno wirklich unter dem Namen "Arduino", aber sie weigert sich kategorisch, billigere wie Leonardo zu erkennen.Wir gehen zu board.txt und stellen fest, dass der Programmierer in den AVRDude-Einstellungen für den Programmierer "Atmel AppNote AVR109 Boot Loader" heißt. Hier ist es: Eine kleine Unannehmlichkeit ist nur, dass Eclipse dies nicht tut. Sie müssen vor dem Laden mit den Stiften auf "Zurücksetzen" drücken. Nun, abschließend das gleiche Projekt, das in der Arduino IDE zusammengestellt wurdeleonardo.upload.protocol=avr109

leonardo.upload.use_1200bps_touch=true
28 432 (99%) . 28 672 .
1 254 (48%) , 1 306 . : 2 560 .
und in Eclipse Eine Kleinigkeit, aber zum Beenden sind es nur diese ein halbes Kilo und nicht genug.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/de390441/
All Articles