Open guo-max opened 1 year ago
@guo-max Hello, OTA update process is require FLASH write/change, while ADC(and others) Programs is also store in FLASH by default, So it is not allowed to happen in same time.
When OTA start, chip will disable Cache and interrupts, then it can be safe for FLASH option, so your ADC stop,
If you really need it, you may find is there any config option in menuconfig
to place ADC programs in internal ram(IRAM), so that is can exec without FLASH access.
When esp_ota_begin()
completes, it would be better if the ADC reader continued working OK like before? The component does not recover gracefully from the timeout error after the OTA function call has finished. Is there a technical reason why it does not recover?
Answers checklist.
IDF version.
ESP-IDF v5.2-dev-3775-gb4268c874a
Espressif SoC revision.
ESP32S3
Operating System used.
Windows
How did you build your project?
Command line with idf.py
If you are using Windows, please specify command line type.
CMD
Development Kit.
LilyGo T-DISPLAY-S3
Power Supply used.
USB
What is the expected behavior?
ADC continuous read should work after call
esp_ota_begin()
. Callingesp_ota_begin()
will erase the ota partition, which may take a while and block the adc reading task. But the adc reading should work afteresp_ota_begin()
finished.What is the actual behavior?
ADC continuous read stop working after call
esp_ota_begin()
Steps to reproduce.
esp-idf\examples\peripherals\adc\continuous_read\
esp_ota_begin()
after about 1s.Debug Logs.
More Information.
I think any task/function that may block other tasks could trigger this bug. Here I use
esp_ota_begin()
to demonstrate it. I think this bug is not related toOTA
at all. I have experience thatwriting large file to file system (esp_littlefs)
could trigger this bug.