News Espressif-News: Neuerungen zu Zephyr und Amazon AWS


von Tam H. (Firma: Tamoggemon Holding k.s.) (tamhanna)


Angehängte Dateien:

Lesenswert?

Im allmonatlichen Nachrichten-Roundup kündigt Espressif die Finalisierung der hauseigenen Verbindungsbibliothek für Amazon AWS an. Ausserdem betont das Unternehmen Erweiterungen im Bereich der Integration in das quelloffene Echtzeitbetriebssystem RTOS, das nun unter Anderem bessere Unterstützung für den Mehrkernbetrieb bietet.

Worum geht es hier?

Espressif’s ESP32-Serie kombiniert einen General Purpose-Mikrocontroller mit einem Radiotransmitter für – je nach Chip verschiedene – Funkstandards. Im Laufe der letzten Jahre arbeitet Espressif permanent an der Verbesserung des Softwareökosystems, um Entwicklern die Integration der Chips in Drittanbietersysteme wie AWS zu erleichtern.

AWS IOT-Konnektor nun final

Espressif bietet Nutzern von ESP-IDF mit esp-aws-iot seit einiger Zeit eine Bibliothek an, die sich um die Integration in Amazons AWS IOT Hub kümmert. Zur Erinnerung: es handelt sich dabei um eine Art MQTT-Broker auf Steroiden, der die Integration von IoT-Geräten in das AWS-Ökosystem erleichtert und sich nebenbei auch um Provisioning und Co kümmert.

