Forum: Compiler & IDEs ESP32 mit esp-idf unter platform.io mit langer 'Denkpause'


von Lutz S. (lutzs)


Lesenswert?

Hallo,

habe hier einen ESP32 Pico und gestern platform.io installiert (damit 
also noch wenig Erfahrungen).

Wenn ich in platform.io ein kleines Testprojekt mit dem 
Arduino-Framework anlege und dann im weiteren Verlauf nur noch kleine 
Änderungen in main mache wird ja nur noch diese Datei neu compiliert und 
zum ESP übertragen - alles läuft dabei flüssig ab.

Bei einem kleinen Testprojekt in platform.io mit dem esp-idf macht er in 
gleicher Konstellation eine Denkpause von ca. 20 Sekunden, und zwar 
immer genau zwischen compilieren (der einen Datei) und linken. Die 
Prozessorlast geht dabei auf 2 von 4 Kernen hoch und es passiert ca. 20 
Sekunden nichts sichtbares. Dann geht es normal flüssig weiter.

Hat jemand einen Tip, wie man das verbessern könnte?

: Bearbeitet durch User
von Jim M. (turboj)


Lesenswert?

Klingt nach LTO. Dabei wird im Linker Schritt das anze Gerassel nochmals 
compiliert, und das dauert dann halt.

Man besorge sich eine kräftigere CPU oder schalte LTO ab.

Ansonsten: Schau halt mal im Taskmanager nach wer die CPU Zeit schluckt.

: Bearbeitet durch User
von Lutz S. (lutzs)


Lesenswert?

Guter Tip.

Der Taskmanager sagt, dass Python die CPU in der Zeit auslastet. Darüber 
erfolgt die Steuerung der ganzen Abfolge, der Linker und Compiler wären 
dann aber eigene Programme, die im Taskmanager auftauchen müssten?

Wenn ich einen kompletten Build provoziere ist cc1.exe vorn, aber Python 
auch noch fast unverändert dabei.

: Bearbeitet durch User
von wurster (Gast)


Lesenswert?

Nimm dir einen entsprechendes Process Monitor und schau dir halt an, 
welches Python Script das ausgeführt wird.

Entweder wird es LTO oder das Dependency Management sein.

von Joerg W. (joergwolfram)


Lesenswert?

Beim IDF wird meines Wissens nach die gesamte Bibliothek ins 
Build-Verzeichnis kompiliert. Und das passiert auch jedes Mal, wenn man 
vor dem "make" ein "make clean" macht, da letzteres die ganzen 
vorcompilierten Objektdateien und Bibliotheken aus dem Build-Verzeichnis 
löscht.
Vielleicht macht platform.io vorher ein "make clean" und löst so einen 
Rebuild der Bibliothek aus.

Jörg

von Lutz S. (lutzs)


Lesenswert?

Wenn ich in platform.io unten den Button 'clean' betätige wird alles 
gelöscht und beim nächsten Build neu compiliert. Das dauert natürlich 
seine Zeit, aber dabei sieht man die Dateien alle durchlaufen die 
compiliert werden.
In dem geschilderten Fall ist das anders, da passiert nach dem 
compilieren von main scheinbar nichts mehr und trotzdem hängt es dort.

von Peacounter (Gast)


Lesenswert?

Dann sieh dir mal in dieser "Pause" die Internetverbindung an. 
platform.io sendet alles mögliche "nach Hause", in diesem Fall nach 
Github.

von Eric B. (beric)


Lesenswert?

Lutz S. schrieb:
> enn ich [...]im weiteren Verlauf nur noch kleine
> Änderungen in main mache wird ja nur noch diese Datei neu compiliert

Ja

> und zum ESP übertragen

Nein. Die ganze C-Datei, in der deine main-Funktion enthalten ist, nicht 
nur die main-Funktion, wird neu kompiliert. Danach wird die neu 
kompilierte Datei mit allen Bibliotheken zusammen gelinkt und das ganze 
dann wird übertragen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.