Grüßt euch! Ich suche nach einer Möglichkeit, ein tool zu entwickeln, das als self-contained binary (keine Laufzeitumgebung, kein Python-Interpreter etc.) unter Windows zum Flashen eines ESP devboards via USB benutzt werden kann. Der Anwender soll lediglich wissen, wie er ein USB-Kabel zu stecken hat und die Anwendung öffnen, vielleicht noch einen com-port auswählen. Dabei soll das Kompilieren des tools in einem Linux-basierten Ökosystem erfolgen, bzw. automatisiert in einer gitlab-ci pipeline. Dazu habe ich mal angefangen, mir rust anzuschauen un z.B. das hier gefunden https://github.com/esp-rs/espflash Da Rust für mich komplettes Neuland ist (von Windows habe ich auch keine Ahnung), wollte ich mich mal umhören, wie realistisch so was ist, bevor ich sehr viel Zeit damit verbrate und ob es vielleicht einen einfacheren Ansatz gibt (OTA kann ich nicht machen).
Sollte durchaus machbar sein. Ich würde mir aber dennoch eine Windowsumgebung fürs Testen besorgen. Eine VM sollte es tun.
Cross Compiling und statisch gelinkte Programme sind in der Sprache Go besonders einfach. https://go.dev/doc/ Mit dem folgenden Befehl compiliere ich meine Go Projekte auf jedem beliebigen Rechner: > CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go install -v -a -ldflags '-s' ./... go install ./... : Ist das Kommando, mit dem man ein komplettes Projektverzeichnis compiliert. Das ausführbare Binary befindet sich danach im Verzeichnis <home>/go/bin. GOOS=linux: legt das Betriebssstem fest GOARCH=amd64: legt die Hardware Architektur fest -v: Aktiviert mehr Ausgaben zum Fortschritt -a: Erzwingt, dass alle Quelltexte neu compiliert werden (keinen Cache verwenden) Standardmäßig hängen Go Programme nur von der Standard C Bibliothek ab. Mit den folgenden Parametern wird man auch diese Abhängigkeit los: CGO_ENABLED=0 -ldflags '-s' --- Um Serielle Ports anzusprechen brauchst du eine 3rd Party Bilbiothek. Ich bin bisher mit https://github.com/jacobsa/go-serial/serial gut zurecht gekommen.
Stefan F. schrieb: > Cross Compiling und statisch gelinkte Programme sind in der Sprache Go > besonders einfach. kann ich bestätigen, funktioniert auch wunderbar in der gitlab pipeline. Aber für Rust gibt es schon Projekte fürs esp-flashen. Bei go wüsste ich nicht.
Lara schrieb: > Bei go wüsste ich nicht. https://github.com/Fluepke/esptool Wenn man da die oben genannte go-serial Bibliothek einbaut, läuft es vielleicht auch unter Windows.
Stefan F. schrieb: > Lara schrieb: >> Bei go wüsste ich nicht. > > https://github.com/Fluepke/esptool > > Wenn man da die oben genannte go-serial Bibliothek einbaut, läuft es > vielleicht auch unter Windows. laut README leider nicht > It only works on Linux as of right now, because Microsoft(r) Windows(tm)(c) does not support termios.
Lara schrieb: > It only works on Linux as of right now, because Microsoft(r) > Windows(tm)(c) does not support termios. Deswegen sollst du ja die andere Bibliothek verwenden. By the way: das ist der korrigierte Link: https://github.com/jacobsa/go-serial "Currently this package works only on OS X, Linux and Windows." Was dir da allerdings vermutlich fehlt ist die Möglichkeit, die Handshake Leitungen im Stil der NodeMCU Module zu steuern. Wer einen Flash-Button (oder Schalter) hat, braucht das auch nicht.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.