diff --git a/cores/esp8266/Esp.cpp b/cores/esp8266/Esp.cpp index f4fe3a9a8..51bdfe8e1 100644 --- a/cores/esp8266/Esp.cpp +++ b/cores/esp8266/Esp.cpp @@ -984,15 +984,20 @@ void EspClass::enableVM() void EspClass::setExternalHeap() { #ifdef UMM_HEAP_EXTERNAL - if (vmEnabled) - umm_push_heap(UMM_HEAP_EXTERNAL); + if (vmEnabled) { + if (!umm_push_heap(UMM_HEAP_EXTERNAL)) { + panic(); + } + } #endif } void EspClass::setIramHeap() { #ifdef UMM_HEAP_IRAM - umm_push_heap(UMM_HEAP_IRAM); + if (!umm_push_heap(UMM_HEAP_IRAM)) { + panic(); + } #endif } diff --git a/cores/esp8266/Esp.h b/cores/esp8266/Esp.h index bc7fcb1e0..6d990e876 100644 --- a/cores/esp8266/Esp.h +++ b/cores/esp8266/Esp.h @@ -215,10 +215,41 @@ class EspClass { #else uint32_t getCycleCount(); #endif // !defined(CORE_MOCK) + /** + * @brief Installs VM exception handler to support External memory (Experimental) + * + * @param none + * @return none + */ void enableVM(); + /** + * @brief Push current Heap selection and set Heap selection to DRAM. + * + * @param none + * @return none + */ void setDramHeap(); + /** + * @brief Push current Heap selection and set Heap selection to IRAM. + * + * @param none + * @return none + */ void setIramHeap(); + /** + * @brief Push current Heap selection and set Heap selection to External. (Experimental) + * + * @param none + * @return none + */ void setExternalHeap(); + /** + * @brief Restores Heap selection back to value present when + * setDramHeap, setIramHeap, or setExternalHeap was called. + * + * @param none + * @return none + */ void resetHeap(); private: #ifdef UMM_HEAP_EXTERNAL