Ich möchte meinen Arduino-Quellcode (Projekte und Bibliotheken) unter Versionskontrolle mit kontinuierlichen Tests verwalten. Wie kann ich den Code mit Continuous Integration Tools automatisch kompilieren, um sicherzustellen, dass jede Version sauber kompiliert wird? Im besten Fall sollte es möglich sein, Builds für mehrere Prozessoren zu konfigurieren, optional Komponententests durchzuführen und die maximale Binärgröße zu ermitteln.
programming
version-control
Jakob
quelle
quelle
avr-size
?Antworten:
Die neueste Version von Arduino ide verfügt über eine Befehlszeilenschnittstelle zum Erstellen und Hochladen von Code. Aber Sie können es natürlich durch makefile und avrdude tun. Jetzt haben Sie Ihren Code kompiliert, aber Sie müssen testen. Da Simulatoren komplex, unvollständig, umfangreich und ... sind. Nur eine Simulation, und da die Chips relativ billig sind, macht der Bau einer Platine die HW-Interaktion UND die Überprüfung der Ergebnisse zum schnellsten und einfachsten Weg. Auf dieses "spezielle" Board können Sie so etwas wie einen Interpreter hochladen, der einen Test vom PC ausführt, ähnlich wie firmata für Arduino. Zumindest würde ich es so bauen. Und soweit ich weiß, gibt es keine bekannten Umsetzungen dafür, auch wenn ich mir ziemlich sicher bin, dass viele Branchen das sollten und wahrscheinlich auch tun.
quelle
Als Schöpfer von PlatformIO würde ich Ihnen empfehlen, sich damit zu befassen. Es ist ein plattformübergreifender Code Builder und ein fehlender Bibliotheksmanager. Es kann den gleichen Code für die vielen gängigen Embedded-Entwicklungsplattformen und -Boards erstellen.
PlatformIO kann mit vielen gängigen Continuous Integration (CI) -Systemen (oder Ihren eigenen) integriert werden. Siehe Dokumentation mit Beispielen .
Schauen wir uns die
.travis.yml
Konfiguration / Vorlage für Travis CI an:Beispiel
Integration für das
USB_Host_Shield_2.0
Projekt. Die.travis.yml
Konfigurationsdatei:quelle
Ein Beispiel für die Einrichtung von Jenkins Continuous Integration für das Arduino-Projekt finden Sie hier: Continuous Integration für eingebettete Systeme
Das Beispiel zeigt, wie Sie ein Image erstellen und auf Arduino hochladen und Selenium-Web-Tests ausführen (das zu testende System ist ein Arduino-basierter Web-Server).
quelle
Ich habe diesen Test unittest Framework für Arduino geschrieben, da ich kein passendes existierendes finden konnte. Obwohl ich es nicht für CI geschrieben habe, wäre es gut für CI-Jobs geeignet, da es keine Hardware erfordert, aber auf dem PC ausgeführt werden kann.
Das Ausführen der CI-Jobs ohne Hardware hat gute und schlechte Seiten, gute Seiten sind das auch
Auf der anderen Seite gibt es:
quelle
Ich habe gerade eine anständige Beschreibung als Antwort auf diese verwandte Frage zu einem Arduino CI / Unit-Test-Framework zusammengestellt, das ich geschrieben habe und das endlich ausgereift genug ist, um öffentlich darüber zu sprechen.
Der
arduino_ci
Ruby Gem unterstützt sowohl lokale Tests als auch die Travis CI-Integration (z. B. diesen Build-Job für die Adafruit FONA-Bibliothek ).Einige Beispiele für die Integration:
Ich habe ein Problem für das Melden der Skizzengröße erstellt, aber es wurden noch keine Arbeiten daran durchgeführt. Es ist auch möglich, dass ich die Builds eines Tages parallelisieren könnte, aber im Moment bin ich mir nicht genau sicher, wie ich das machen würde. Derzeit ist das Herunterladen der Arduino IDE der zeitaufwändigste Schritt bei der Erstellung von Travis CI ... Paralleltests wirken sich kaum negativ aus, wenn jeder Job diesen Schritt ausführen muss.
quelle
Ich würde empfehlen, das arduino Eclipse-Plugin namens sloeber sloeber.io zu verwenden, dessen Projektleiter ich bin.
Es lässt sich in die Versionskontrolle integrieren und auf mehreren Plattformen aufbauen, da es mehrere Konfigurationen unterstützt.
Obwohl es noch nicht idiotensicher ist, habe ich mit Unit-Tests von Arduino-Code auf dem lokalen PC mit dem Google Test Framework dokumentiert und demonstriert.
Hier ist ein Link zu einem Blog mit einer Präsentation, wie Sie dies tun können. http://blog.baeyens.it/#post25
quelle