Espressif: ESP_IDF in Version 5.1 bringt Unterstützung für H2 und C6

Wenige Monate nach der Auslieferung der Version 5.0 von ESP_IDF legt Espressif eine Nachfolgeversion vor. Am wichtigsten ist die Unterstützung für die neuen Chips H2 und C6; außerdem gibt es Fehlerbehebungen und Änderungen, die Anpassungen an vorhandenem Applikationscode erforderlich machen.

Worum geht es hier?

Wer die maximale Leistung seines ESP32 ausnutzen möchte, setzt auf die native Entwicklungsumgebung ESP_IDF. Systeme wie der Arduino basieren intern übrigens ebenfalls auf IDF – die als Arduino Core bezeichnete Arbeitsumgebung ist eine Softwareschicht, die über dem eigentlichen IDF-Framework liegt und die Ausführung der Sketches ermöglicht.

Unterstützung für C6 und H2

Die für den Smart Home-Bereich und Protokolle wie Matter vorgesehenen Chip-Varianten ESP32-C6 und ESP32-H2 waren bisher nur teilweise unterstützt – die neue Version erweitert die Unterstützung.
Weitere Informationen zu den Unterstützungsgraden der Peripheriegeräte finden sich für den C6 unter https://github.com/espressif/esp-idf/issues/10423, während der H2 unter https://github.com/espressif/esp-idf/issues/11038 abgehandelt wird. Zu beachten ist, dass Engineering Sample-Varianten der H2-Chips in 5.1 nicht mehr unterstützt werden!

Zu beachten ist außerdem, dass der ESP32-C6 bei Nutzung dieser Version mit den folgenden Problemen zu kämpfen hat:

1
In ESP32C6, there is a small chance of core dump when it sends advertisement and scanning

2
In ESP32C6, DUT might crash or disconnect with AP when light sleep is enabled

3
On ESP32C6, sometimes chip cant wakeup under low temperature, RTC memory lost under high temperature, unexpected power on reset when GPIO wakeup enabled in Deepsleep. Cant wakeup properly under high temperature from Lightsleep

Zudem gilt, dass die FPU in manchen Fällen Probleme bekommt:

