The RMT driver module `esp_idf_rmt` uses GDMA on ESP32-S3, which in turn requires the activation and deactivation of flash encryption. Therefore, when the RMT driver module `esp_idf_rmt` is used, the function `gdma_disconnect` is used, which in turn requires the function `esp_flash_encryption_enabled`. However, if the NVS flash module `esp_idf_nvs_flash` is also used for some reason, e.g. because WiFi or BLE is used, the function `esp_flash_encryption_enabled` is already compiled in the module `esp_idf_nvs_flash` and must not be compiled again in the module `esp_idf_rmt`.
The esptools/export.sh script has to be sourced, otherwise
the exported variables are not persistent in the environment,
rendering the script useless. The commit adds a check to the
script that it runs in the correct environment and enhances the
documentation to make it clearer that the "source" prefix command
is important.
The PR also introduces a version check for the PATH variable
to notify the user if an old version is present.
The `esptool.py` program is no longer installed as a RIOT package, but as a pure Python package, as published by Espressif. The installation takes place in a virtual Python environment in the `dist/tools/esptools/venv` directory. Therfore, there is no need to pull the GitHub repository and thus not necessary to install it as a RIOT package.
It makes no sense to have a separate `esp_ble_$(CPU_FAM)` feature for each ESP32x variant. The ESP32x has either a BLE controller or not. Therefore, a single common `esp_ble` feature is sufficient.
If the ADC SAR is used, the Bootloader RNG must not be enabled before the random numbers are actually required. The reason is that the Bootloader RNG uses the noise of the ADC SAR reference voltage as a non-RF entropy source. The calibration of the ADC SAR does not work correctly in this case. Therefore, the Bootloader RNG is only enabled if random numbers are really required.
In order to avoid further unreadability of the source code due to conditional compilations when integrating further variants of ESP32x SoCs, the UART driver is ported to the low-level UART API of the ESP-IDF.