(Bildquelle: Amazon, via https://docs.aws.amazon.com/iot/latest/developerguide/what-is-aws-iot.html)

Neu ist, dass die unter https://github.com/espressif/esp-aws-iot/ bereitstehende Bibliothek ab Sofort den finalen Status erreicht hat – Änderungen an den APIs sollten nun seltener und behutsamer ausfallen. Ausserdem enthält das SDK – wie in der Abbildung gezeigt – auch amazon-eigene Bibliotheken wie coreMqtt und coreJSON.

(Bildquelle: Espressif, via https://www.espressif.com/en/news/AWS_IoT_Ref_eg_ESP32-C3)

Zum Zeitpunkt der Drucklegung unterstützt Espressif IDF in den Versionen 4.3 und 4.4; der Gutteil der core-Bibliotheken ist modular aufgebaut und soll so auch abseits des Gesamt-SDKs nutzbar sein.

AWS IOT-Konnektor mit neuen Beispielen

Autoren von Programmierbeispielen sind in einer undankbaren Lage: der Detailgrad der Beispiele ist permanenter Streitpunkt. Im Rahmen der Finalisierung des AWS IOT-Konnektors rüstete Espressif im Bereich Code Samples nach, und bietet nun unter Anderem ein “produktionsreifes” MQTT-Brokerbeispiel an (siehe https://github.com/espressif/esp-aws-iot/tree/master/examples/mqtt/tls_mutual_auth). Es unterscheidet sich von “Quick and Dirty-Hacks” unter Anderem durch die umfangreiche Fehlerbehandlung, die verschiedene Problemfälle abdeckt. Wichtig ist, dass die Nutzung der AWS-Beispiele auf jeden Fall auch Konfigurationsmassnahmen im Backend voraussetzt. Weitere Informationen hierzu finden sich unter https://github.com/espressif/esp-aws-iot/blob/master/examples/README.md-

Erweiterung der Unterstützung für Zephyr

Die Linux Foundation leistet sich mit Zephyr seit einigen Jahren ein eigenes, komplett quelloffenes Echtzeitbetriebssystem – wichtig ist, dass Zephyr intern nicht unixoid aufgebaut ist. Sei dem wie es sei, unterstützt Espressif die Plattform seit einiger Zeit umfangreich. Neuerung Nummero eins sind Erweiterungen im Bereich der unterstützten Peripheriegeräte. Zum Zeitpunkt der Abfassung dieses Artikels präsentiert sich die Lage wie in der Abbildung gezeigt.

(Bildquelle: Espressif)

Im Hintergrund nimmt Espressif diverse Anpassungen und Erweiterungen des Backends vor. Erstens erfolgt eine Umstellung im Bereich der Ansteuerung der Pins – die unter https://github.com/zephyrproject-rtos/zephyr/issues/39740 im Detail beschriebene Umstellung auf pinctrl betrifft Nutzer des Systems nicht wirklich, dürfte aber zu geringerem Energieverbrauch führen. Der unter https://github.com/zephyrproject-rtos/zephyr/pull/44645 bereitstehende Patch “soc: xtensa: esp32: adds initial support to AMP for dual core ESP32” ist derweil von höherem Gehalt. In ihm rüstet Espressif Unterstützung für Mehrprozessorbetrieb in Zephyr nach:

1
This PR adds the initial infrastructure to build and load a separated image to be executed only in the ESP32 APP_CPU plus its reserved resources.
2
It is also provides the inter processor message device driver to communicate between the two CPUs.

Spezifischerweise plant Espressif dabei die folgenden vier Einsatzszenarien:

1
Network offloading: one core takes care of the load, while the other one is still dedicated to managing user applications. 
2
     Parallel Embedded Software: this allows for non-critical routines to be executed separately from critical routines. 
3
     Redundant processing: the same firmware can run in parallel on ESP32. 
4
     General Parallel Processing: this offers two MCUs in one package.

Zephyr: Unterstützung für Wifi-APIs des Echtzeitbetriebssystems

Zephyr bringt mit dem Wifi Manager einen eigenen Satz APIs für die Konfiguration von WLAN-Transmittern mit. Espressif unterstützt diese ab sofort direkt.

Zephyr für ESP32-S3: bitte warten

Zu guter Letzt erteilt Espressif all jenen, die auf baldige Unterstützung von Zephyr am ESP32-S3 hoffen, eine klare Abfuhr. Spezifischerweise spricht man von Problemen beim Power Management:

1
While we are already working hard to include ESP32-S3 here, it should be noted that the case of this SoC is pretty unique. ESP32-S3s dual-core capacity and Bluetooth make it quite different from ESP32-S2. Then, what makes ESP32-S3 different from ESP32 is the formers USB-OTG capability. It is also important to note that ESP32-S3 has a powerful CPU, so without a good power control it can drain batteries.

Dies ist allerdings nicht als absolute Absage gegen Zephyr zu werten. Langfristig ist Unterstützung des Betriebssystems geplant, wenn folgende Bedingungen erfüllt sind:

1
     In general, the development of ESP32-S3 would first need to fulfil the following three requirements before being included in the Zephyr project:
2
     multicore support, which is what we are trying to achieve with AMP (this is a merge request at present); 
3
     low-power modes, which we have already started working on; 
4
     support for USB-OTG, which is already scheduled for the near future. 
5
Until we fulfil the above-mentioned three requirements, developers wishing to target ESP32-S3 should practically stick to ESP32 or ESP32-S2, which are currently the best choices for running Zephyr.

: Bearbeitet durch NewsPoster
von Richard W. (richardw)


Lesenswert?

Jedes mal wenn ich mir diese Programmbeispiele so anschaue und sehe wie 
jeder Popelfunktionsaufruf auf alle möglichen Fehlersituationen getestet 
oder gar in Makros eingekleidet wird... dann bin ich froh dass es 
Alternativen zu C gibt ;-)

von Tam H. (Firma: Tamoggemon Holding k.s.) (tamhanna)


Lesenswert?

Richard W. schrieb:
> Jedes mal wenn ich mir diese Programmbeispiele so anschaue und sehe wie
> jeder Popelfunktionsaufruf auf alle möglichen Fehlersituationen getestet
> oder gar in Makros eingekleidet wird... dann bin ich froh dass es
> Alternativen zu C gibt ;-)

Hallo,
man muss zugeben, dass diese Beispiele extrem stark abgesichert sind. In 
praktischem Code muss man das nicht unbedingt so radikal handhaben.

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.