1
When using the FPU from multiple tasks on the same core there is a change that the FPU state will be corrupted, causing invalid results. Issue affects ESP32 and ESP32S3 (#11690)

Liste der Breaking Changes

Espressif spricht in der unter https://github.com/espressif/esp-idf/releases/tag/v5.1 bereitstehenden Ankündigung des Releases – wie in der Abbildung gezeigt – davon, dass die neue Version von ESP_IDF „im Allgemeinen“ mit schon vorhandenem Code kompatibel sein sollte.

Bildquelle: Espressif.

In der Praxis gibt es allerdings einige Probleme, die folgendermaßen aufgelistet sind:

1
bootloader_support: The API bootloader_common_get_partition_description has now been made private, the alternative function esp_ota_get_partition_description should be used (a2f028a)

2
SDMMC/SDSPI: SD cards accept custom frequencies, not only fixed values 20 MHz or 40 MHz. See Storage migration guide for details (7d28aba)

3
ESSL: The esp_serial_slave_link is removed from the espidf components. Now user should use the component manager to pull it in. See example examples/peripherals/sdio/host/main/idf_component.yml for more details (03d8059)

4
Sleep: esp_light_sleep_start now returns two error num when sleep fails: ESP_ERR_SLEEP_REJECT and ESP_ERR_SLEEP_TOO_SHORT_SLEEP_DURATION (f191b2f)

5
Storage: All the partition handling APIs and datatype definitions have been moved from the spi_flash to the new component esp_partition. See Storage 5.x migration guide for more details (b14116f)

6
esp_chip_info() returns the chip version in the format = 100 * major eFuse version + minor eFuse version. (c546de8)

7
WiFi: Modified maximum SoftAP connection number and ESPNOW encrypted connection number. (d89a512)

8
WiFi: Changed ESPNOW receive callback function type (esp_now_recv_cb_t). This change is made to fix potential security issues mentioned in #8574. (8223a59)

9
ADC: No longer support ADC2 continuous (DMA) mode on ESP32S3 and ESP32C3, search for errata on Espressif website to know more details. Users can force use it by enabling ADC_CONTINUOUS_FORCE_USE_ADC2_ON_C3_S3 (6569be4)

10
ADC: No longer support ADC2 oneshot mode on ESP32C3, search for errata on Espressif website to know more details. Users can force use it by enabling ADC_ONESHOT_FORCE_USE_ADC2_ON_C3 (6569be4)

11
I2S STD: Enabled left_align in the default slot configuration. For the default and most used case, data_bit_width equals to slot_bit_width, which means left_align does not matter in this case

12
For the case that data_bit_width is shorter than slot_bit_width, enabling left_align is a quite typical usage for almost all the codecs. (190e9e7)

13
NimBLE: Updated return type for nimble_port_init / nimble_port_deinit functions. (9916eb6)

14
IDF: All dynamic memory allocated by FreeRTOS now defaults to internal memory. To allocate FreeRTOS objects in special memory (e.g., external memory), please use one of the CreateWithCaps() functions in #include “freertos/idf_additions.h” (daf4150)

Was ist neu?

Neben der „Erweiterung“ der unterstützten Chips führte Espressif Verbesserungen im Bereich der Funkmodule bzw. der Coexistenz verschiedener Funkprotokolle durch:

1
Bluetooth: Bluetooth support use main XTAL in light sleep mode on ESP32C3/ESP32S3 (33f1747)

2
Bluetooth: Supported Bluetooth to release .bss and .data segment memory on ESP32C3 and ESP32S3 (d530630)

3
Bluetooth: Supported Bluetooth to release .bss and .data segment memory on ESP32C2 (8ea3865)

4
NimBLE: Added stack support for LE Power Control (8facf6f)

5
NimBLE: Migrated to nimble1.5 (07d8862)

6
WiFi: Added WPS registrar support in SoftAP mode. (f27a95c)

7
WiFi: Added support for SAEPK (Public Key) authentication for station. (e44c7fb)

8
WiFi: Added support of WPA3 Personal (SAE) in SoftAP. (146a5c4)

9
WiFi: Added WiFi Aware (NAN) support(currently only ESP32/ESP32S2 support)(d5f53fb)

10
WiFi: Added support for WPA2/WPA3, mixed mode for SoftAP. (146a5c4)

11
OpenThread: Added support of Ethernet interface for Openthread br (6ca5db1)

12
OpenThraed: Supported CSL feature (bb9200a)

13
OpenThread: Supported Link Metrics feature (bb9200a)

14
OpenThread: Added SPI support in Radio CoProcessor (c0097c1)

15
Coexistence: Added external coexistence(leader mode) support on ESP32S3 and ESP32C2 (895d97d)

16
Coexistence: Added external coexistence(follower mode) support on ESP32C2 (895d97d)

17
Coexistence: Added force RX mode in external coexistence on ESP32C2 (895d97d)

Im Bereich der neu hinzugekommenen Funktionen finden sich im Allgemeinen Detailverbesserungen; die auf RISC-V-Technologie basierenden ULP-Zellen von S2 und S3 sind nun zur Kommunikation per I2C befähigt.
Espressif behob außerdem die folgenden bekannten Fehler:

1
Flash MMAP: Fixed issue that only only limited vaddr ranges can be mapped to instructions/rodata on Flash on ESP32S2, C3, S3, C2 (#10373, 1c69929)

2
MSPI: Fixed timing tuning issue for 80MHz Octal PSRAM on ESP32S3, which would lead to system stall at early stage (34e5a80)

3
MSPI: Fixed timing turning issue on high frequency lead to crash when entering sleep on ESP32S3 (3b62bf5)

4
Fixed POWER ON reset when using RTC IO as input in deepsleep on ESP32S2/ESP32C3/ESP32C2 (cfcb573)

5
Fixed RTC memory lost in high temperature in deepsleep on ESP32S2/ESP32C3 (cfcb573)

6
Support 8MD256 as RTC slow clock work properly ESP32S2/ESP32C3/ESP32C2/ESP32 (cfcb573)

7
Fixed dangerous power parameters in sleep modes on ESP32S2 (cfcb573)

8
PHY: Fix the iPhone disconnects immediately after connecting when BLE and wifi coexist on ESP32C3 and ESP32S3 (e8dba71)

Ausblick und Mehr

Espressif bietet unter der URL https://docs.espressif.com/projects/esp-idf/en/latest/esp32/migration-guides/release-5.x/5.1/index.html umfangreiche Dokumentation an, die auf die Änderungen und Neuerungen eingeht. Der Changelog unter der URL https://github.com/espressif/esp-idf/releases/tag/v5.1 ist ebenfalls interessant, weil er „Verweise“ auf die zu den jeweiligen Änderungen gehörenden Diskussionen anbietet.
Zu guter letzt sei noch darauf hingewiesen, dass Espressif – naturgemäß – schon an der Nachfolgeversion 5.2 arbeitet. Weitere Informationen hierzu werden unter der URL https://docs.espressif.com/projects/esp-idf/en/latest/esp32/migration-guides/release-5.x/5.2/index.html zur Verfügung gestellt – zum Zeitpunkt der Drucklegung gibt es noch nur den folgenden Breaking Change:

1
UART

2
UART_FIFO_LEN is deprecated. Please use UART_HW_FIFO_LEN instead.

Zuerst erschienen bei Mikrocontroller.net News

Quelle: Read More