Vereinfachung Firmware-Handling

Man hat kürzlich im dev-Branch wieder gesehen, dass das Bauen der Firmware mitunter nicht so einfach ist. Es steht schon länger auf meiner Agenda, aber ich würde das gerne mal angehen, dass automatische FWs gebaut werden. So dass eben nicht mehr (so ziemlich) jeder User bei sich Platformio benötigt. Im ersten Schritt vielleicht für mini4L und Complete Standard-Profile (ohne weitere Anpassungen) bauen für die Fälle RC522 und PN5180.

Wenn bei mir Platinen bestellt werden, dann flashe ich dort PN5180-Support drauf. Tatsächlich verwendet das die Mehrheit, aber ich stelle mir das so vor, dass auch die RC522-User sich einfach die FW runterladen können von Github und dann per OTA flashen. Es gibt zwar weiterhin zahlreiche Dinge, für die man selbst kompilieren muss, aber viele Optionen sind inzwischen ja auch über das Webinterface parametrierbar.

Ich habe mir mal das Actions-File von Tasmota angeschaut und wenn ich das richtig sehe, könnte man verschiedene Varianten einfach bauen, indem man vorher auf die settings.h z.B. mittels SED Anpassungen macht und dann entsprechend so kompiliert.

Idee wäre, dass man vielleicht einen Ordner „firmware/{HAL}/firmware.bin“ im Repository hat, wo jedes Mal, wenn ein Commit gemacht wird, die aktuelle FW hinkopiert wird.

@JHB hatte in der Richtung mal einen PR angelegt, aber weitere HALs möchte ich eigentlich nicht anlegen. Ich denke über die o.g. sed-Modifkationen könnte man das elegent on-the-fly erledigen.

Meinungen dazu?

4 „Gefällt mir“

würde ich gut finden, macht ja “nur” das was der Mensch von Hand auch machen würde…

So, ich hab da mal ein bisschen experimentiert.
Bei jedem Commit werden jetzt nicht nur die Firmwares gebaut, sondern sie werden auch quasi archiviert (vorher wurden sie verworfen).

  1. Zu GitHub-Actions gehen: Workflow runs · biologist79/ESPuino · GitHub. Dort findet man nun alle Builds der letzten Zeit:

Das bisherige „Build all boards“ habe ich umbenannt zu „Build firmwares for all boards and RFID-readers“

  1. Auf „Build firmwares for all boards and RFID-readers“ klicken und dabei rechts den gewünschten Branch beachten. Bisher gibt’s das nur für den dev-Branch.

  2. Es öffnet sich nun der jeweilige Build und unten in den „Artifacts“ findet man dann die Firmwares:

Könnte man jetzt z.B noch erweitern auf Englisch als Sprache, dann wären wir aber schon bei 16 Builds.

Überlege noch, ob man vielleicht einen Ordner „firmwares“ im Repository anlegt und dort das Ganze kurz beschreibt und verlinkt. Aber vielleicht hat ja auch jmd. ne bessere Idee.

Meinungen? Anregungen?

PS: Die Arbeit, den Port-Expander umzustellen, habe ich mir jetzt nicht gemacht, da das ja inzwischen implizit geschieht.

oder wir bei anderen Projekten daraus “Releases” machen, sind dann alles “beta” Release ist aber egal…

Das Problem ist so ein bisschen, dass man diese Releases nicht branchweise trennen kann. D.h. der dev-Branch würde dann die Releases im master überlagern, was mir ehrlich gesagt nicht so gut gefällt.

Idee:
a) Die Firmwares lasse ich nach dem Kompilieren per FTP auf meinen Server pushen, so dass ich dort einen einheitlichen Link habe. Das würde ich dann nach firmware-master-latest und firmware-dev-latest (irgendwo so von der Benamung) trennen.
b) Wer eine ganz spezielle FW-Version aus einem älteren Run braucht, der holt sich das halt als Artifact aus den GitHub Actions.

Alternativ könnte ich zu (a) noch ein Directory Listing à la Tasmota aktivieren, aber vermutlich braucht’s das gar nicht, wenn man das einmal statisch verlinkt aus dem Repository heraus.

1 „Gefällt mir“

Die Idee finde ich super. Kämpfe seit 2 Stunden mit Notebook und PC an 2.4. Am PC stirbt ein fork process unexpected, am Laptop wird etwas in package.json nicht gefunden….

Der Download Articat button fehlt jedoch bei mir.

Oh, das war mir ehrlich gesagt nicht bewusst, dass nicht jeder die Files runterladen kann. Kümmere mich die Tage drum. Hab gestern schon mit ftps experimentiert, aber irgendwie lief das mit lftp nicht so, wie ich das gerne hätte. Ggf mache ich auch ein zweites Github-Repository mit ESPuino-Firmwares.

Schreib mir mal per PN, welches Binary du brauchst. Kann ich dir auch schicken.

Habe eben nochmal mit einem anderen PC und Git User geschaut, auch da fehlt der Download Button.

Firmware compilen ging natürlich just in diesem Moment ^^. Git zum dritten mal neu installieren scheint geholfen zu haben….
Danke auf jeden Fall für das Angebot und die tolle Arbeit :slight_smile:

1 „Gefällt mir“