cross-compiled esp flash tool

Gast #7322585
Lesenswert?
• ▲
▼

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).

Gast #7323264
Lesenswert?
• ▲
▼

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.

Gast #7323300
Lesenswert?
• ▲
▼

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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.