From da62ebc152c3a7a7699e84f9b007fc9ff0f80df0 Mon Sep 17 00:00:00 2001 From: Tomasz Scislowicz Date: Wed, 19 Sep 2018 22:00:16 +0200 Subject: [PATCH 1/2] getFreeSysStack implementation --- cores/esp8266/Esp.cpp | 5 +++++ cores/esp8266/Esp.h | 4 ++++ 2 files changed, 9 insertions(+) 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..829d6b720c 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(); From 434dd97a28990a09ec5fffda98119e0ae3298dfe Mon Sep 17 00:00:00 2001 From: Tomasz Scislowicz Date: Wed, 19 Sep 2018 22:09:59 +0200 Subject: [PATCH 2/2] space instead of tabs --- cores/esp8266/Esp.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cores/esp8266/Esp.h b/cores/esp8266/Esp.h index 829d6b720c..b05f7817f8 100644 --- a/cores/esp8266/Esp.h +++ b/cores/esp8266/Esp.h @@ -114,7 +114,7 @@ class EspClass { void getHeapStats(uint32_t* free = nullptr, uint16_t* max = nullptr, uint8_t* frag = nullptr); uint32_t getFreeContStack(); - uint32_t getFreeSysStack(); + uint32_t getFreeSysStack(); const char * getSdkVersion(); String getCoreVersion();