Hochladen ohne erneute Kompilierung

Hi,

gibts eigentlich eine Möglichkeit den Upload ohne neue Generierung zu starten?

Hintergrund. Bei größeren Programmen dauert das Übersetzen bei mir schon mal gute 20sek.
Wenn ich es dann Hochladen will, übersetzt er ja nochmal. Obwohl ich gar nichts geändert habe.

Dachte zwar, dass das in Rel 1.8x von Arduino geändert wurde?

hk007:
Hi,

gibts eigentlich eine Möglichkeit den Upload ohne neue Generierung zu starten?

Hintergrund. Bei größeren Programmen dauert das Übersetzen bei mir schon mal gute 20sek.
Wenn ich es dann Hochladen will, übersetzt er ja nochmal. Obwohl ich gar nichts geändert habe.

Dachte zwar, dass das in Rel 1.8x von Arduino geändert wurde?

Die IDE macht, was die IDE eben so macht. Zum Beispiel schaut sie nach, ob irgendeine Datei, die explizit oder implizit in Deinem Projekt enthalten ist, in der Quellcodeversion neuer ist als in der kompilierten Version., d.h. wenn Du auch nur einen Aufruf von digitalWrite() in Deinem Code drin hast, dann schaut die IDE womöglich bei hunderten von Dateien der Arduino Core-Libraries das Dateidatum nach, das Datum der .h Datei, das Datum der .cpp Datei und das Datum der vorkompilierten Datei, um dann zu entscheiden, was alles neu kompiliert werden muss oder nicht. Zusammengelinkt zu einer .hex Datei wird in jedem Falle neu.

Wenn Du nur "ein fertiges Programm hochladen" möchtest, dann hast Du diese Möglichkeit:

Besorge Dir ein reines Uploadprogramm für.hex-Dateien, also für Windows- beispielsweise das XLOADER Programm und informiere Dich, wo die fertige .hex Datei auf Deiner Festplatte liegt, dann kannst Du dieselbe fertig kompilierte und zusammengelinkte Datei mit dem XLOADER Programm beliebig oft (auf dasselbe oder andere Arduino-Boards hochladen, zum Beispiel für eine Kleinserie von Arduino-Boards, die alle dasselbe Programm erhalten sollen. Ohne Neukompilieren und ohne die IDE überhaupt nur starten zu müssen.

jurs:
Die IDE macht, was die IDE eben so macht.
....

OK danke für die Hintergrundinfo.
Da geht die IDE halt den sicheren Weg. Auch irgendwie verständlich.
Das mit dem externen Loader ist nicht die Lösung. Möchte schon in der IDE bleiben. Auch wegen OTA-Upload :wink:
Muss ich mich halt damit abfinden.
Versteh nur nicht, dass das Ganze so langsam ist.
OK: Das Projekt liegt auf dem Server, aber zum Linken tummelt er sich eh nur auf C:\USERS......
Und da werkelt ein I7 mit ner SSD....
Ein bisschen was bringt es den Virenscanner abzuschalten.

hi,

wenn Du in der IDE (Einstellungen) auf ausführliche anzeige schaltest, zeigt sie Dir, wie sie hochlädt. bei mir zb. mit:

C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega2560 -cwiring -PCOM8 -b115200 -D -Uflash:w:C:\Users\EISEBR~1\AppData\Local\Temp\build8539082808418163195.tmp/sketch_apr15a.cpp.hex:i

gruß stefan

Genau. Diese Zeile kopierst du und rufst sie in einem cli Fenster auf.
Die Zeile blebt innerhalb der Session immer gleich. Mit Cursor hoch kannst du sie wieder aufrufen. Das mach ich oft, hauptsächlichmit dem Esp8266, weil da oft bei hohen Geschwindigkeiten der Upload fehl schlägt.

Ich glaube, das ist genau das was du willst

ElEspanol:
Ich glaube, das ist genau das was du willst

Da hast du richtig geraten.

BTW: Sieht so aus, als ob beim ESP ein anderes Programm zum Hochladen verwendet wird.

python.exe C:\Users\hk007\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.3.0/tools/espota.py -i 192.168.1.99 -p 80 --auth= -f C:\Users\hk007\AppData\Local\Temp\arduino_build_120358/Testsketch.ino.bin

Auf alle Fälle funzt es.
Wenn es dafür noch nen Button in der IDE geben würde... :sunglasses:

Die Build-Ziffernfolge "...arduino_build_120358...":
Wie wird die generiert?
Hab gesehen, dass jeder Sketch eine eigene Ziffernfolge beim Generieren bekommt.
Und wenn ich die IDE mit demselben Sketch neu starte, dann ist die wieder anders :frowning:

hi,

Wenn es dafür noch nen Button in der IDE geben würde

naja, Du kannst es in eine batch-datei schreiben.

gruß stefan

Die IDE hat ein Plugin Interface.
Du könntest also eine eigene Erweiterung schreiben.

Auch, arbeitet die IDE, auf Wunsch, im Batchbetrieb.
Hat also ein Kommandozeileninterface.
Du kannst das Massenhochladen/Kompilieren automatisiert nachts, oder im Hintergrund, laufen lassen.

Alles schon fest eingebaut.
Nutzt nur kaum einer.