IDF Version Migration Issues (SoC Support)
Posted: Wed Feb 14, 2024 2:24 pm
I'm currently in the process of migrating my IDF tool-chain from version 4.3 to 5.1.2.
Generally, the migration guides and API guides online have been really helpful and the inclusion of additional header files, changing some syntax and adding requirements to CMakeLists.txt have done a lot of the legwork.
What I've had issues wrestling with at the moment have been related to power management SoC permissions. Namely, I mention parameters ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_DOMAIN_RTC_FAST_MEM and ESP_PD_DOMAIN_RTC_SLOW_MEM (from sleep.h) but they are not being recognised despite me including the header file in the script, and mentioning the component name (esp_hw_support) as a requirement in CMakeLists.txt.
I realised that the reason for the this is because in earlier IDF versions such as 4.4, the parameters are mentioned in a typdef enum (in sleep.h) [1]:
However in the updated 5.1 toolchain they are wrapped in #if statements about soc permissions in sleep.h [2]:
I have looked into idf.py menuconfig and have enabled "Support for power management" but that has not stopped my builds from failing unfortunately.
If anyone has had any similar issues when migrating IDF versions or if someone knows about setting SOC support I would appreciate any help, thanks and I hope you're all well!
Links
[1] https://github.com/espressif/esp-idf/bl ... sp_sleep.h
[2] https://github.com/espressif/esp-idf/bl ... sp_sleep.h
Additional Info
IDF: Visual Studio 1.86.1
OS: Ubuntu 22.04
Generally, the migration guides and API guides online have been really helpful and the inclusion of additional header files, changing some syntax and adding requirements to CMakeLists.txt have done a lot of the legwork.
What I've had issues wrestling with at the moment have been related to power management SoC permissions. Namely, I mention parameters ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_DOMAIN_RTC_FAST_MEM and ESP_PD_DOMAIN_RTC_SLOW_MEM (from sleep.h) but they are not being recognised despite me including the header file in the script, and mentioning the component name (esp_hw_support) as a requirement in CMakeLists.txt.
I realised that the reason for the this is because in earlier IDF versions such as 4.4, the parameters are mentioned in a typdef enum (in sleep.h) [1]:
- typedef enum {
- ESP_PD_DOMAIN_RTC_PERIPH, //!< RTC IO, sensors and ULP co-processor
- ESP_PD_DOMAIN_RTC_SLOW_MEM, //!< RTC slow memory
- ESP_PD_DOMAIN_RTC_FAST_MEM, //!< RTC fast memory
- ESP_PD_DOMAIN_XTAL, //!< XTAL oscillator
- #if SOC_PM_SUPPORT_CPU_PD
- ESP_PD_DOMAIN_CPU, //!< CPU core
- #endif
- ESP_PD_DOMAIN_RTC8M, //!< Internal 8M oscillator
- ESP_PD_DOMAIN_VDDSDIO, //!< VDD_SDIO
- ESP_PD_DOMAIN_MAX //!< Number of domains
- } esp_sleep_pd_domain_t;
- typedef enum {
- #if SOC_PM_SUPPORT_RTC_PERIPH_PD
- ESP_PD_DOMAIN_RTC_PERIPH, //!< RTC IO, sensors and ULP co-processor
- #endif
- #if SOC_PM_SUPPORT_RTC_SLOW_MEM_PD
- ESP_PD_DOMAIN_RTC_SLOW_MEM, //!< RTC slow memory
- #endif
- #if SOC_PM_SUPPORT_RTC_FAST_MEM_PD
- ESP_PD_DOMAIN_RTC_FAST_MEM, //!< RTC fast memory
- #endif
If anyone has had any similar issues when migrating IDF versions or if someone knows about setting SOC support I would appreciate any help, thanks and I hope you're all well!
Links
[1] https://github.com/espressif/esp-idf/bl ... sp_sleep.h
[2] https://github.com/espressif/esp-idf/bl ... sp_sleep.h
Additional Info
IDF: Visual Studio 1.86.1
OS: Ubuntu 22.04