diff --git a/cores/esp8266/Esp.cpp b/cores/esp8266/Esp.cpp index 1fd8b2c52d..554e4f8a45 100644 --- a/cores/esp8266/Esp.cpp +++ b/cores/esp8266/Esp.cpp @@ -183,6 +183,11 @@ uint32_t EspClass::getFreeContStack() return cont_get_free_stack(g_pcont); } +uint32_t EspClass::getFreeSysStack() +{ + register volatile uint32_t stackAddress asm("a1"); + return stackAddress-SYSTEM_STACK_END_ADDRESS; +} uint32_t EspClass::getChipId(void) { return system_get_chip_id(); diff --git a/cores/esp8266/Esp.h b/cores/esp8266/Esp.h index d058f2225c..b05f7817f8 100644 --- a/cores/esp8266/Esp.h +++ b/cores/esp8266/Esp.h @@ -65,6 +65,9 @@ enum RFMode { #define WAKE_NO_RFCAL RF_NO_CAL #define WAKE_RF_DISABLED RF_DISABLED +// for getFreeSysStack +#define SYSTEM_STACK_END_ADDRESS 0x3FFFC000 + enum ADCMode { ADC_TOUT = 33, ADC_TOUT_3V3 = 33, @@ -111,6 +114,7 @@ class EspClass { void getHeapStats(uint32_t* free = nullptr, uint16_t* max = nullptr, uint8_t* frag = nullptr); uint32_t getFreeContStack(); + uint32_t getFreeSysStack(); const char * getSdkVersion(); String getCoreVersion();